> restart:
Metody ścisłe rozwiązywania ukadów równań liniowych
Generowanie liniowych równań niejednorodnych
20x1 + 4x2 - 3x3 =19
- 3x1 + 40x2 + 2x3 = 83
4x1 + 3x2 + 20x3 = 70
1. Ręcznie
> r1:=20*x[1]+4*x[2]-3*x[3]=19;
r1 := 20 x1 + 4 x2 - 3 x3 = 19
> r2:=-3*x[1]+40*x[2]+2*x[3]=83;
r2 := -3 x1 + 40 x2 + 2 x3 = 83
> r3:=4*x[1]+3*x[2]+20*x[3]=70;
r3 := 4 x1 + 3 x2 + 20 x3 = 70
2. Za pomocą list uogólnionych
> n:=3;
n := 3
> A:=array(1..n,1..n,[[20,4,-3],[-3,40,2],[4,3,20]]);
îÅ‚20 4 -3Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
A := ïÅ‚ -3 40 2śł
ïÅ‚ śł
ðÅ‚ 4 3 20ûÅ‚
> b:=array(1..n,[19,83,70]);
b := [19, 83, 70 ]
> for i to n do r||i:=add(A[i,j]*x[j],j=1..n)=b[i]; end do;
r1 := 20 x1 + 4 x2 - 3 x3 = 19
r2 := -3 x1 + 40 x2 + 2 x3 = 83
r3 := 4 x1 + 3 x2 + 20 x3 = 70
3. Za pomocÄ… macierzy
> A:=Matrix([[20,4,-3],[-3,40,2],[4,3,20]]);
îÅ‚20 4 -3Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
A := ïÅ‚ -3 40 2śł
ïÅ‚ śł
ðÅ‚ 4 3 20ûÅ‚
> b:=Vector([19,83,70]);
îÅ‚ 19Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
b := ïÅ‚ 83śł
ïÅ‚ śł
ðÅ‚ 70ûÅ‚
> X:=Vector(n,symbol=x);
îÅ‚ x1 Å‚Å‚
ïÅ‚ śł
X := ïÅ‚ x2 śł
ïÅ‚ śł
ïÅ‚ śł
ïÅ‚ śł
x3
ðÅ‚ ûÅ‚
> for i to n do r||i:=A[i,1..n].X=b[i] end do;
r1 := 20 x1 + 4 x2 - 3 x3 = 19
r2 := -3 x1 + 40 x2 + 2 x3 = 83
r3 := 4 x1 + 3 x2 + 20 x3 = 70
4 . Za pomocÄ… komendy GenerateEquations
> with(LinearAlgebra):
> row:=GenerateEquations(A,[seq(x[i],i=1..n)],b); # lista równań
row := [20 x1 + 4 x2 - 3 x3 = 19, -3 x1 + 40 x2 + 2 x3 = 83, 4 x1 + 3 x2 + 20 x3 = 70 ]
> for i to n do r||i:=row[i]; end do;
r1 := 20 x1 + 4 x2 - 3 x3 = 19
r2 := -3 x1 + 40 x2 + 2 x3 = 83
r3 := 4 x1 + 3 x2 + 20 x3 = 70
>
Metody rozwiÄ…zywania
Metoda Gaussa
A x = b
> A0:=Array([[20,4,-3],[-3,40,2],[4,3,20]]);
îÅ‚20 4 -3Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
A0 := ïÅ‚ -3 40 2śł
ïÅ‚ śł
ðÅ‚ 4 3 20ûÅ‚
> b0:=Array([19,83,70]);
b0 := [19, 83, 70 ]
ai(k -1)
,k
(
ai(k ) = ai(k -1) -akk -1) k =1,2,...,n -1
j j
(
akk -1) , j
, k
i = k +1... n
ai(k -1)
,k
(
j = k... n
bi(k ) = bi(k -1) -bkk -1)
(
akk -1)
, k
> for k to n-1 do
for i from k+1 to n do
for j from k+1 to n do
A||(k)[i,j]:=A||(k-1)[i,j]-A||(k-1)[i,k]/A||(k-1)[k,k]*A||(k-1)[
k,j];
b||(k)[i]:=b||(k-1)[i]-A||(k-1)[i,k]/A||(k-1)[k,k]*b||(k-1)[k];
end do:
end do:
end do:
n
ëÅ‚öÅ‚
1
(i-1)
xi =- ai(i-1)xj ÷Å‚, i = n,n -1, ...1
"
(
aiii-1) ìÅ‚bi j
j=i+1
íÅ‚Å‚Å‚
> for i from n by -1 to 1 do
x[i]:=1/A||(i-1)[i,i]*(b||(i-1)[i]-add(A||(i-1)[i,j]*x[j],j=i+1.
.n)):
end do:
> seq(x[i],i=1..n);
1, 2, 3
> x:='x';
x := x
Metoda Jordana
> r1;r2;r3;
20 x1 + 4 x2 - 3 x3 = 19
-3 x1 + 40 x2 + 2 x3 = 83
4 x1 + 3 x2 + 20 x3 = 70
> coeff(lhs(r||1),x[1]);
20
> for i to n do
for j to n do
r||i:=r||i/coeff(lhs(r||i),x[i]):
if j<>i then
r||j:=r||j-coeff(lhs(r||j),x[i])*r||i:
end if;
end do;
end do;
> for i to n do r||i end do;
x1 = 1
x2 = 2
x3 = 3
> x:='x':
Rozwiązanie za pomoca wzorów Cramera
> with(LinearAlgebra):
> A,b;
îÅ‚20 4 -3Å‚Å‚ îÅ‚ 19Å‚Å‚
ïÅ‚ śł ïÅ‚ śł
ïÅ‚ -3 40 2śł, 83śł
śł ïÅ‚ śł
ïÅ‚ ïÅ‚
ïÅ‚ śł ïÅ‚ śł
ðÅ‚ 4 3 20ûÅ‚ ðÅ‚ 70ûÅ‚
> Ap:=
;
îÅ‚20 4 -3 19Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
Ap := ïÅ‚ -3 40 2 83śł
ïÅ‚ śł
ðÅ‚ 4 3 20 70ûÅ‚
> W:=Determinant(A);
W := 16659
> for i to n do
A||i:=ColumnOperation(Ap,[i,n+1]):
x[i]:=Determinant(A||i[1..n,1..n])/W:
end do:
> for i to n do x[i] end do;
1
2
3
> x:='x':
>
RozwiÄ…zanie za pomocÄ… macierzy odwrotnej
> x:=A^(-1).b;
îÅ‚ 1Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
x := ïÅ‚ 2śł
ïÅ‚ śł
ðÅ‚ 3ûÅ‚
> x:='x':
RozwiÄ…zanie za pomocÄ… komendy solve
> r1:=20*x[1]+4*x[2]-3*x[3]=19;
r2:=-3*x[1]+40*x[2]+2*x[3]=83;
r3:=4*x[1]+3*x[2]+20*x[3]=70;
r1 := 20 x1 + 4 x2 - 3 x3 = 19
r2 := -3 x1 + 40 x2 + 2 x3 = 83
r3 := 4 x1 + 3 x2 + 20 x3 = 70
> roz:=solve({r||(1..n)},{seq(x[i],i=1..n)});
roz := { x3 = 3, x1 = 1, x2 = 2 }
RozwiÄ…zanie za pomocÄ… komendy LinearSolve
> x:=LinearSolve(A,b);
îÅ‚ 1Å‚Å‚
ïÅ‚ śł
ïÅ‚ śł
x := ïÅ‚ 2śł
ïÅ‚ śł
ðÅ‚ 3ûÅ‚
>
>
Wyszukiwarka
Podobne podstrony:
c cxx w09W09W09 IL aproksymacja cz 2(1)anl1 w09 lato2009W09 Interfejsy komunikacji bezprzewodowej irDA, BluetoothPodstawyProgramowania W09AM23 w09 Całki podwójnem1 w09MPiS30 W09 Podstawy statystyki matematycznejbal w09W09Multimedia W09W09 produkcja IIIW09 sprzeglaWM w09 2 w10 Energia oknoW09 Miedź i stopy miedziwięcej podobnych podstron