Mathematiker gesucht

Meine Diplomarbeit stellt mich gerade vor eine mathematische Herausforderung die mich als angehender Ingenieur mehr als gewöhnlich zum Grübeln bringt. Vielleicht liest hier ja ein Mathematiker mit, der mir dabei helfen oder mich zumindest an passende Literatur zum Thema verweisen kann.

Das Problem
Welche Anforderungen müssen an eine komplexwertige, quadratische Matrix Q gestellt werden, so dass die Existenz einer invertierbaren Matrix P gesichert ist für die die folgende Gleichung gilt?

Idealer Weise sollte P auch noch hermitisch sein.

Lösung
Ich habe mich heute mit meinem Betreuer unterhalten und er hat mir die Lösung dieses Problems aufgezeigt. Ich möchte sie der Vollständigkeit halber hier vermerken.

Wir nehmen mal an, die Matrix Q sei doch nur reellwertig. Außerdem stellt Q eine Kovarianzmatrix dar und ist deshalb symmetrisch. Weiterhin sei Q positiv definit. Dann kann man eine Eigenwertzerlegung vornehmen und erhält

Dabei ist U eine unitäre Matrix deren Spalten die Eigenvektoren von Q sind und Λ eine Diagonalmatrix die mit den entsprechenden Eigenwerten besetzt ist. Durch elementeweises Wurzelziehen kann die Matrix Λ in zwei Matrizen Λ1/2 mit

zerlegt werden. Entsprechend gilt

Die Mitte des rechten Terms der oberen Gleichung erweitert man dann um eine Einheitsmatrix I der entsprechenden Dimension.

Da die Transponierte einer unitären Matrix gleich deren Inverse ist, gilt

Setzt man das in die vorherige Gleichung ein, erhält man die gewünschte Form.

MATLAB goes Cloud Computing

This article will some guideline on how to do MATLAB-based number crunching on Amazon’s Elastic Cloud Computing service (EC2). However, this is not a detailed HOWTO. I just want to point you to the right direction.

Reasoning
While working on my diploma thesis I had to simulate a huge number of independent random experiments to acquire a database for a solid statistical analysis of the results of those experiments.

Instead of running n experiments in a single process I was able modify my simulation to run in two independent processes each with n/2 experiments. Due to the large number of experiments and the independence of each experiment, my problem was almost arbitrary scaleable – and therefore perfect for cloud computing.

Requirements
Of course you need MATLAB but also the MATLAB compiler which is a separate product. I’m assuming that you have access to a cloud computing service that offers you a linux-based machine. I used EC2 with a basic Debian installation. It can’t hurt to have a local (virtual) machine with the same OS as the target machine to do some local testing.

As far as I can tell, MATLAB’s GUI does not support cross-compiling so you might need to run MATLAB on the same architecture (x86 or amd64) and roughly the same OS (Windows or Linux) as your target machine. I did all of this on an 64 bit Arch Linux.

General idea
We will use the MATLAB compiler to transform your MATLAB code into C and then compile an executable binary for your target system (most likely a 64 bit Linux). Then we will transfer the binary with a runtime environment to the cloud and run multiple instances of it to do the number crunching.

Preparing the MATLAB code
First, you have to create a main function file, for example main.m. The function implemented in this file can take arguments form the command line which is handy because you might want to do the same calculation with different parameters in parallel or at least want the processes to save their results in different files.

All command line arguments passed to the main function are passed as strings so you might need to do some type converting to get their correct representation. A simple main.m might look like this:

function main(x, datapath)
    result = sqrt( str2double(x) );
    eval(["save " datapath "result"]);
end

This calculates the square root of the first parameter x and saves the result in a file specified by the second parameter datapath.

Generating the binary package
Now it’s time to compile the executable binary file. Open the compiler GUI by typing “deploytool” into the MATLAB command line. Create a new standalone application project and save it. I named my example project SquareRoot.prj. Then add main.m in the “Main function” subfolder. Other files used by your script should be added to the “Other files” subfolder.

