Archive for the 'Allgemein' Category

Tech-Blogposts

I currently stopped writing here, but you may find some (mainly Ruby-related) posts in the metaminded blog.

org.symcomp.java version 1.4 released

We just released a new version of the org.symcomp.java libraries for handling OpenMath and providing SCSCP services. It contains a lot of bugfixes.
For those who love to live on the bleeding edge, we now also have a git repository for the OpenMath part.

The WUPSI

Some days ago, we finally released WUPSI 1.3, the first public release of this Universal Popcorn SCSCP Interface.

Now, I’m busy coding a web interface based on Cappuccino. If you haven’t heard of Cappuccino, I highly suggest having a look at this video. It’s a really impressive piece of software!

News from the SCIEnce

I want to give a quick survey on the/my SCIEnce activities in the last time

Doping-Fall in der Mathematik

Kassel, 20.02.2008 In einem bisher einzigartigen Fall gelang der Staatsanwaltschaft Kassel in den frühen Morgenstunden des 19.02.2008 ein Schlag gegen die Doping-Mafia in Nordhessen. Bei dem bisher unauffälligen Mathematiker Peter H. wurden große Mengen leistungsfördernder Substanzen sichergestellt. Ein Polizeisprecher vermutet, dass es sich bei dem Fall nur um die Spitze des Eisbergs handelt: “Doping wurde in der Mathematik bisher stets als Kavaliersdelikt betrachtet.” Ob Herrn H. nun nachträglich auch sein Diplom aberkannt werde, sei derzeit noch nicht abzusehen, aber “für seine Doktorarbeit sehen wir schwarz”.
Die Deutsche Mathematiker-Vereinigung hat bereits eine Zwei-Jahres-Sperre gegen Herrn H. auf den Weg gebracht.

Connecting Computer Algebra Systems

In SCIEnce, we are connecting different Computer Algebra Systems in a standardized way. The protocol used is called SCSCP (Symbolic Computation Software Composability Protocol), and we have some prototypes running. The mathematical objects are marshalled in XML using OpenMath. This is a demo-session in MuPAD:

   *----*    MuPAD Pro 4.5.0 -- The Open Computer Algebra System
  /|   /|
 *----* |    Copyright (c)  1997 - 2008  by SciFace Software
 | *--|-*                   All rights reserved.
 |/   |/
 *----*      Licensed to:   Peter Horn

// load the package
>> package("OpenMath"):

// define some (simple) maths task. hold is required to prevent
// MuPAD from immediately computing the result.
>> A := hold(hold(_plus)(7, 8 ))
hold(_plus)(7, 8 )

// There are scscp-servers running on some remote machines.
// Note: in the setup of the connection, the type of the system is NOT
// specified. They all talk SCSCP.
>> gap := SCSCP("machine1.somewhere.org", 26133):
>> kant := SCSCP("machine2.somewhere-else.org", 26133):
>> mupad := SCSCP("machine3.differentplace.org", 26133):

// now, ask GAP, KANT and the remote MuPAD to compute the task:
>> gap::compute(A)
15

>> kant::compute(A)
15

>> mupad::compute(A)
15

// a slightly more advanced example (extended euclidean algorithm)
>> B := hold(hold(gcdex)(12, 14, 20))
hold(gcdex)(12,14,20)

>> kant::compute(B)
[2, -1, 1, 0]

More to come ;)

Neuer Mac

Neuer Mac Seit gestern steht hier ein neuer MacPro — mit 8 Kernen und 16 GB RAM. Das Ding ist unglaubich flott. Wir haben eben mal 16 Gröbnerbasen-Berechnungen gestartet, und nebenbei noch ein bisschen rumgespielt. Die load ist auf fast 20 hochgegangen, aber keine Anzeichen von Ermüdung.

Und außerdem ist die Maschine auch unter Last unhörbar leise. :)

Nicht so schön war, dass der Rechner zunächst nur 8 der 16GB erkannt hat — den Speicher auf der oberen Riser-Platine hat er schlicht nicht gesehen. Nachdem wir die Bestückung der Riser ausgetauscht haben, hat es dann doch geklappt — das verstehe wer kann.

Geliefert wurde die Maschine von hsd. Die waren zwar sehr günstig, aber den Speicher haben sie nicht eingebaut, sondern in ‘ner Extra-Kiste mitgeschickt. So was muss nicht sein.

Neue Stelle in SCIEnce

SCIEnce-LogoSeit 1. November sitze ich auf einer Drittmittelstelle im Rahmen des SCIEnce-Projekts.

In dem Projekt geht es — verkürzt — um die Entwicklung und Implementierung eines Protokolls zur Vernetzung verschiedener Computeralgebra-Systeme. Mit im Boot sind da zur Zeit GAP (St. Andrews), KANT (Berlin), Maple (Waterloo, CA) und MuPAD (eigentlich Paderborn, aber für dieses Projekt haben wir Paderborn ersetzt).

Meine Aufgaben sind zunächst vor allem die

  • Integration von MuPAD
  • Entwicklung eines Web-Proxys.

Details werde ich dazu bei Gelegenheit schreiben.

Abdividieren eines ggTs geht schief

Ich habe gestern viel Zeit mit debuggen verbracht, der Fehler lag an einer Stelle, wo ich ihn nicht vermutet hatte. Das Abdividieren des ggTs zweier Polynome ging schief:
>> f1 := poly((q^2+3)*x-(1/q+4)+((3*q^2-2*q+1)/(q+7))*x^2,[x])
>> f2 := poly((q-3*q^2)*x^2-(q/(1+q))+((2*q-q^2-2)/(q-2))*x,[x])
>> f3 := poly((q^2+3)+((q^3-2)/(q^2+q-2))*x,[x])
>> F1 := f1*f3;
>> F2 := f2*f3;
>> g := gcd(F1,F2)
poly(((q^3 - 2)/(28*q + 4*q^2 - 35*q^3 - 5*q^4 + 7*q^5 + q^6))*x + (3*q + q^2 + q^3 + q^4 - 6)/(28*q + 4*q^2 - 35*q^3 - 5*q^4 + 7*q^5 + q^6), [x])
>> F1/g
FAIL
>> F2/g
FAIL

Warum das? Die Division muss nach Konstruktion ja aufgehen.
Betrachten wir den Rest bei der Division:
>> divide(F1,g,Rem)
poly(- (1/q + 4)*(q^2 + 3) + 1/(q^3 - 2)*(- (q^2 + 3)^2 + (1/q + 4)*(q^3 - 2)/(q + q^2 - 2) + 1/(q^3 - 2)*((q^2 + 3)*(q^3 - 2)/(q + q^2 - 2) + 1/(q + 7)*(q^2 + 3)*(- 2*q + 3*q^2 + 1) - 1/(q + 7)/(q + q^2 - 2)*(- 2*q + 3*q^2 + 1)*(3*q + q^2 + q^3 + q^4 - 6))*(3*q + q^2 + q^3 + q^4 - 6))*(3*q + q^2 + q^3 + q^4 - 6), [x])

das ist tatsächlich ein Polynom vom Grad 0 in x, welches offenbar ungleich Null ist, aber:
>> normal(%)
poly(0, [x])

MuPAD muss also erst davon überzeugt werden, dass der relativ komplexe Ausdruck in q tatsächlich Null ist.
Statt F1/g benutze ich nun einfach
>> divide(F1,g)[1]
und weiß, dass die Division bereits exakt sein muss.

Web 2.0, ich komme

Ich stelle meine Homepage jetzt auf WordPress um. Es kann sein, dass noch nicht alles funktioniert wie gewünscht, aber der erste Schritt ist gemacht.