Mathematik am Computer - home.hs-karlsruhe.deweth0002/vortrag/docs/humboldt.pdf · Mathematik am...

29
Mathematik am Computer Prof. Dr. T. Westermann Hochschule Karlsruhe, Postfach 2440, 76012 Karlsruhe 100 -Jahrfeier Schulgebäude Humboldt-Gymnasium Juni 2003

Transcript of Mathematik am Computer - home.hs-karlsruhe.deweth0002/vortrag/docs/humboldt.pdf · Mathematik am...

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

Subtraktion 3 dimesionaler Vektoren: Sub3d> Sub3d([-1,2,0],[1,1,3]);

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

> f:= x -> sqrt(x):> a:=0.: b:=3: n:=10: > Fundamentalsatz(f(x), x=a..b, n);

>

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.