Telefonkostenfunktion

Aufgabe:

Aus einer älteren Unterlage:telefonkostenErklärung: Das else 0 am Schluss bedeutet, dass keine Kosten ausgewiesen werden, falls sinnloserweise ein negativer Verbrauch eingegeben wird. In dieser Aufgabe geht es um Fallunterscheidungen.

Programm Maxima Onlinehttp://maxima-online.org/?inc=r1240591096

 

 

Advertisements

Einfache Wahrscheinlichkeitsrechnung

Aufgaben:

  1. Messergebnis:[0,0,2,2,5,4,6,0,9,10,6,5,11,6,6,15,14,1,0,17].
    a) Bestimme die Häufigkeiten.
    b) Bestimme W(x>2).
    c) Wie hoch ist der Erwartungswert?
  2. Messergebnis:[1,2,1,0,5,1,5,6,9,7,1,6,12,14,15,3,7,10,8,12,8,9,8,19,24].
    a) Bestimme die Häufigkeiten.
    b) Bestimme W(x>3).
    c) Wie hoch ist der Erwartungswert?
  3. Messergebnis:[0,0,2,2,5,4,6,0,9,2,3,4,10,8,11,0,6,5,11,6,6,15,14,1,0,17].
    a) Bestimme die Häufigkeiten.
    b) Bestimme W(x>1).
    c) Wie hoch ist der Erwartungswert?

Strichliste – Sortieren hilft:

tipp1a

Strichliste zu 1a:
strichliste_1

Vollständige Lösung Tabellenkalkulation:
Tabellenkalkulation lässt sich gut anwenden, hat aber einen kleinen Nachteil: die Anzahl der Messergebnisse erfordert jeweils Anpassungen. Die Ausgabe ist sehr schön, die mathematische Vorgangsweise aber eher weniger transparent.

strichliste_2

Programmcode:

load(descriptive);
x:[0,0,2,2,5,4,6,0,9,10,6,5,11,6,6,15,14,1,0,17];
k:2;
G:discrete_freq(x);
X:G[1];
H:G[2];
n:length(H);
N:sum(H[i],i,1,n);
p:H/N;
W:sum(p[i],i,k+1,n);
E:sum(p[i]*X[i],i,1,n),numer;
E:floor(E*10+0.5)/10.0;

Das Unterprogramm descriptive ermöglicht Gruppierung mit discrete_freq()

Programmcode mit benutzerdefinierter Funktion:

A:[[0,0,2,2,5,4,6,0,9,10,6,5,11,6,6,15,14,1,0,17],2]
/* EINGABE kann verändert werden */;
f(x,k):=block(
load(descriptive),
G:discrete_freq(x),
X:G[1],
H:G[2],
n:length(H),
N:sum(H[i],i,1,n),
p:H/N,
W:sum(p[i],i,k+1,n),
E:sum(p[i]*X[i],i,1,n),numer,
E:floor(E*10+0.5)/10.0,
"Ergebnis"
);
f(A[1],A[2]);
display(W,E);

Ausführung mit Maxima Onlinehttp://maxima-online.org/?inc=r-1301181831

Programmcode (alle Aufgaben auf einmal):

f(L):=block(
load(descriptive),
Ergebnis:[],
G:discrete_freq(L[1]),
X:G[1],
H:G[2],
n:length(H),
N:sum(H[i],i,1,n),
p:H/N,
W:sum(p[i],i,L[2]+1,n),
E:sum(p[i]*X[i],i,1,n),numer,
E:floor(E*10+0.5)/10.0,
Ergebnis:append(Ergebnis,[W,E])
);
Aufgaben: matrix(
[[0,0,2,2,5,4,6,0,9,10,6,5,11,6,6,15,14,1,0,17],2],
[[1,2,1,0,5,1,5,6,9,7,1,6,12,14,15,3,7,10,8,12,8,9,8,19,24],3],
[[0,0,2,2,5,4,6,0,9,2,3,4,10,8,11,0,6,5,11,6,6,15,14,1,0,17],1]
)
/* Eingabe darf geändert werden */;
A:args(Aufgaben);
map(f,A);

Es gibt also 3 wesentliche Schritte:

pap

Die Ausführung mit Maxima Online: http://maxima-online.org/?inc=r-607858086

Hinweis: ohne Computerunterstützung ist die Anwendung der Gegenwahrscheinlichkeit anzuraten.

Fischverkauf

Aufgabe: Der Fischverkäufer

Ein Junge züchtet Goldfische als Hobby. Eines Tages beschließt er, alle Fische zu verkaufen. Er tut es in fünf Schritten:
1. Er verkauft die Hälfte seiner Fische und einen halben Fisch.
2. Er verkauft ein Drittel des Restes und einen drittel Fisch.
3. Er verkauft von dem, was ihm bleibt, ein Viertel und einen viertel Fisch.
4. Er verkauft ein Fünftel des Restes und einen fünftel Fisch.

