Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
>
restart: WYZNACZANIE ŚCISŁYCH ROZWIĄZAŃ WYBRANYCH TYPÓW RÓWNAŃ (solve, isolve, rsolve dsolve) Znajdowanie pierwiastków, sortowanie, przypisywanie nazw pierwiastkom , sprawdzanie rozwiązań Ogólna budowa komendy solve solve ( r, n ); r - układ równań lub nierówności n - niewiadome > Równania algebraiczne o współczynnikach liczbowych ( solve ) Podejście najprostsze > solve(x^2-3*x+1=0,x); 3 2 + 5 2 , 3 2 − 5 2 > x; x > x1:=%%[2]; x1 − := 3 2 5 2 > x2:=%%%[1]; 5 2 > simplify(subs(x=x1,x^2-3*x+1=0)); # sprawdzenie rozwiązań dopiero po przypisaniu im nazw =00 > simplify(subs(x=x2,x^2-3*x+1=0)); =00 x2 + := 3 2 Podejście bardziej eleganckie > restart: > row:=x^2-3*x+1=0; row := x 2 − + 3 x 10 = > roz:=solve(row,x); 5 2 > simplify(subs(x=roz[1],row)); # sprawdzenie rozwiązań przed przypisaniem im nazw roz := 3 2 + 5 2 , 3 2 − =00 > simplify(subs(x=roz[2],row)); =00 > evalf(roz); 2.618033988 0.381966012 , > sort([roz]); 3 2 + 5 2 , 3 2 − 5 2 > is(roz[1]>roz[2]); true > por:=(x,y)->is(x<y); is < xy > lpp:=sort([roz],por); # lista pierwiastków posortowanych (tylko dla liczb rzeczywistych) por := ( xy ( ) → ) lpp := 3 2 − 5 2 , 3 2 + 5 2 > seq(x||i=lpp[i],i=1..2); x1 − = 3 2 5 2 , x2 + = 3 2 5 2 > x1, x2; x1 x2 > assign(seq(x||i=lpp[i],i=1..2)); # przypisanie nazw pierwiastkom > x1; , 3 2 − 5 2 > x2; 3 2 + 5 2 Podejście bardziej efektywne > restart: > row:=x^2-3*x+1=0; x 2 3 x 10 > roz:=solve(row,{x}); # zbiór niewiadomych -> zbiór rozwiązań row := − + = 5 2 > simplify(eval(row,roz[1])); # inny sposób sprawdzenia rozwiązań =00 roz := { = x + 3 2 5 2 } , { = x − 3 2 } > simplify(eval(row,roz[2])); =00 > x; x > x1:=eval(x,roz[1]); x1 + := 3 2 5 2 > x2:=eval(x,roz[2]); x2 − := 3 2 5 2 Równania wyższych stopni > restart: > row:=x^10-1=0; row := x 10 − 10 = > roz:=solve(row,{x}); roz { x -1 { = } x 1{ } , x − − + + 1 4 5 4 1 4 I 2 + 5 5 } , { x − − − + = 1 4 5 4 1 4 I 2 − 5 5{ } , x − − − − = 1 4 5 4 1 4 I 2 − 5 5 } , { x − − + − = 1 4 5 4 1 4 I 2 + 5 5{ } , x − + + = 1 4 5 4 1 4 I 2 + 5 5 } , { x − − + = 1 4 5 4 1 4 I 2 − 5 5{ } , x − − − = 1 4 5 4 1 4 I 2 − 5 5 } , { x − + − = 1 4 5 4 1 4 I 2 + 5 5 } > plot(lhs(row),x=-infinity..infinity); > row:=x^5-x+1=0; row := x 5 − + x 10 = > roz:=solve(row,{x}); := , = = roz { := { x = RootOf ( _Z 5 − + _Z 1 = , index 1{ ) } , x = RootOf ( _Z 5 − + _Z 1 = , index 2 ) } , x = RootOf ( _Z 5 − + _Z 1 = , index 3{ ) } , x = RootOf ( _Z 5 − + _Z 1 = , index 4 ) } , index 5 > plot(lhs(row),x=-infinity..infinity); { x = RootOf ( _Z 5 − + _Z 1 = , ) } > evalf(roz); # evalf(roz,30); lub evalf[30](roz); { x = 0.7648844336 0.3524715460 I { + } , x = -0.1812324445 1.083954101 I + } , { x -1.167303978 { = } , x = -0.1812324445 1.083954101 I − } , 0.7648844336 0.3524715460 I > fsolve(row,{x}); # rozwiązanie przybliżone, pierwiastki rzeczywiste { x = − } x -1.167303978 > fsolve(row,{x},complex); # rozwiązanie przybliżone, wszystkie pierwiastki { = } { x -1.167303978 { = } , x = -0.1812324445 1.083954101 I − } , { x = -0.1812324445 1.083954101 I { + } , x = 0.7648844336 0.3524715460 I − } , 0.7648844336 0.3524715460 I Rozwiązanie parametryczne > rp:=solve(x+y=1,{x(t),y(t)}); { x = + } rp { := x = 1 t 1 + , y = 1 t t + } > rp:=solve(x*y=1,{x(t),y(t)}); rp := { x − = 1 t , y − t { = } , x = 1 t , y t = } > rp:=solve(x^2+y^2=1,{x(t),y(t)}); rp := { x − = 1 , y − = t } , { x = 1 , y = t } 1 t 2 1 t 2 1 t 2 1 t 2 + + + + > rp:=solve(x^2+y^2+x*y=1,{x(t),y(t)}); rp := { y − = t , x − 1 } , { x = 1 , y = t } t 2 t 2 t 2 t 2 + + t 1 + + t 1 + + t 1 + + t 1 > plots[implicitplot](x^2+y^2+x*y=1,x=-2..2,y=-2..2); = > plot([[1/sqrt(t^2+t+1),t/sqrt(t^2+t+1),t=-100..100],[-1/sqrt(t^2 +t+1),-t/sqrt(t^2+t+1),t=-100..100]]); Równania algebraiczne o współczynnikach symbolicznych ( solve ) Równanie liniowe > restart: > row:=a*x+b=0; row := ax b 0 + = > x:=solve(row,x); x − b a > row; =00 > x:='x': Układ równań liniowych > sys:={a*x+b*y=c,d*x+e*y=f}; := sys { ax by c = , dx ey f + = } > niew:={x,y}; niew {} := yx := + |
Menu
|