You can now try to build the binary file. If no errors occur then you’re fine. If you run into errors, don’t panic. I had problems during linking because my MATLAB distribution shipped its own 64 bit libraries but not its own gcc. Because I have a recent linux distribution and a relatively old MATLAB build, my local gcc was on a newer version than the corresponding libc shipped with MATLAB. However, thanks to my Linux distribution I was able to install a matching version of the gcc. I then edited the CC environmental variable in the glnxa64 section of ~/.matlab/<MATLAB version>/mbuildops.sh to point to the matching gcc version. After that I had to create some symlinks in /opt/matlab/bin/glnxa64 pointing to the appropriate libraries of my Linux distribution to resolve the remaining linking errors.

After successfully compiling your MATLAB code, you will find two files in the <project name>/distrib subdirectory: an executable binary file named after your project and a luncher script named run_<project name>.sh. Create a tar archiv containing these two files and the MATLAB Compiler Runtime (MCR) installer (I found mine at /opt/matlab/toolbox/compiler/deploy/glnxa64/MCRInstaller.bin). Then copy the archive to your test machine (or directly to your cloud instance if you’re tough).

Testing
On your test machine, run MCRInstaller.bin (with “-console” flag if you don’t have an X display) to install the MCR, for example in ~/MCR. Because the installer might have more dependencies than your script, you should directly copy the ~/MCR directory and not the MCR installer to your EC2 instance, so you don’t have to run the installer again.

Now you can try calling run_<project name>.sh. The first parameter is the path to your MCR. The following arguments are passed to your MATLAB code. For my example project I would run (replace XX with your MCR Version):

 ./run_SquareRoot.sh ~/MCR/vXX 5 data1.mat

On your first try, this will probably cause some errors due to missing libraries in your Linux install. Try to install those. The following worked for me:

 apt-get install xserver-xorg libxp6

That’s it. Move your binary file, the loader shell script and your MCR directory to your cloud computing instance and let the number crunching begin. 😉

Alternative
You might really want to check out GNU Octave which is an open-source MATLAB alternative. Its syntax is MATLAB compatible so your scripts might run on Octave without any changes. If you do not use special MATLAB toolboxes or objects, chances are that you can use Octave instead of MATLAB and therefore avoid messing around with the MATLAB compiler, its runtime and those library issues. Just install Octave on your cloud instance, for example with

apt-get install octave

and directly run your MATLAB scripts.

In my case, I managed to get my script working with Octave by only making minor changes to avoid the use of objects but Octave turned out to need about 50 time more computation time than MATLAB. That pretty much cancels out the advantage of cloud computing for me. That’s why I still use MATLAB.

Peer Review gone wild

Gestern Abend bin ich in Fefes Blog über einen Zeitschriftenartikel mit dem Titel “We are sorry to inform you…” (Orginalquelle*) gestolpert. In dem Artikel geht es um Fälle in denen bahnbrechende wissenschaftliche Erkenntnisse von Reviewern total verkannt wurden.

Wissenschaftliche Artikel durchlaufen vor ihrer Veröffentlichung in einem Fachmagazin den Peer-Review-Prozess. Dabei wird der Artikel einem Peer, also einem “Ebenbürtigem” vorgelegt. Gemeint ist damit ein (vom Autor) unabhängiger Wissenschaftler mit dem gleichen Fachgebiet. Dieser prüft den Artikel dann unter verschiedenen Gesichtspunkten wie Originalität, Signifikanz und Plausibilität und spricht dem Herausgeber der Zeitschrift seine Empfehlung aus ob der Artikel veröffentlicht werden sollte.

How much damage could be caused by a peer reviewer having a bad day?

Diese Frage stellt der oben genannte Artikel und zeigt dazu negative Reviews von, in der Retrospektive, besonders bedeutenden wissenschaftlichen Arbeiten aus dem Bereich Informatik.

Die meisten dieser Artikel sagen mir persönlich nichts. Dazu bin ich wohl zu wenig Informatiker. Aber auf zwei Artikel möchte ich hier doch näher eingehen.

Als erstes möchte ich kurz auf ein Review zu Alan Turings Artikel “On Computable Numbers, with an Application to the Entscheidungsproblem“, erschienen 1936 in Proceedings of the London Mathematical Society (Link*), eingehen. In dem Paper wird u.a. die Turingmaschine vorgestellt. Zum deren Sinn bemerkt der Reviewer kurz:

I strongly suspect the machine is too simple to be of any use.

Außerdem kann es ja nicht angehen, dass ein in einer britischen wissenschaftlichen Zeitschrift ein Artikel ein deutsches Wort im Titel trägt.

Turing should remember that the language of this journal is English and change the title accordingly.

Übrigens, der britische Staat und Turing hatten ein gespaltenes Verhältnis zueinander. Einerseits war er quasi ein Kriegsheld, weil er maßgeblich am Hack der Enigma beteiligt war. Andererseits wurde er wegen einer homosexuellen Beziehung von einem britischen Gericht verurteilt und bekam als “Therapie” seiner Homosexualität Östrogen verordnet wodurch ihm Brüste more info

wuchsen.

Das zweite Review das ich vorstellen möchte ist zu “A Mathematical Theory of Communication” von Claude E. Shannon, 1947 im Bell System Technical Journal veröffentlich (Link). Mit diesem Paper hat Shannon die Informationstheorie begründet indem er beschrieben hat, unter welchen Bedingungen ein von einem Sender kodiertes Signal am Empfänger fehlerfrei dekodierbar ist.

Der Reviewer verkennt in diesem Fall die Bedeutung der Idee, für eine technische Betrachtung die Semantik der zu übertragenden Nachricht zu ignorieren.

The author claims that “semantic aspects of communication are irrelevant to the engineering problems,” which seems to indicate that his theory is suitable mostly for transmitting gibberish.

Des weiteren bezweifelt der Reviewer die Bedeutung von diskreten Nachrichtenquellen. In einer vertraulichen Mitteilung an den Herausgeber bemerkt er dazu:

At any point, there are sexy topics and unsexy ones: these days, television is sexy and color television is even sexier. Discrete channels with a finite number of symbols are good for telegraphy, but telegraphy is 100 years old, hardly a good research topic.

Heute, im “digitalen Zeitalter”, in dem sich alles auf Bits und Bytes zu reduzieren scheint, wirkt eine solche Einschätzung natürlich abwegig. Wenn man sich allerdings in die späten 1940er Jahre hinein versetzt, als Fernsehen der letzte Schrei war, kann man schon in die Versuchung kommen, diese antiquierte Telegraphen-Technologie als Sackgasse zu betrachten. Dieses Beispiel sollte man vielleicht im Hinterkopf behalten wenn man über den Sinn von Grundlagenforschung nachdenkt.

Als Gag zum Abschluss noch ein Tipp, den der Reviewer den Leuten in den Bell Labs gibt:

IBM has decided to stay out of the electronic computing business, and this journal should probably do the same!

* Einige Links in diesem Artikel führen zu elektronischen Zeitschriftenarchiven für deren Inhalt man in der Regel bezahlen muss. Von einem Uni-Netzwerk aus kann man ggf. dennoch kostenlos auf diese Inhalte zugreifen, wenn die Hochschule bzw. eine angeschlossene Hochschulbibliothek dieses Zeitschriftenarchiv abonniert hat.

Arbeiten Heute

Diese Woche haben die Medien verlautbart, dass die Bundesagentur für Arbeit es endlich geschafft hat, die Anzahl an Erwerbslosen auf unter 3 Millionen zu rechnen. Klingt ja eigentlich ganz gut, aber was für Jobs sind das denn, die man heute so bekommt?

Aus meinem Umfeld habe ich den Eindruck, dass es nur noch Jobs gibt, die entweder temporär oder lokal unsicher sind. Wenn man direkt von dem Unternehmen angestellt wird, für das man dann auch die Arbeit verrichtet, bekommt man vielleicht nur einen befristeten Arbeitsvertrag angeboten. Wenn man bei einem Dienstleister, dessen Geschäftsmodell sich im wesentlichen auf die Arbeitnehmerüberlassung stützt anfängt, kann man damit rechnen unter Umständen sogar mehrmals im Jahr die Arbeitsstelle wechseln zu müssen.

