Mathematik von T. Arens, F. Hettlich, Ch. Karpfinger, U. Kockelkorn, K. Lichtenegger, H. Stachel (zu Kapitel 6: Folgen)restart; Folgen und GrenzwertIn Maple ist der Datentyp sequence vorgesehen, um mit Folgen zu arbeiten. Mits:= 1,2,3,4,5; s[3];wird der Variablen s eine endliche Folge von Zahlen zugeordnet. Wie bei Listen und Mengen laesst sich auf einzelne Elemente zugreifen. Haeufig ist der Befehl seq nuetzlich, um eine solche Folge zu definieren. r:= seq(j^2,j=1..10);Wir muessen diesen Datentyp von anderen unterscheiden. So kennen wir bereits den Typ list (in eckigen Klammern)l:=[s,s]; den wir schon beim plot Befehl kennengelernt haben, und den Typ set (geschweifte Klammern), bei dem Wiederholungen von Elementen rausfallen.m:={s,s};Um den Datentyp zu wechseln, gibt es den Befehl convert, zum Beispielconvert(l,set);Die Anzahl der Elemente in einer Folge erhalten wir mit nops. seq( [s[j],r[j]],j=1..nops([s]));(Beachte, wir haben nun eine Folge von Listen konsturiert.)Mit dem Befehl limit lassen sich Grenzwerte bestimmen.limit( (1+1/n)^n, n=infinity);Das zweite Argument ist notwendig, da der Befehl ach fuer andere Ausdruecke genutzt werden kann (siehe spaetere Abschnitte) .limit( (x^2-1)/(x-1),x=1);Nun wenden wir uns den rekursiv definierten Folgen zu. Nehmen wir unser Paradebeispiel, die Fibonacci-Zahlen, alsoNiMvJkkiYUc2IjYjLCZJIm5HRiYiIiJGKkYqLCYmRiU2I0YpRiomRiU2IywmRilGKkYqISIiRio= .Wir lassen aber die Starwerte noch flexibel mit a[0]=n[1] und a[1]=n[2]. Im Buch haben wir den Fall n[1]=1 und n[2]=1 betrachtet und hatten gesehen, dass die Folge der Brueche NiMvJkkic0c2IjYjIiIiKiYmSSJhR0YmRidGKCZGKzYjIiIjISIi , NiMvJkkic0c2IjYjIiIjKiYmSSJhR0YmRiciIiImRis2IyIiJCEiIg== , NiMvJkkic0c2IjYjIiIkKiYmSSJhR0YmRiciIiImRis2IyIiIyEiIg== , . . .gegen die Zahl NiMvJSJzRywmKiYiIiJGJyIiIyEiIkYnKiYtJSVzcXJ0RzYjIiImRidGKEYpRic= konvergiert. Schreiben wir ein kleines Programm, dass uns zu gegebenen zwei Zahlen n1,n2 die ersten 20 Eintraege dieser Folge liefert. testen:= proc(n1,n2)
local a,b,j,tmp, seq:
a:=n1:
b:=n2:
seq := NULL:
for j from 1 by 1 to 20 do
seq := seq, evalf(b/a);
tmp := a + b:
a := b:
b := tmp:
od:
seq;
end:testen(1,1);testen(123,456);
s:=evalf(1/2*(1+sqrt(5)));Die beiden Zahlen n1,n2 scheinen keine Rolle zu spielen. Die Folge konvergiert anscheinend immer und besitzt stets denselben Grenzwert. Beweisen, dass dies richtig ist, kann Ihnen natuerlich kein Computer abmehmen !!!Mit dem solve Befehl koennen wir Kandidaten fuer Grenzwerte bei rekursiv definierten Folgen aus der Fxpunktgleichung bestimme, zum Beispiel fuerNiMvJkkic0c2IjYjLCZJIm5HRiYiIiJGKkYqLCZGKkYqKiZGKkYqJkYlNiNGKSEiIkYq .Wir erhalten moegliche Grenzwerte aus s:='s';
solve(s=1+1/s,s);Kommentar: Da oben die Variable s belegt wurde, muessen wir diese Belegung hier erst durch s:='s' rueckgaengig machen, um keine Fehlermeldung zu bekommen.In einigen Faellen gelingt es auch, aus der rekursiven Definition einer Folge eine explizite Darstellung zu gewinnen. Dies versucht der Befehl rsolvea[n]:=rsolve({a(n+1) = 2*a(n), a(0)=1}, a);Aufgaben(Um Aufgaben zu bearbeiten oeffnen Sie bitte ein neues Worksheet und probieren Sie dort ihre Befehle aus. Einen Loesungsvorschlag erhalten Sie, wenn sie die Loesung oeffnen. Dies sollten Sie aber erst nach eigenen Versuchen nutzen.)1. Bestimmen Sie die Grenzwerte der FolgenNiMvJiUiYUc2IyUibkcqJiwoIiIiRipGJ0YqKiRGJyIiI0YqRioqJkYnRiosJkYnRipGKkYqRiohIiI= , NiMvJiUiYkc2IyUibkcqJiwoIiIiRipGJ0YqKiRGJyIiI0YqRiosJkYnRipGKkYqISIi , NiMvJiUiY0c2IyUibkcqJiIiIkYpLCZGKUYpKSwkIiIjISIiRidGKUYu . Loesungan:=(1+n+n^2)/n/(n+1);
limit(an,n=infinity);bn:=an*n;
limit(bn,n=infinity);assume(n,integer);
cn:=1/(1+(-2)^n);
limit(cn, n=infinity);Beim dritten Beispiel sehen wir, dass Maple nicht das richtige Ergebnis, den Genzwert 0, liefert, da der Nenner fuer sich genommen keinen definierten (verallgemeinerten) Grenzwert liefert. Sie sehen, dass wir blind, ohne mathematischen Hintergrund etwa zu Konveregenz, den Resultaten eines Computeralgebrasystems nicht vertrauen duerfen.2. Schreiben Sie ein Programm, dass die ersten n Elemente NiMmJSJ4RzYjJSJqRw== und die Betraege | NiMsJiYlInhHNiMlImpHIiIiJkYlNiMsJkYnRihGKCEiIkYs | zu der rekursiven Folge NiMvJiUieEc2IywmJSJqRyIiIkYpRiksJiomJkYlNiNGKCIiJCIiJSEiIkYpKiZGKUYpIiImRjBGKQ== mit NiMvJiUieEc2IyIiIUYn ausgibt.Bemerkung: Wenn Sie "shift" und "return" verwenden, koennen Sie einen Befehl in der naechsten Zeile weiterschreiben, ohne das dieser ausgewertet wird.LoseungDie Prozedur koennte zum Beispiel wie folgt aussehen.liste:= proc(n,init)
local j, x, xold, feld1, feld2:
xold:=init:
feld1 := NULL:
feld2 := NULL:
for j from 1 by 1 to n do
x:= evalf(xold^3/4 + 1/5):
feld1 := feld1, x:
feld2 := feld2, abs(x-xold):
xold:=x:
od:
array([seq([feld1[j],feld2[j]],j=1..n)]);
end:liste(10,0);Testen Sie auch andere Startwerte aus. Was passiert zum Beispiel bei x_0=2?
Wir koennen selbstverstaendlich auch die Loesungen der Fixpunktgleichung zu dieser rekursiven Folge betrachtenlsg:=solve(x=x^3/4+1/5,x);Das dies drei reelle Nullstellen des Polynoms dritten Grades sind, sehen wir approximativ in der Fliesskommadarstellung.evalf(lsg);