Nun hat er noch 11 Goldfische übrig. Natürlich wird kein Fisch zerteilt oder irgendwie verletzt. Wie viele Fische hatte er am Anfang?

Aus J. Weilharter, Spaß mit Algorithmen, Seite 28ff

Programmcode:

g1:x1=x-(x/2+1/2);
g2:x2=x1-(x1/3+1/3);
g3:x3=x2-(x2/4+1/4);
g4:x4=x3-(x3/5+1/5);
g5:x4=11;
l:solve([g1,g2,g3,g4,g5],[x,x1,x2,x3,x4]);

Lösung mit Maxima-Online: http://maxima-online.org/?inc=r-1387132335

 

Kombinatorik mit GeoGebraCAS

Ein leeres CAS-Sheet auf Geogebra-Tube ist sehr praktisch! Man beachte den Link. http://www.geogebratube.org/student/m96860

image

Aufgabe: Lösung der angezeigten Aufgabe mit Maxima.

Programmcode:

c(n,k):=n!/(k!*(n-k)!);
c(45,6);
c(49,6);
n: [10,11,12];
c(n[1],3);
c(n[2],3);
10!/(3!*7!);

Maxima Online: http://maxima-online.org/?inc=r1244456819

Wenn man es herunterlädt, kann man es mit wxMaxima ausführen (Linux, Windows, MAC).

wxmaxima

Zinseszins

Zinseszins

Aufgaben der Finanzmathematik  sind besonders gut für die Anwendung eines Computeralgebrasystems geeignet.

Ko = Anfangskapital
p = Zinsatz dekursiv p.a. in Prozent
i = p/100 = Interest (engl.), der Zinssatz als Dezimalzahl
r = Aufzinsungsfaktor
n = Laufzeit (in Jahren)
Kn = Endkapital

Programmcode: http://maxima-online.org/?inc=r1082931755

Ko:1000;
p:3;
n:10;
i:p/100.0;
r:1+i;
Kn:Ko*r**n;
Kn:floor(Kn*100+0.5)/100.0;

Maxima Online: http://maxima-online.org/?inc=r1082931755
Mit „finance“-Unterprogramm: http://maxima-online.org/?inc=r10577185 (die Verwendung von Unterprogrammen für so einfache Aufgabenstellung sollte man vermeiden, es sei den, das Unterprogramm wird entweder selbst geschrieben oder wenigstens genau analysiert. Black Box Methoden wie Taschenrechnerverwendung haben wenig Bildungswert).

In diesem Fall wird die benutzerdefinierte Funktion

fv(i,Ko,n):=Ko*(1+i)^n

verwendet, das ist einfach zu verstehen.

Mapping-Übung: http://maxima-online.org/?inc=r1869469945

Übung:
Berechnung des Endkapitals

Anfangskapital Ko Zinssatz in % p Laufzeit n Endkapital Kn
1000,– 3 10  
1500,– 2,5 8  
700,– 2 11  
2000,– 2,125 6  

Das kann man natürlich auch mit einem Tabellenkalkulationsprogramm lösen. Aber, es soll natürlich auf möglichst einfache Weise mit Maxima gelöst werden.

Eine Polynomfunktion zu einer gegebenen Punkteliste bestimmen

Aufgabe:

Zu einer gegebenen (und geeigneten) Liste von Punkte ist die passende Polynomfunktion zu bestimmen. Der Grad des Polynoms ist automatisch um eins kleiner als die Anzahl der Punkte!

Programmcode:

kill(all);
Punkt:[[-3,0],[0,3],[2,0],[5,0]];
n:length(Punkt);
Grad:n-1;
g(x):=x[2]=sum(a[i]*x[1]^(n-i),i,1,Grad)+a[n];
Gleichungen:map(g,Punkt);
Unbekannte:makelist(a[i],i,1,n);
l:solve(Gleichungen,Unbekannte);
y=Unbekannte.makelist(x^(n-i),i,1,n),l;

Maxima Online: http://maxima-online.org/?inc=r-1848088314

Erklärung der Berechnung: prog-punkte

  1. Löschen aller Speicher (nicht notwendig!).
  2. Liste der gegebenen Punkte –> EINGABE (darf verändert werden).
  3. Anzahl der gegebenen Punkte.
  4. Der Grad des gesuchten Polynoms ist um eins kleiner als die Anzahl der gegebenen Punkte.
  5. Funktionsmuster für die Bestimmungsgleichung der Polynomfunktion.
  6. Das Funktionsmuster auf die Punkteliste anwenden. Die Koordinaten der Punkte werden eingesetzt und die Liste der Gleichungen automatisch erzeugt.
  7. Die Liste der Unbekannten erzeugen. Die Verwendung von indizierten Koeffizienten ist notwendig.
  8. Lösung des Gleichungssystems.
  9. Die gesuchte Funktion mit Skalarmultiplikation (von Vektoren = Listen) erzeugen.

