Flächen und Listenverarbeitung

Flächen und Listenverarbeitung

Das Fünfeck, welches hier in sechs rechtwinkelige Dreiecke zerlegt wurde, hat eine Fläche von 52 cm² (was man durch Kopfrechnen herausfinden kann). Welch komplexer Vorgang diese Kopfrechnung ist, kann man durch Formalisierung mit Listenverarbeitung herausfinden.

Dabei kann man viel Verständnis für ein Koordinatensystem erreichen.

Notwendige Listen sind:

  1. die Liste der Punkte
  2. die Liste der rechtwinkeligen Dreiecke
  3. die Liste der Kathetenpaare

1. Aufgabe:

Man bestimme die notwendigen Listen durch Ablesen aus der Zeichnung.

Programmcode (Formalisierung):

  1. Liste der Punkte
    A:[1,5];B:[5,1];C:[10,1];D:[13,5];E:[7,8];F:[7,5];G:[5,5];H:[10,5];
    Punkt:[A,B,C,D,E,F,G,H];
  2. Liste der rechtwinkeligen Dreiecke
    D1:[A,B,G];D2:[C,G,B];D3:[G,C,H];D4:[C,D,H];D5:[E,A,F];D6:[D,E,F];
    Dreieck:[D1,D2,D3,D4,D5,D6];
  3. Liste der Kathetenpaare
    Nicht ablesen, sondern berechnen!

2. Aufgabe:

Zeichne die Dreiecksliste mit Geogebra:

[[[1, 5], [5, 1], [5, 5]], [[10, 1], [5, 5], [5, 1]],
[[5, 5], [10, 1], [10, 5]], [[10, 1], [13, 5], [10, 5]],
[[7, 8], [1, 5], [7, 5]], [[13, 5], [7, 8], [7, 5]]]

So geht es laut Youtubehttp://youtu.be/721h4vkwfNU

3. Aufgabe:

Flächenberechnungen:

Man könnte leicht aus der Dreiecksliste die einzelnen Flächen nach der Heronschen Formel ermitteln. Aber das eignet sich ja nicht zum Kopfrechnen, und genau das wollten wir ja analysieren. Also stellt sich die Frage: Ablesen der Kathetenlängen? Das wäre wohl „unsportlich“.

Wir berechnen zunächst die drei Seiten der Dreiecke in der Dreiecksliste. Wir arbeiten das an einem Dreieck aus und verwenden danach Listenarithmetik.

Das ausgewählte Dreieck sei D1.

D1:[[1, 5], [5, 1], [5, 5]];

Programmcode für die Berechnung der Strecken mit Listenverarbeitung:

D1:[[1, 5], [5, 1], [5, 5]];
S1:setify(D1);
P1:powerset(S1,2);
P1:listify(P1);
S1:map(listify,P1);

Maxima liefert:

Seiten:[[[1, 5], [5, 1]], [[1, 5], [5, 5]], [[5, 1], [5, 5]]]

Daraus können wir nunmehr die Seitenlängen berechnen!

Eine Seitenlänge:

Herkömmlich: http://maxima-online.org/?inc=r-968527119

Mit komplexen Zahlen: http://maxima-online.org/?inc=r1711871624

Alle drei Seitenlängen und die Fläche für ein Dreieck:http://maxima-online.org/?inc=r1264415508

Für die Abrechnung der gesamten Dreiecksliste verwenden wir die gute alte FOR-Schleife:
http://maxima-online.org/?inc=r41436217

Programmcode:

D:[[[1, 5], [5, 1], [5, 5]], [[10, 1], [5, 5], [5, 1]], 
[[5, 5], [10, 1], [10, 5]], [[10, 1], [13, 5], [10, 5]], 
[[7, 8], [1, 5], [7, 5]], [[13, 5], [7, 8], [7, 5]]];
n:length(D);
s(X):=sqrt(X[1]^2+X[2]^2);
Gesamt:0;
for i:1 thru n do block(D1:D[i],
S1:setify(D1),
P1:powerset(S1,2),
P1:listify(P1),
S1:map(listify,P1),
AS:makelist(S1[i][2]-S1[i][1],i,1,3),
Seiten:map(s,AS),
Seite:sort(Seiten),
Kathetenpaar:[Seite[1],Seite[2]],
Flaeche:Seite[1]*Seite[2]/2,
Gesamt:Gesamt+Flaeche,
display(Kathetenpaar,Flaeche));
display(Gesamt);