Post on 17-Sep-2018
transcript
Mathematik am Computer
Prof. Dr. T. WestermannHochschule Karlsruhe, Postfach 2440, 76012 Karlsruhe
100 -Jahrfeier Schulgebäude Humboldt-GymnasiumJuni 2003
> restart:
Einführung in das Computeralgebra-System Maple
Maple als Taschenrechner
> 4*8-5;
27> (3/7 + 2/3) / (3/2);
4663
> (3./7 + 2/3) / (3/2);
0.7301587300>
Maple als symbolischer Rechner
> f(x):= tan(x)*ln(x+1);
:= ( )f x ( )tan x ( )ln + x 1> diff(f(x), x);
+ ( ) + 1 ( )tan x 2 ( )ln + x 1( )tan x
+ x 1
> f(x):=x^2*cos(x);
:= ( )f x x2 ( )cos x> Int(f(x),x) = int(f(x),x);
= d⌠⌡⎮⎮x2 ( )cos x x − + x2 ( )sin x 2 ( )sin x 2 x ( )cos x
> a[n]:= (3^(n+1)+2^n)/(3^n+sqrt(n^5));
:= an + 3
( ) + n 12n
+ 3n n5
> Limit(a[n], n=infinity)=limit(a[n], n=infinity);
= lim → n ∞
+ 3( ) + n 1
2n
+ 3n n53
>
Maple als Graphik-System
> f(x) := sin(x)/x;
:= ( )f x( )sin xx
> plot(f(x), x=0..10*Pi, thickness=2, color=blue);
> f_2d := sin(sqrt(x^2+y^2)) / sqrt(x^2+y^2);
:= f_2d( )sin + x2 y2
+ x2 y2
> plot3d(f_2d, x=-10..10, y=-10..10);
>
Maple als Animations-System
> with(plots): f(x,t) :=sin(x-t); animate(f(x,t), x=0..2*Pi, t=0..2*Pi, frames=20);
Warning, the name changecoords has been redefined
:= ( )f ,x t ( )sin − x t
> f_3d:= sin(sqrt(x^2+y^2)) / (x^2+y^2)^(1/3): animate3d(f_3d*cos(t), x=-15..15, y=-15..15, t=0..2*Pi,frames=25, grid=[30,30]);
>
Visualisierung elementarer Begriffe
Veranschaulichung des AbleitungsbegriffsDie Ableitung einer Funktion im Punkte x0 ist definiert als der Grenzübergang des Differenzenquotienten für dx -> 0. Die Ableitung einer Funktion im Punkte P erhält man geometrisch, indem ein weiterer Punkt Q auf der Kurve gewählt und die Kurvensekante durch P und Q berechnet wird. Für Q -> P geht die Sekantensteigung in die Tangentensteigung über.
Dies sei am Beispiel der Funktion
x^2+2 im Punkte x0=1
als Animation demonstriert:
> #restart:> sekante:=(f(x0+dx)-f(x0))/dx * (x-x0) + f(x0);
:= sekante + ( ) − ( )f + x0 dx ( )f x0 ( ) − x x0
dx( )f x0
Definition der Funktion> f:=x-> x^2+2; x0:=1; xmax:=4:> #f:=x->sqrt(x): x0:=0.2: xmax:=6:> #f:=x->exp(x): x0:=0.5: xmax:=2:
:= f → x + x2 2 := x0 1
Der Grenzübergang dx -> 0 wird realisiert, indem dx variiert wird von dx = 3.0, ..., 0.1.
Abspeichern der Funktion und der Sekante für kleiner werdendes dx> N:=15:> for i from 1 to N > do > dx:=(N-i+0.1)*(xmax-x0)/N: > ttl:=convert(evalf(dx),string):> t1:= textplot({[x0,f(x0), P], [x0+dx, f(x0+dx), Q]}):> p:=plot({f(x),sekante,[[x0,0], [x0,f(x0)]]},> x=0..xmax, color=black,thickness=2,> numpoints=200,title=ttl): > p||i:=display([p,t1]):> od:
Animation:Die Einzelbilder werden durch den display-Befehl dargestellt. Mit der Option insequence='true' erscheinen sie allerdings nicht als Einzelbilder, sondern als Zeit-Sequenz in einem Schaubild > with(plots): i:='i': > > display([ seq(p||i, i=1..N) ],insequence='true');
>
Veranschaulichung des IntegralbegriffsZur Definition des bestimmten Integrals: Integral = Grenzwert der Zwischensummen für beliebig feine Intervall-Zerlegungen
d⌠⌡⎮⎮
0
1
+ x2 1 x
Definition der Funktion> #restart:
with(student): f:= x^2 + 1:
> #f:=sqrt(x): #f:=exp(x):
Darstellung der Funktion mit Mittelsummen > n:=10: > middlebox(f,x=0..1,n,thickness=3);
Berechnung der Zwischensumme> middlesum(f,x=0..1,n)=evalf(leftsum(f,x=0..1,n));
= 110
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑
= i 0
9 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
110
i120
2
1 1.285000000
Animation: Graphische Darstellung des Übergangs von der Zwischensumme zum Integral:Darstellung der Rechteckflächen für wachsendes n.> ind:=seq(20*k,k=1..12);> p:=i->middlebox(f,x=0..1,i,color=black,thickness=3):> with(plots): > > display([seq(p(i),i=ind)], insequence=true);
:= ind , , , , , , , , , , ,20 40 60 80 100 120 140 160 180 200 220 240
>
Explizite Berechnung der Zwischensummen geschieht durch den middlesum-Befehl
> for i from 20 by 40 to 240> do > middlesum(f,x=0..1,i)=evalf(middlesum(f,x=0..1,i));> od;
= 120
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑ = j 0
19 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
120
j140
2
1 1.333125000
= 160
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑
= j 0
59 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
160
j1
120
2
1 1.333310185
= 1
100
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑
= j 0
99 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
1100
j1
200
2
1 1.333325000
= 1
140
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑ = j 0
139 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
1140
j1
280
2
1 1.333329081
= 1
180
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑
= j 0
179 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
1180
j1
360
2
1 1.333330761
= 1
220
⎛
⎝
⎜⎜⎜
⎞
⎠
⎟⎟⎟∑
= j 0
219 ⎛
⎝⎜⎜⎜
⎞
⎠⎟⎟⎟ +
⎛⎝⎜⎜
⎞⎠⎟⎟ +
1220
j1
440
2
1 1.333331611
>
Vektoren
Prozeduren: arrow2d und arrow3dDie Prozeduren arrow2d und arrow3d stellen für diese Ausarbeitung die wichtigsten Prozeduren dar, da sie 2D bzw. 3D Pfiele zeichnen. Diese beiden Prozeduren werden im Worksheet in jedem Programmteil benutzt!
2D-Pfeil
3D-Pfeil
Ia.) Darstellung von Vektoren im R² und R³Komponentendarstellung von VektorenDarstellung des Vektors a: a = [ ], ,ax ay az = + + ax ex ay ey az ez | | | | | | | Vektor Vektorkomponenten Vektorkoordinaten
2 dimensionaler Vektor: Linkom2d> Linkom2d([2,1]);
3-dimensionaler Vektor: Linkom3d> Linkom3d([1,2,1]);
II.) Darstellung der Addition von VektorenAddition von Vektoren:Zwei Vektoren a und b werden nach der folgenden Vorschrift geometrisch addiert: 1. Der Vektor b wird parallel zu sich selbst verschoben, bis sein Anfangspunkt in den Endpunkt des Vektors a fällt. 2. Der vom Anfangspunkt des Vektors a zum Endpunkt des verschobenen Vektors b gerichtete Vektor ist der Summenvektor = c + a b
Addition 2-dimensionaler Vektoren: Add2d> Add2d([5,1],[-2,5]);
Addition 3-dimesionaler Vektoren: Add3d> Add3d([2,1,3],[3,5,3]);
III.) Darstellung der Subtraktion von VektorenSubtraktion von VektorenUnter dem Differenzvektor = d − a b zweier Vektoren a und b versteht man den Summenvektor aus a und −b, wobei -b der zu b inverse Vektor ist: = d a = −b a + (-b)
1. Der Vektor b wird zunächst in seiner Richtung umgekehrt: Dies führt zu dem inversen Vektor -b. 2. Dann wird der Vektor -b parallel zu sich selbst verschoben, bis sein Anfangspunkt in den Endpunkt des Vektors a fällt. 3. Der vom Anfangspunkt des Vektors a zum Endpunkt des verschobenen Vektors -b gerichtete Vektor ist der gesuchte Differenzvektor d = a - b.
Subtraktion 2-dimensionaler Vektoren: Sub2d> Sub2d([4,4],[-5,5]);
Darstellung mathematischer Zusammenhänge
Fundamentalsatz der Differential- und IntegralrechnungDie Prozedur Fundamentalsatz
> f:= x -> sin(x)/x:> a:=0.1: b:=20: n:=10: > Fundamentalsatz(f(x), x=a..b, n, view=0..2);Warning, the name changecoords has been redefined
>
Rotationskörper
1. Gesucht ist das Volumen Vx und die Mantelfläche Mx des Körpers, der durch Rotation der Funktion y=x^2 an der x-Achse im Intervall [0,2] entsteht.
> #restart:> y:=x^2; a:=0: b:=2:
:= y x2
> plot(y, x=a..b,thickness=2);
> plot3d([x,y*cos(t),y*sin(t)], x=a..b,> t=0..2*Pi,style=patch, orientation=[-74,83],
axes=normal);
> volumen:=Pi*Int(y^2,x=a..b):> mantel := 2*Pi*Int(y*sqrt(1+(diff(y,x))^2),x=a..b):
> print(`Das Volumen ist `, volumen=evalf(volumen)); > print(`Die Mantelfläche beträgt `, mantel =
evalf(mantel));
,Das Volumen ist = π d⌠⌡⎮⎮
0
2
x4 x 20.10619299
,Die Mantelfläche beträgt = 2 π d⌠
⌡⎮⎮
0
2
x2 + 1 4 x2 x 53.22596524
2. Gesucht ist das Volumen Vx und die Mantelfläche Mx des Körpers, der durch Rotation der Funktion y=sin(x) an der x-Achse im Intervall [0,Pi] entsteht.
> y:=sin(x); a:=0: b:=Pi:> plot(y, x=a..b,thickness=2);
:= y ( )sin x
> plot3d([x,y*cos(t),y*sin(t)], x=a..b,> t=0..2*Pi, style=patch, orientation=[-74,83],
axes=normal);
> volumen:=Pi*Int(y^2,x=a..b):> mantel := 2*Pi*Int(y*sqrt(1+(diff(y,x))^2),x=a..b):
> print(`Das Volumen ist `, volumen=evalf(volumen)); > print(`Die Mantelfläche beträgt `, mantel =
evalf(mantel));
,Das Volumen ist = π d⌠⌡⎮⎮
0
π
( )sin x 2 x 4.934802202
,Die Mantelfläche beträgt = 2 π d⌠
⌡⎮⎮
0
π
( )sin x + 1 ( )cos x 2 x 14.42359945
>
Taylorreihen
Um den Annäherungsprozeß der Taylorreihe an die Funktion graphisch zu demonstrieren, wählen wir eine Animation, die die vorgegebene Funktion zusammen mit Teilsummen der Taylorreihe darstellt.
Prozedur zur AnimationBeispiel: Taylorreihe der Exponentialfunktion am Entwicklungspunkt x=1 bis zu Ordnung 14> taylor_poly(exp(x), x=1, 14, -5..4, -2..20);Warning, the name changecoords has been redefined
Beispiel: Taylorreihe der Sinusfunktion am Entwicklungspunkt x=Pi/3 bis zu Ordnung 15> taylor_poly(sqrt(x), x=1, 15, 0..6, -1..3);
>
Mandelbrot-Mengen
Direkt definierte Folgen (allgemeine Folgenglied = direkte Formel)
(1.) Langsam konvergente Folge
> a:=n->(1.+1/n)^n;
:= a → n⎛⎝⎜⎜
⎞⎠⎟⎟ + 1.
1n
n
> for i from 1 to 100 do print(a(i)); od:
2.2.2500000002.3703703692.4414062502.4883200002.5216263762.5464996992.5657845142.5811747892.5937424602.6041990142.6130352812.6206008902.6271515422.6328787302.6379284972.6424143582.6464258412.6500343292.6532977052.6562632342.6589698332.6614501262.6637312792.6658363322.6677849362.6695939752.6712778742.672849172
2.6743187502.6756963452.6769901292.6782076252.6793554542.6804393252.6814644412.6824354752.6833565792.6842316552.6850638382.6858563582.6866119432.6873330902.6880221672.6886811452.6893120592.6899167472.6904965562.6910532122.6915880292.6921021902.6925969232.6930734132.6935324582.6939749862.6944021032.6948144552.6952126782.6955978252.6959701922.6963305572.6966793552.6970174032.6973449532.6976625182.6979706962.6982697622.698560107
2.6988423182.6991163182.6993828622.6996420802.6998942082.7001397752.7003785902.7006114732.7008382112.7010592872.7012747902.7014849412.7016899892.7018901072.7020854822.7022761872.7024624882.7026444742.7028223652.7029961172.7031661882.7033324342.7034951062.7036541902.7038099532.7039624982.7041118102.7042580522.7044010992.7045416142.7046790092.704813829
> n:='n':> Limit(a(n), n=infinity)=limit(a(n), n=infinity);
= lim → n ∞
⎛⎝⎜⎜
⎞⎠⎟⎟ + 1.
1n
n
2.718281828
(2.) Langsam divergente Folge
> a:= n -> (sqrt(n)+1)/(ln(n)+1);
:= a → n + n 1 + ( )ln n 1
> for i from 10 by 10 to 100 do print(i,evalf(a(i))); od:
,10 1.260308983,20 1.369495147,30 1.471696226,40 1.562112098,50 1.643125002,60 1.716799205,70 1.784625847,80 1.847681661,90 1.906762890,100 1.962473865
> Limit(a(n), n=infinity)=limit(a(n), n=infinity);
= lim → n ∞
+ n 1 + ( )ln n 1
∞
Rekursiv definierte Folgen
(1.) Schnelle Konvergenz für jeden Wert von c
= a0 1, = a + n 112
( + ancan
)
> c:=2:> a[0]:=1: > for n from 0 to 10 do a[n+1]:=1./2*(a[n]+c/a[n]); od;
:= a1 1.500000000
:= a2 1.416666666
:= a3 1.414215686
:= a4 1.414213562
:= a5 1.414213562
:= a6 1.414213562
:= a7 1.414213562
:= a8 1.414213562
:= a9 1.414213562
:= a10 1.414213562
:= a11 1.414213562
(2.) Konvergenz abhängig vom Parameter c
= a0 0, = a + n 1 + an2
c > c:=0.23:> a[0]:=0.: > for n from 0 to 100
do a[n+1]:=a[n]^2+c; if n mod 10 =0 then print(n,a[n+1]) fi: od:
,0 0.23,10 0.3558214552,20 0.3584807075,30 0.3585751210,40 0.3585785170,50 0.3585786392,60 0.3585786436,70 0.3585786436,80 0.3585786436,90 0.3585786436,100 0.3585786436
>
Übergang in die Ebene
= z0 0, = z + n 1 + zn2
c
> iteration(c_x=0.2,c_y=0.5, n=70);
, , ,Nach der 70 -ten Iteration beträgt der Betrag von z 0.4680488824
> iteration(x=0.4,y=0.21, n=100);
, , ,Nach der 100 -ten Iteration beträgt der Betrag von z 0.8852760986
>
Die Mandelbrot-Menge besteht gerade aus der Menge von c-Werten, bei denen nach einer bestimmten Anzahl von Durchgängen (z.B. n=50) einen vorgegebender Betrag (z.B. b=50) noch nicht überschritten wurde.
>
> mandelbrot:=proc(arg1, arg2, iteration, betrag, arg5) local N, betr, fraktaltest: #Unterprogramm fraktaltest
> fraktaltest:=proc(x,y) local c, z, iter:
> c:=evalf(x+I*y): z:=0:
> for iter from 0 to N do z:=z^2+c: # Iterationsvorschrift if (evalf(evalc(abs(z)))>=betr) then break: fi: od: return(-iter): end:
> betr:=op(2,betrag): N:=op(2,iteration):
> plot3d(fraktaltest,op(2,arg1),op(2,arg2), axes=boxed, labels=[Real, Imag, Tiefe], orientation=[-120,20], style=PATCHNOGRID, shading=ZHUE, arg5):
> end:> mandelbrot(x=0.3..0.5, y=0.4..0.6, n=50, b=50, grid=[40,40]);
Die unterschiedliche Farbskalierung entspricht der Iterationstiefe. Für rot dargestellte Punkte ist der vorgegebene Betrag schon sehr bald erreicht. Für lila dargestellte Punkte ist nach 50 Iterationen der maximal Betrag von b=50 noch nicht erreicht.Zur Bildergalerie: >
Zusammenfassung:Einsatz des CA-Systems Maple
- zum Lösen mathematischer Problemstellungen
- zur Visualisierung mathematischer Begriffe
- zur Darstellung mathematischer Zusammenhänge
- zur Visualisierung mathematischer Formeln
Literatur:T. Westermann: Mathematik für Ingenieure mit Maple (Band 1 + 2), Springer-Verlag Heidelberg 2004 +2001.T. Westermann et al.: Mathematische Begriffe visualisiert mit Maple, Springer-Verlag Heidelberg 2001.