Noch eine Aufgabe inkl. Graph und Faktorenzerlegung:
http://maxima-online.org/?inc=r-1201857931

Schaltung von Widerständen

Aufgabe: Mache einen Rechner für Schaltungen von Widerständen!
Unterschied zwischen Serien- und Paralellschaltung auf Youtube erklärt.

Lösung nach Wilhelm Haager:

""/* SERIENSCHALTUNG */;
"~~"([x]):=xthru(apply("+",x));
nary("~~",110);
R1~~R2;
R1~~R2~~R3;
R1~~R2~~R3~~R4;
""/* PARALLELSCHALTUNG */;
"||"([x]):=xthru(1/apply("+",1/x));
nary("||",110);
R1||R2;
R1||R2||R3;
R1||R2||R3||R4;
""/* GEMISCHTE AUFGABEN */;
(R1||R2)~~(R3||R4)

Maxima Online: http://maxima-online.org/?inc=r-396831697
Serienschaltung und Parallelschaltung: http://maxima-online.org/?inc=r-33349478
Gemischte Aufgaben: http://maxima-online.org/?inc=r-806327782

Eine Anwendung mit wxMaxima:

(%i20) ""/* SERIENSCHALTUNG */;
"~~"([x]):=xthru(apply("+",x));
nary("~~",110);

""/* PARALLELSCHALTUNG */;
"||"([x]):=xthru(1/apply("+",1/x));
nary("||",110);
(%o20)
(%o21) (~~([x])):=xthru(apply("+",x))
(%o22) "~~"
(%o23)
(%o24) (||([x])):=xthru(1/apply("+",1/x))
(%o25) "||"
(%i26) Widerstand:[R1=100,R2=200,R3=50,R4=300];
(%o26) [R1=100,R2=200,R3=50,R4=300]
(%i27) Schaltung1:(R1||R2)~~(R3||R4);
(%o27) (R1*R2*(R4+R3)+(R2+R1)*R3*R4)/((R2+R1)*(R4+R3))
(%i28) Schaltung1,Widerstand,numer;
(%o28) 109.52

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);

Android Apps machen (ein informatischer Einschub)

http://www.appsgeyser.com ist ein tolles Tool zur Erstellung von Android Apps.

Ein fertiges Beispiel ist hier um es auf einem Android Tablet oder Smartphone zu installieren:https://casmaxima.wordpress.com/…/android-app…/

Ob eine Website geeignet ist, kann man hier testen und auch am Beamer zeigen:http://theleggett.com/tools/webapptester/

ZumAusprobieren:
https://casmaxima.wordpress.com und
http://casmaxima.blogspot.com/?m=1
(bei Blogger muss man das mobile Format mit dem Schalter aufrufen).

Dezimalzahl in gemischte Zahl verwandeln

Gemischte Zahlen wie 3 1/2 bestehen aus einer ganzen Zahl und beigefügtem Bruch.
3,5 = 3 1/2 bedeutet eigentlich 3+1/2. Mit dem Ergebnis als gemischte Zahl kann man nicht direkt weiter rechnen 🙂

Die Umwandlung einer gegebenen Dezimalzahl in eine gemischte Zahl ist aber eine schöne Querverbindung zur Informatik.

Programmcode:

x:1.25 /* Eingabe einer Dezimalzahl */;
x:rat(x);
z:num(x);
n:denom(x);
y:mod(z,n);
t1:floor(x);
t2:y/n;
t1:string(t1);
t2:string(t2);
concat("Gemischte_Zahl:",t1," ",t2);

Erklärungen dazu:

  • rat(x) verwandelt die Zahl x in einen unechten Bruch
  • num gibt den Zähler
  • denom gibt den Nenner
  • mod gibt den Divisionsrest
  • string verwandelt Zahl in Text

Es ist ratsam, die folgenden Aufgaben auch mit wxMaxima zu berechnen, da die Rechengenauigkeit offenbar unterschiedlich ist. Wenn man die Probe macht, sind offenbar die Lösungen mit wxMaxima besser.

Ausführung mit Maxima Online: http://maxima-online.org/?inc=r1034719141

Listenverarbeitung: http://maxima-online.org/?inc=r-881228801

Verbesserte Ausgabe: http://maxima-online.org/?inc=r2111573605