w15 b, Inżynierskie, Semestr III, Metody obliczeniowe, Wyklady

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;

+
!(
=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.