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

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
:=
+
  • 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.