Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
>
restart: Różniczkowannie symboliczne Różniczkowanie wyrażeń algebraicznych ( diff ) Pochodne zwyczajne > w:=x^x;# wyrażenie := w x > Diff(w,x)=diff(w,x); # Diff - bierna wersja komendy "diff" d d x x x = x x ( ln x () + 1 ) > Diff(w,x,x,x,x,x)=diff(w,x,x,x,x,x); d 5 x 5 x x 10 x x ( ln x () + 1 ) 3 15 x x ( ln x () + 1 ) 10 x x ( ln x () + 1 ) 2 10 x x x 3 10 x x ( () + 1 ) 6 x x x 4 = x x ( () + 1 ) 5 + + − − + − x x 2 x 2 x 3 d > Diff(w,seq(x,i=1..5))=diff(w,seq(x,i=1..5)); #inny sposób d 5 x 5 x x 10 x x ( ln x () + 1 ) 3 15 x x ( ln x () + 1 ) 10 x x ( ln x () + 1 ) 2 10 x x x 3 10 x x ( () + 1 ) 6 x x x 4 = x x ( () + 1 ) 5 + + − − + − x x 2 x 2 x 3 d > Diff(w,x$5)=diff(w,x$5); #jeszcze inny sposób d 5 x 5 x x 10 x x ( ln x () + 1 ) 3 15 x x ( ln x () + 1 ) 10 x x ( ln x () + 1 ) 2 10 x x x 3 10 x x ( () + 1 ) 6 x x x 4 = x x ( () + 1 ) 5 + + − − + − x x 2 x 2 x 3 d Pochodne cząstkowe > W:=x^3*y^2*z; W x 3 y 2 z := > Diff(W,x)=diff(W,x); ∂ ∂ x ( x 3 y 2 z ) = 3 x 2 y 2 z > Diff(W,y,z)=diff(W,y,z); ∂∂ ∂ 2 zy ( x 3 y 2 z ) = 2 x 3 y Różniczkowanie funkcji ( diff ) Pochodne zwyczajne > f:=x->x^x; # funkcja jednej zmiennej f → x x := > fp:=diff(f(x),x); fp x x ( := ln x () + 1 ) Wniosek: pochodna funkcji jest wyrażeniem! Pochodne cząstkowe > F:=(x,y,z)->x^3*y^2*z;# funkcja wielu zmiennych := F ( xyz x 3 y 2 z ,, ) → > Fx:=diff(F(x,y,z),x); Fx 3 x 2 y 2 z := > Fyz:=diff(F(x,y,z),y,z); Fyz 2 x 3 y := > Fx; 3 x 2 y 2 z Rozniczkowanie funkcji (operator D ) Pochodne zwyczajne > f(x); x x ln x ln x ln x ln x ln x ln x > D(f); # pochodna posiadająca cechy funkcji) → x x ( ln x () + 1 ) > D(D(D(D(D(f))))); # piąta pochodna 10 x x ( ln x () + 1 ) 3 15 x x ( ln x () + 1 ) 10 x x ( ln x () + 1 ) 2 10 x x x 3 10 x x ( ln x () + 1 ) 6 x x x 4 x → x x ( ln x () + 1 ) 5 + + − − + − x x 2 x 2 x 3 > (D@@5)(f); # inny sposób 10 x x ( ln x () + 1 ) 3 15 x x ( ln x () + 1 ) 10 x x ( ln x () + 1 ) 2 10 x x x 3 10 x x ( ln x () + 1 ) 6 x x x 4 x → x x ( ln x () + 1 ) 5 + + − − + − x x 2 x 2 x 3 Pochodne cząstkowe > F(x,y,z); x 3 y 2 z xyz 3 x 2 y 2 z > Fyz:=D[2,3](F); # pochodna względem "y" i "z" := Fx ( ,, ) → Fyz ( xyz 2 x 3 y ,, ) → > Fx; Fx > Fx(x,y,z); 3 x 2 y 2 z > Pochodna w punkcie ( diff vs. D ) > f(x); # funkcja x x > x0:=2; x0 2 := > eval(diff(f(x),x),x=x0); 4() ln 2 + 4 > subs(x=x0,diff(f(x),x)); 4() ln 2 + 4 > D(f)(x0); ln 2 4 Uwaga: opratora "D" używamy przy formułowaniu warunków początkowych podczas rozwiązywania równiań różniczkowych > 4() + Różniczkowanie funkcji uwiklanej typu F ( x , y ) = 0 na podstawie wyprowadzonych wzorów > F:=ln(x*y)-x*sin(y); F := ln xy x () ( ) − sin y y ′ =− F x F y > yp1_wzor:=-normal(diff(F,x)/diff(F,y)); ( − + 1 x () sin yy ) yp1_wzor − := x ( − +1 x cos yy () ) 2 xy y FFF − () () () F F 2 − F F 2 y ′′ = y x x y F 3 y > yp2_wzor:=normal((2*diff(F,x)*diff(F,y)*diff(F,x,y)-diff(F,y)^2*diff(F,x,x)-diff(F,x)^ 2*diff(F,y,y))/diff(F,y)^3); yp2_wzor := 2( ) ( 4 x cos yy 3 x 2 () − cos y () 2 y 2 − 2( ) sin y x 2 cos yy 2 x 3 () + cos y () 2 y 2 sin y () − + 2 sin yxy 2 ( ) + 2 x () sin y ( ) Inne podejście - bez znajomości wzorów Mechanizm liczenia pochodnej funkcji złożonej > diff(G(x,y(x)),x); − sin y 2 x 2 y 2 − sin y () 2 x 2 + sin y () 3 x 3 y 2 ) y x 2 ( − +1 x cos yy 3 () ) D 1 () G , x () ( y x ) + D 2 () G x () ( y x ) d x y x () > isolate(diff(G(x,y(x)),x)=0,diff(y(x),x)); > Fx:=D[1](F); # pochodna względem "x" := d d x D 1 () G x () ( y x ) y x − () = d D 2 () G x () ( y x ) > yp1:=rhs(%); D 1 () G x () ( y x ) yp1 − := y x > for i to 3 do yp||(i+1):=normal(subs(diff(y(x),x)=yp1,diff(yp||i,x))); end do; D 2 () G x () ( ) yp2 := − ( D 11 G , x () () ( y x ) D 2 () G x () ( y x ) 2 − 2 D 2 () G x () ( y x ) D 12 G , x () () ( y x ) D 1 () G , x () ( y x ) + D 22 G x () () ( y x ) D 1 G , x () () ( y x ) 2 ) D 2 G , x () () ( y x ) 3 yp3 := ( − D 2 () G x () ( y x ) 4 D 111 G , x () () ( y x ) + 3 D 2 () G , x () ( y x ) 3 D 112 G x () () ( y x ) D 1 () G , x () ( y x ) ,, ,, − 3 D 2 () G , x () ( y x ) 2 D 1 () G , x () ( y x ) 2 D 122 G , x () () ( y x ) + D 2 () G x () ( y x ) D 1 () G , x () ( y x ) 3 D 222 G x () () ( y x ) ,, ,, + 3 D 11 G , x () () ( y x ) D 2 () G x () ( y x ) 3 D 12 G , x () () ( y x ) − 3 D 11 G , x () () ( y x ) D 2 () G x () ( y x ) 2 D 22 G , x () () ( y x ) D 1 () G x () ( y x ) − 6 D 2 () G , x () ( y x ) 2 D 12 G , x () () ( y x ) 2 D 1 () G , x () ( y x ) + 9 D 2 () G , x () ( y x ) D 12 G x () () ( y x ) D 1 () G , x () ( y x ) 2 D 22 G x () () ( y x ) − 3 D 22 G x () () ( y x ) 2 D 1 () G , x () ( y x ) 3 ) D 2 () G , x () ( y x ) 5 yp4 := ( 6 D 11 G , x () () ( y x ) D 2 () G , x () ( y x ) 5 D 112 G x () () ( y x ) − 6 D 2 () G x () ( y x ) 4 D 1 () G , x () ( y x ) 2 D 1122 G x () () ( y x ) ,, ,,, + 4 D 2 () G , x () ( y x ) 3 D 1 () G , x () ( y x ) 3 D 1222 G , x () () ( y x ) − D 2 () G x () ( y x ) 2 D 1 () G , x () ( y x ) 4 D 2222 G x () () ( y x ) ,,, ,,, + 4 D 2 G , x () () ( y x ) 5 D 1 G , x () () ( y x ) D ,,, 1112 G , x () () ( y x ) − 12 D 2 G , x () () ( y x ) 4 D 12 G x () () ( y x ) 2 D 11 G , x () () ( y x ) + 24 D 2 () G , x () ( y x ) 3 D 12 G , x () () ( y x ) 3 D 1 () G , x () ( y x ) + 4 D 2 () G , x () ( y x ) 5 D 12 G , x () () ( y x ) D 111 G , x () () ( y x ) ,, − 3 D 11 G , x () () ( y x ) 2 D 2 () G , x () ( y x ) 4 D 22 G , x () () ( y x ) − D 2 () G x () ( y x ) 6 D 1111 G , x () () ( y x ) ,,, − 15 D 22 G , x () () ( y x ) 3 D 1 () G , x () ( y x ) 4 − 12 D 11 G , x () () ( y x ) D 2 () G , x () ( y x ) 4 D 122 G , x () () ( y x ) D 1 () G , x () ( y x ) ,, − 18 D 22 G , x () () ( y x ) 2 D 1 () G , x () ( y x ) 2 D 11 G , x () () ( y x ) D 2 () G x () ( y x ) 2 − 24 D 2 () G , x () ( y x ) 4 D 112 G , x () () ( y x ) D 12 G , x () () ( y x ) D 1 () G x () ( y x ) ,, − 24 D 22 G , x () () ( y x ) D 1 () G x () ( y x ) 3 D 122 G , x () () ( y x ) D 2 () G x () ( y x ) 2 ,, − 4 D 2 () G , x () ( y x ) 4 D 111 G , x () () ( y x ) D 22 G , x () () ( y x ) D 1 () G x () ( y x ) ,, − 16 D 1 () G , x () ( y x ) 3 D 222 G , x () () ( y x ) D 12 G , x () () ( y x ) D 2 () G x () ( y x ) 2 ,, + 18 D 2 () G , x () ( y x ) 3 D 112 G , x () () ( y x ) D 1 () G , x () ( y x ) 2 D 22 G x () () ( y x ) ,, + 36 D 2 () G , x () ( y x ) 3 D 1 () G , x () ( y x ) 2 D 122 G , x () () ( y x ) D 12 G x () () ( y x ) ,, + 6 D 2 () G , x () ( y x ) 3 D 1 () G , x () ( y x ) 2 D 222 G , x () () ( y x ) D 11 G x () () ( y x ) ,, − 72 D 12 G , x () () ( y x ) 2 D 1 () G , x () ( y x ) 2 D 2 () G , x () ( y x ) 2 D 22 G , x () () ( y x ) + 10 D 2 () G , x () ( y x ) D 22 G x () () ( y x ) D 1 () G , x () ( y x ) 4 D 222 G x () () ( y x ) ,, + 60 D 2 () G , x () ( y x ) D 12 G x () () ( y x ) D 1 () G , x () ( y x ) 3 D 22 G x () () ( y x ) 2 + 36 D 11 G , x () () ( y x ) D 2 () G x () ( y x ) 3 D 22 G , x () () ( y x ) D 1 () G x () ( y x ) D 12 G , x () () ( y x ) ) D 2 () G x () ( y x ) 7 Zastosowanie > F:=ln(x*y(x))-x*sin(y(x)); y x > yp1:=simplify(rhs(isolate(diff(F,x)=0,diff(y(x),x)))); # pochodna y'(x) F := ln x () ( y x ) − x ( sin ( ) ) yp1 − := y x ( () x ( sin ( ) y x ) − 1 ) x ( − +1 x cos ( ) ( y x ) y x () ) > for i to 9 do yp||(i+1):=normal(subs(diff(y(x),x)=yp1,diff(yp||i,x))); end do: > yp2; () ( − sin ( ) ( y x ) 2 x 2 + 2 x ( sin ( ) y x ) − 2( sin ( ) y x 2 ) cos ( ) ( y x ) y x () − + 24 x cos ( ) ( y x ) y x () − 3( cos ( ) y x ) 2 () 2 x 2 + 2( sin ( ) y x 3 ) cos ( ) ( y x ) 2 y x () 2 + x 3 y x () 2 sin ( ) ( y x ) 3 − 2 x 2 y x () 2 sin ( ) ( y x ) 2 + x () y x 2 sin ( ) ( y x ) ) ( x 2 ( − + 1 x cos ( ) ( y x ) y x () ) 3 ) > subs(y(x)=y,yp2); 4 x cos yy 3 x 2 () − cos y () 2 y 2 − 2( ) sin yx 2 cos yy 2 x 3 () + cos y () 2 y 2 sin y () − + 2 sin yxy 2 ( ) + 2 x () sin y − 2( ) sin y 2 x 2 y 2 − sin y () 2 x 2 + sin y () 3 x 3 y 2 ) y ( x 2 ( − + 1 x cos yy 3 () ) ) > yp2_wzor; # sprawdzenie ze wzorem 4 x cos yy 3 x 2 () − cos y () 2 y 2 − 2( ) sin yx 2 cos yy 2 x 3 () + cos y () 2 y 2 sin y () − + 2 sin yxy 2 ( ) + 2 x () sin y − 2( ) sin y 2 x 2 y 2 − sin y () 2 x 2 + sin y () 3 x 3 y 2 ) y ( x 2 ( − + 1 x cos yy 3 () ) ) > subs(y(x)=y,yp10); Wzory różnicowe 1. Wyprowadzanie wzorów różnicowych z wielomianu interpolacyjnego uzyskanego za pomocą komendy "interp" Stopnień wielomianu > m:=2; # 2,3,4,5 - stopień wielomianu m 2 > X:=array(0..m,[seq(x[0]+h*i ,i=0..m)]); # węzły interpolacji X := := array( ..02 , [ () 0 = x 0 () 1 + = x 0 h () 2 + = x 0 2 h ]) > Y:=array(0..m,[seq(y[i],i=0..m)]); # wartości funkcji dyskretnej Y := array( ..02 , [ () 0 = y 0 () 1 = y 1 () 2 = y 2 ]) Wielomian interpolacyjny w ( z ) > w:=interp(X,Y,z); 1 2 ( y 2 − + 2 y 1 y 0 ) z 2 1 2 ( 4 y 1 x 0 − − − + − 3 hy 0 2 y 2 x 0 y 2 h 4 hy 1 2 y 0 x 0 ) z w := + h 2 h 2 hy 2 x 0 + 3 hy 0 x 0 + − + − y 2 x 0 2 2 y 1 x 0 2 y 0 x 0 2 4 hy 1 x 0 + 2 h 2 y 0 1 2 + h 2 Sprawdzenie czy w ( x [ i ]) = y [ i ] > for i from 0 to m do simplify(eval(w,z=X[i])); end do; y 0 y 1 y 2 Pierwsza pochodna wielomianu interpolacyjnego > wprim:=diff(w,z); ( y 2 − + 2 y 1 y 0 ) z 1 2 4 y 1 x 0 − − − + − 3 hy 0 2 y 2 x 0 y 2 h 4 hy 1 2 y 0 x 0 wprim := + h 2 h 2 Druga pochodna > wbis:=diff(w,z,z); y x y x ( ( wbis := y 2 − + 2 y 1 y 0 h 2 Wzory różnicowe określające pierwsze pochodne w punktach interpolacji > for i from 0 to m do d1ydx1[i]:=simplify(eval(wprim, z=x[0]+i*h)) end do; d1ydx1 0 := − 1 2 3 y 0 + − y 2 4 y 1 h d1ydx1 1 := − 1 2 − + y 2 y 0 h d1ydx1 2 := 1 2 3 y 2 − + 4 y 1 y 0 h Wzory różnicowe określające drugie pochodne w punktach interpolacji > for i from 0 to m do d2ydx2[i]:=simplify(eval(wbis, z=x[0]+i*h)) end do; d2ydx2 0 := y 2 − + 2 y 1 y 0 h 2 d2ydx2 1 := y 2 − + 2 y 1 y 0 h 2 d2ydx2 2 := y 2 − + 2 y 1 y 0 h 2 > 2. Wyprowadzanie wzorów różnicowych ze wzoru opartego na wielomianie interpolacyjnym Lagrange'a > m - stopień wielomianu interpolacyjnego ( m = n - 1), n - liczba punktów r - rząd pochodnej ( r <= m ) i - punkt obliczeniowy ∏ m ( t j − ) 1 m (1) mk y d r ∑ () r j = 0 y = k i h r k mk d t − )! r t k − k = 0 ti > m:=2; r:=1;y:=array(0..m): m 2 := := r 1 > for i from 0 to m do d||r||ydx||r[i]:=simplify(1/(h^r)*add((-1)^(m+k)*y[k]/k!/(m-k)!*subs(t=i,diff(mul((t-j ),j=0..m)/ (t-k),t$r)),k=0..m)); end do; d1ydx1 0 := − 1 2 3 y 0 + − y 2 4 y 1 h d1ydx1 1 := − 1 2 − + y 2 y 0 h d1ydx1 2 := 1 2 3 y 2 − + 4 y 1 y 0 h Sprawdzenie sumy współczynników w licznikach wzorów różnicowych > d||r||ydx||r[m]; 1 2 3 y 2 − + 4 y 1 y 0 h > numer(d||r||ydx||r[m]); 3 y 2 − + 4 y 1 y 0 > coeff(numer(d||r||ydx||r[m]),y[m]); 3 > for k from 0 to m do add(coeff(numer(d||r||ydx||r[k]),y[i]),i=0..m); end do; − + !( = |
Menu
|