10.10.2013 Aufrufe

Aufgaben Logische Programmierung

Aufgaben Logische Programmierung

Aufgaben Logische Programmierung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Aufgabe 10 Komplexe Zahlen<br />

Dateiname: komplex.pl<br />

In der Mathematik, Physik und Technik werden oft komplexe Zahlen verwendet. Dabei wird<br />

√ −1 mit i (unter Technikern auch mit j) bezeichnet. Dann hat jede komplexe Zahl die Form<br />

A + Bi, wobei A und B reelle Zahlen sind (der Realteil bzw. der Imaginärteil der komplexen<br />

Zahl). In Prolog kann man eine solche komplexe Zahl darstellen als zusammengesetzten Term,<br />

also als Struktur komplex(A,B). Die Zahl 2 + 3i wird dann z.B. dargestellt durch die Struktur<br />

komplex(2,3). Schreiben Sie ein Prologprogramm zur Addition zweier komplexer Zahlen, zur<br />

Multiplikation zweier komplexer Zahlen und zur Berechnung des Betrags einer komplexen Zahl!<br />

Beispiele:<br />

Addition: (2 + 3i) + (10 + 20i) = 12 + 23i<br />

Multiplikation: (2 + 3i) · (10 + 20i) = −40 + 70i<br />

Betrag: |2 + 3i| ≈ 3, 60555<br />

Ihr Programm sollte sich also so verhalten:<br />

?- add(komplex(2,3),komplex(10,20),Summe).<br />

Summe = komplex(12, 23).<br />

?- mal(komplex(2,3),komplex(10,20),Produkt).<br />

Produkt = komplex(-40, 70).<br />

?- betrag(komplex(2,3),Betrag).<br />

Betrag = 3.60555.<br />

Aufgabe 11 Euklidischer Algorithmus<br />

Dateiname: ggT.pl<br />

Probieren Sie zunächst die folgende Anfrage zur Berechnung des Restes von 100 bei der Division<br />

durch 7 aus:<br />

?- X is 100 mod 7.<br />

Der Euklidische Algorithmus zur Berechnung des größten gemeinsamen Teilers (ggT) zweier<br />

natürlicher Zahlen beruht auf der folgenden Idee:<br />

Nehmen wir an, wir wollen z.B. ggT(18,42) berechnen. Jeder gemeinsame Teiler von 18 und<br />

42 muss auch Teiler von 42 − 18, also von 24 sein und damit gemeinsamer Teiler von 18 und<br />

24. Umgekehrt ist jeder gemeinsame Teiler von 18 und 24 auch gemeinsamer Teiler von 18<br />

und 42. Daher ist ggT(18, 42) = ggT(18, 24). Allgemein ist ggT(a, b) = ggT(a, b − a), wenn<br />

b die größere der beiden Zahlen ist. Man kann das gleiche Argument nun wiederholen und<br />

sagen, ggT(18, 24) = ggT(18, 24 − 18), also ggT(18, 24) = ggT(18, 6). Nun ist 18 die größere der<br />

beiden Zahlen und wir rechnen 18 − 6 = 12 und daher ggT(18, 6) = ggT(12, 6). Allgemein gilt<br />

ggT(a, b) = ggT(a − b, b), wenn a > b ist. Wenn man das so weiter führt, erhält man insgesamt<br />

6

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!