metobl lab 4 313B u42 Markiewicz Majka


Politechnika Świętokrzyska
Laboratorium Metod obliczeniowych
Temat:
Grupa 313B:
Wykonanie zadania U42
Paweł Markiewicz
Dawid Majka
1. Opis metody przybliżonej dla układów równań liniowych
1. 1 Metoda Gaussa-Jordana
Metoda ta stanowi pewną modyfikację metody Gaussa. Otóż przekształca się układ równań
do układu w którym macierz współczynników jest macierzą jednostkową
AX=B ®ð EX=B(n)
wg następującego algorytmu. Dzielimy obustronnie pierwszy wiersz układu równań przez
1)
(1
ai(1
a11)
współczynnik a następnie mnożymy przekształcony pierwszy wiersz przez współczynnik i
(i =ð 2, 3, ..., n). Otrzymamy
odejmujemy od i-tego wiersza
(2 (2 (2) (2)
x1 +ð a12) x2 +ð a13) x3 +ð Lð +ð a1n xn =ð b1
(2 (2 ( (
a22) x2 +ð a23) x3 +ð Lð +ð a22) xn =ð b22)
n
(2 (2 ( (
a32) x2 +ð a33) x3 +ð Lð +ð a32) xn =ð b32)
n
Mð Mð Oð Mð Mð
( ( (2 (
an2) x2 +ð an2) x3 +ð Lð +ð ann) xn =ð bn2)
2 3
(
(
a11)
b11)
j
( (2)
a12) =ð b1 =ð
j
(1 (1
a11) (1
a11) ( j =ð 2, 3, ..., n) a11) Ä…ð 0
gdzie
( ( 1) (
1) (2)
aij2) =ð aij1) -ð ai(1 a12) ,
bi(2) =ð bi(1) -ð ai(1 b1
(i, j =ð 2, 3, ..., n)
j
.
(2
a22)
W otrzymanym układzie równań dzielimy drugi wiersz przez współczynnik a następnie mnożymy
2)
ai(2
(i =ð1, 3, ..., n)
przekształcony drugi wiersz przez współczynnik i odejmujemy od i-tego wiersza .
Otrzymamy
(3 (3 (3)
x1 +ð a13) x3 +ð Lð +ð a1n) xn =ð b1
(3 ( (
x2 +ð a23) x3 +ð Lð +ð a23) xn =ð b23)
n
(3 ( (
a33) x3 +ð Lð +ð a33) xn =ð b33)
n
Mð Oð Mð Mð
( (3 (
an3) x3 +ð Lð +ð ann) xn =ð bn3)
3
(
(
a22j)
b22)
( (
a23j) =ð b23) =ð
(2 (2
a22) (2
a22) ( j =ð 3, 4, ..., n) a22) Ä…ð 0
gdzie
( ( 2) (
2) (
aij3) =ð aij2) -ð ai(2 a23j) ,
bi(3) =ð bi(2) -ð ai(2 b23)
(i =ð1, 3, ..., n, j =ð 3, 4, ..., n )
.
KontynuujÄ…c obliczenia po  k krokach otrzymamy
( (k (k
x1 +ð a1,k +ð1) xk +ð1 +ð Lð +ð a1n +ð1) xn =ð b1 +ð1)
k +ð1
( ) ( (
x2 +ð a2kk+ð11 xk +ð1 +ð Lð +ð a2k +ð1) xn =ð b2k +ð1)
, +ð n
Oð Mð Mð =ð Mð
( ) (k (
xk +ð akkk+ð11xk +ð1 +ð Lð +ð akn +ð1) xn =ð bkk +ð1)
, +ð
Mð Mð Mð
( ) (k (
ankk+ð11xk +ð1 +ð Lð +ð ann+ð1) xn =ð bnk +ð1) [12]
, +ð
(
(
akjk )
bkk )
( (
akjk +ð1) =ð bkk +ð1) =ð
(k (k (k
akk ) akk ) Ä…ð 0
akk ) ( j =ð k +ð1, k +ð 2, ..., n)
gdzie
( ( ( (
( (
aijk+ð1) =ð aijk ) -ð aikk )akjk+ð1) ,
bi(k+ð1) =ð bi(k ) -ð aikk )bkk+ð1)
(i =ð1, 2, ..., n, i Ä…ð k j =ð k +ð1, ..., n )
.
k =ð1, 2, ..., n -ð1)
Po  n-1 krokach otrzymamy (realizujemy obliczenia wg wzoru dla
(n) (n)
x1 +ð a1n xn =ð b1
( (
x2 +ð a2n) xn =ð b2n)
n
Oð Mð Mð
( ) ( )
xn-ð1 +ð ann1,n xn =ð bnn1
-ð -ð
(n (
ann) xn =ð bnn)
(n
ann)
W ostatnim n-tym kroku wystarczy podzielić ostatnie równanie przez współczynnik a następnie
xn
wyrugować zmienną z równań 1,2 do n-1, czyli rozwiązaniem jest:
(
bnn)
xn =ð
(n (n
ann) ann) Ä…ð 0 [13]
(n)
xi =ð bi(n) -ð ain xn i =ð1, 2, ..., n -ð1.
(k
akk ) Ä…ð 0
(k =ð1, 2, ..., n)
W trakcie eliminacji Gaussa-Jordana współczynniki . Aby warunek ten był
spełniony należy również stosować metodę wyboru elementu podstawowego.
Kod programu
public class JavaApplication5 {
public static double[][] c;
public static void wyswietlRownania(double[][] c) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (j < 3) {
if (c[i][j] < 0)
System.out.print(" " + c[i][j] + "x" + (j + 1));
else
System.out.print(" + " + c[i][j] + "x" + (j +
1));
}
else
System.out.print(" = " + c[i][j]);
}
System.out.println(" ");
}
}
public static void oblicz() {
double[][] cTmp = new double[3][4];
double[][] cTmp2 = new double[3][4];
System.arraycopy(c, 0, cTmp, 0, 3);
System.arraycopy(c, 0, cTmp2, 0, 3);
double x1=0.0, x2=0.0, x3=0.0;
int n = 3;
for (int s = 0; s < (n - 1); s++) {
for (int i = (s + 1); i < n; i++) {
for (int j = (s + 1); j <= n; j++) {
cTmp[i][j] = cTmp2[i][j] - (cTmp2[i][s] /
cTmp2[s][s]) * c[s][j];
}
System.arraycopy(cTmp, 0, cTmp2, 0, 3);
}
}
System.out.println("\nWyniki:");
x3 = cTmp[2][3] / cTmp[2][2];
x2 = (cTmp[1][3] - cTmp[1][2] * x3)/cTmp[1][1];
x1 = (cTmp[0][3] - cTmp[0][1] * x2 - cTmp[0][2] *
x3)/cTmp[0][0];
System.out.println("x1: "+x1+", x2: "+x2+", x3: "+x3);
}
public static void main(String[] args) {
c = new double[3][4];
c[0][0] = 1.53;
c[0][1] = -1.65;
c[0][2] = -0.76;
c[0][3] = 2.18;
c[1][0] = 0.86;
c[1][1] = 1.17;
c[1][2] = 1.84;
c[1][3] = 1.95;
c[2][0] = 0.32;
c[2][1] = -0.65;
c[2][2] = 1.11;
c[2][3] = -0.47;
wyswietlRownania(c);
oblicz();
}
}
Komunikaty wyświetlane przez program
Bibliografia
·ð http://platforma.polsl.pl/rau2/pluginfile.php/10374/mod_resource/content/0/Lab/Uklady_R
ownan_Liniowych.pdf
·ð Instrukcja laboratoryjna z zajęć MObl13_L08A.uklady_.pdf


Wyszukiwarka

Podobne podstrony:
metobl lab 6 313B A117 Markiewicz Majka
metobl lab 7 313B r Markiewicz Majka
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
lab chemia korozja
lab tsp 3
Lab
Konsp Lab TK ZiIP sem3d 1st
lab Projektowanie filtrow
Lab transopt instr

więcej podobnych podstron