Ich als fast fertiger Ingenieur habe ja das Glück, keine Angst haben zu müssen, irgendwo irgendeinen Jobs zu finden. Nur nach dem was ich so auf virtuellen (Xing) und realen (Bonding) Jobmessen erlebe werden vor allem Jobs bei Ingenieurdienstleistern oder Beratungsfirmen beworben, also Jobs, die mit lokaler Unsicherheit behaftet sind. Da muss ich sagen, dass sich meine Begeisterung immer in Grenzen hält.

Ja, ich wäre bereit für einen Job in eine andere Stadt zu ziehen, für einen entsprechend attraktiven Job vielleicht auch aufs Land. Aber ich habe wirklich Bedenken, jährlich oder noch häufiger meinen Arbeitsplatz zu wechseln. Ich meine, wenn man alleinstehend ist und gerade von der Uni kommt, ist so ein Job bei einem Dienstleister bestimmt ganz interessant weil man viele verschiedene Orte sieht und auch viele unterschiedliche berufliche Erfahrungen sammeln kann.

Aber wie soll dass denn funktionieren, wenn man eine ernsthafte Beziehung führt? Eine Beziehung, in der der Partner nicht nur ein Anhängsel wie im klassischen Modell mit Alleinernährer und Hausfrau ist sondern eine eigene Karriere verfolgt? Ich habe deswegen schon über 3 Jahre eine Wochenendbeziehung geführt und sehe damit meinen Lebensbedarf an Fernbeziehungen gedeckt.

Ich frage mich, wie das Leute machen, die bei solchen Dienstleistern arbeiten. Oder sind das alles Singles?

LaTeX and Unicode: combining greek and latin letters

I needed to combine greek and latin letters in one LaTeX presentation. After quite a search on google and a point into the right direction at the LaTeX group on Xing, I found a solution. Here is how it goes:

\usepackage{ucs}
\usepackage[greek, ngerman]{babel} % due to that order, german is still the default language
\usepackage[utf8x]{inputenc} % used to be \usepackage[utf8]{inputenc}

For embedding some greek words, encapsulate them in a

\textgreek{...}

command. Example:

\textgreek{στεγανός}

That’s all.

Steganographie als informationstheoretisches Modell

Es ist zwar schon etwas Zeit vergangen, dass ich meinen (sehr gut bewerteten) Vortrag über Steganographie im Hauptseminar Theoretische Nachrichtentechnik gehalten habe, trotzdem möchte ich es mir nicht entgehen lassen, an dieser Stelle nochmal etwas Werbung für das Material zu machen.

Auf der Website die ich zum Thema eingerichtet habe gibt es neben einem Artikel und den Präsentationsfolien (die sowohl als PDF als auch als LaTeX-Quellcode vorliegen) auch noch eine Einführung in das Thema (in englisch) und ein kleines Python-Programm zum experimentieren.


Girls Day

Wenn Mädchen im (geschätzen) Grundschulalter über den Campus Richtung Barkhausen Bau laufen, dann kann das eigentlich nur eines heißen: es ist Girls Day. Sogar auf Google.:

Girls Day auf Google

Ob die gezielte Förderung von Mädchen und jungen Frauen in technischen Berufen fortschrittlich oder zutiefst sexistisch ist, darüber darf gerne gestritten werden.

Was passiert, wenn man bei Prüfungen freiwillig seine EMail-Adresse angibt?

Man wird mit Werbung für Wahlpflichtfächer, Diplom- und Studienarbeitsthemen der Professur “bleästigt”. 😉

Auszug aus der EMail:

[…] Sie haben damit eine überdurchschnittliche Leistung erbracht (Durchschnittsnote 3,2) Aufmerksam machen möchte ich Sie auf unsere Vertiefungslehrveransatltungen (siehe  Anlage), eine Übersichtsdarstellung zu unserer Haupfforschungsrichtung […] und unsere Themen für Studien- und Diplomarbeiten (siehe unsere Internetseite).

Anbieten möchte ich Ihnen, die Professur […] zu besichtigen; dabei möchten wir die Studien- und Diplomarbeitsthemen vorstellen und die Räumlichkeiten sowie die Geräteausstattung Ihnen zeigen. Bitte teilen Sie Ihre Teilnahme meiner Sekretärin […] mit.