Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
>
restart: Przykład 1. > a1:=evalf(Pi)*10^5; a1 314159.2654 := > a2:=evalf(Pi)*10^(-5); a2 0.00003141592654 := > a3:=a1+a2: > is(a1=a3); true Przykład 2. > y:=1/1*(10^x*(1+(x)*10^(-x))-10^x); y := 10 x ( 1 x 10 () + − x ) − 10 x > eval(y,x=10.5); 0. > simplify(eval(y,x=21/2)); 21 2 > > restart: Błąd przybliżenia liczby π > xs:=Pi; xs π := > xp:=3.1415; # 3.1416 xp 3.1415 := > Delta[x]:=xs-xp; ∆ x := π 3.1415 − > epsilon[x]:=Delta[x]/xs; π 3.1415 π > solve(abs(epsilon[x])<1/2*10^(-d),d); ( ε x := − RealRange −∞ ( , Open 4.229257627 ) ) > evalf(Pi); 3.141592654 > Błąd odejmowania bliskich sobie liczb > Digits:=12; Digits 12 := Pierwsza liczba > x1s:=sqrt(2); x1s := 2 > x1p:=evalf[10](x1s); x1p 1.414213562 > Delta[x1]:=evalf(x1s-x1p); := ∆ x1 0.37 10 -9 > epsilon[x1]:=evalf((x1s-x1p)/x1s); := := ε x1 0.261629509038 10 -9 Druga liczba > x2s:=sqrt(201/100); x2p:=evalf[10](x2s); Delta[x2]:=evalf(x2s-x2p); epsilon[x2]:=evalf((x2s-x2p)/x2s); x2s := 201 10 x2p 1.417744688 := := ∆ x2 -0.12 10 -9 ε x2 := -0.846414739035 10 -10 Błąd względny różnicy ε = ∆ r = ∆ x 1 − ∆ x 2 r r x − x 1 2 > epsilon[r]:=evalf((Delta[x1]-Delta[x2])/(x1s-x2s)); := ε r -0.138765953975 10 -6 Natomiast błąd względny sumy ε = ∆ s = ∆ x 1 + ∆ x 2 s s x + x 1 2 > epsilon[s]:=evalf((Delta[x1]+Delta[x2])/(x1s+x2s)); := ε s 0.882781375672 10 -10 > restart: Propagacja błędów > f:=(x1,x2)->4/3*x1*x2^3; f := ( x1 x2 , ) → 3 x1 x2 3 ∑ 2 ∂ f ∆≈ f ∆ x ∂ x xx = i i = 1 i 4 > Delta[f]:=add((D[i](f)(x1p,x2p))*Delta[x||i],i=1..2); ∆ f := 3 x2p 3 ∆ x1 + 4 x1p x2p 2 ∆ x2 1 () ∑ 2 ∂ f ε≈ ∆ x > epsilon[f]:=expand(Delta[f]/f(x1p,x2p)); f f x ∂ x xx i i = i ε f := ∆ x1 x1p + 3 ∆ x2 x2p > x1p:=3.14;x2p:=5.00; x1p 3.14 := := x2p 5.00 > f(x1p,x2p); 523.3333333 > Delta[x1]:=0.0016; Delta[x2]:=0.001; := ∆ x1 0.0016 ∆ x2 := 0.001 > 'Delta[f]'=Delta[f]; ∆ f = 0.5806666667 > 'epsilon[f]'=epsilon[f]; ε f = 0.001109554140 > Błędy obcięcia > restart: > f:=exp(-x); f e () := − x Rozwinięcie funkcji wokół x = 0 > sz:=taylor(f,x); # taylor(f,x,6); sz − + − + − + := 1 x 2 x 2 6 x 3 24 x 4 120 x 5 1 O x 6 () > w:=convert(sz,polynom); w − + − + − := 1 x 2 x 2 6 x 3 24 x 4 1 120 x 5 > plot([f,w],x=0..2,0..1); 4 = 1 1 1 1 1 1 1 Wyznaczenie wartości funkcji dla x = 0.1 > x0:=0.1; x0 0.1 := > fp:=eval(w,x=x0); fp 0.9048374167 := > fd:=eval(f,x=x0); fd 0.9048374180 := > Delta['f']:=fd-fp; ∆ f := 0.13 10 -8 ε f 0.1436722194 10 -8 Wyznaczenie wartości funkcji w punkcie x = 2.1 > x0:=2.1; x0 2.1 := > fp:=eval(w,x=x0); fp 0.0314957500 := > fd:=eval(f,x=x0); fd 0.1224564283 := > Delta['f']:=fd-fp; ∆ f := 0.0909606783 > epsilon['f']:=Delta['f']/fd; := ε f 0.7428003541 Błąd rzędu 74% !!! > Zwiększenie liczby wyrazów rozwinięcia (10) > sz:=taylor(f,x,10); sz − + − + − + − + 1 x 2 x 2 6 x 3 24 x 4 120 x 5 1 720 x 6 1 5040 x 7 40320 x 8 1 − 362880 x 9 1 + O x 10 > w:=convert(sz,polynom); := w − + − + − + − + 1 x 2 x 2 6 x 3 24 x 4 1 120 x 5 720 x 6 5040 x 7 1 40320 x 8 − 362880 x 9 > epsilon['f']:=Delta['f']/fd; := 1 1 1 1 := ( ) 1 1 1 1 1 1 > plot([f,w],x=0..2,0..1); > fp:=eval(w,x=x0); fp 0.1220713254 := > fd:=eval(f,x=x0); fd 0.1224564283 := > Delta['f']:=fd-fp; ∆ f := 0.0003851029 > epsilon['f']:=Delta['f']/fd; := ε f 0.003144815714 Błąd rzędu 0.3% > Zmiana punktu rozwinięcia (tylko 6 wyrazów) > sz:=taylor(f,x=2); sz e () -2 − e () -2 ( x 2 ) + 2 e () -2 ( x 2 ) 2 − 6 e () -2 ( x 2 ) 3 + 24 e () 1 -2 ( x 2 ) 4 − 120 e () 1 -2 + > w:=convert(sz,polynom); w := x 2 ) 5 O( ( x 2 − ) 6 ) e () -2 − e () -2 ( x 2 − ) + 2 e () -2 ( x 2 − ) 2 − 6 e () -2 ( x 2 − ) 3 + 24 e () 1 -2 ( x 2 − ) 4 − 120 e () 1 -2 ( x 2 − ) 5 > plot([f,w],x=0..2,0..1); 1 1 := − − − − ( − 1 1 |
Menu
|