Приклади програм

//1)Розв’язання системи лінійних рівнянь методом простої ітерації

#include

#include

#include



using namespace std;

void main()

{

float a[4][4]={{0.13, 0.23, -0.44, -0.05},

{0.24, 0,-0.31, 0.15},

{0.06, 0.15, 0, -0.23},

{0.72, -0.08, -0.05, 0}};

float f[4]={2.13, -0.18, 1.44, 2.42};

float n, j, x[4], x0[4];

int i, q, c;

cout<<"Rozvjazok SLAR metodom iteraciy"<

cout<<"Zadana systema:"<

for (i=0; i<4; i++)

{

cout<<"x"<

<<"("<

}

n=-2;

for (i=0;i<=3;i++)

{

j=fabs(a[i][0])+fabs(a[i][1])+fabs(a[i][2])+fabs(a[i][3]);

if (n

}

cout.precision(3);

cout<

else

{

cout<<"Metod rozzbizhnyj"<

getch();

exit(1);

}

for (i=0; i<=3; i++) x[i]=f[i];

c=1;

do{

q=0;

for (i=0; i<=3; i++)

{

x0[i]=x[i];

x[i]=a[i][0]*x[0]+a[i][1]*x[1]+a[i][2]*x[2]+a[i][3]*x[3]+f[i];

if (fabs(x0[i]-x[i])<0.001) q++;

}

c++;

}while (q!=4);

cout.precision(3);

cout<<"Rozvjazok sustemu:"<

for (i=0; i<=3; i++) cout<<"x"<

cout.precision(0);

cout<

getch();

}

//2)Розв’язання системи лінійних рівнянь методом Гауса

#include

#include

#include



using namespace std;

void vuvid(float v[100][100], int q)

{

for (int i=0; i

{

for (int j=0; j<=q; j++)

if (j==q) cout<<"

cout<<"\n";

}

};

void vvod(float a[100][100], int q)

{

cout<<"Vvedit matrucjy koeficientiv\n";

for (int i=0; i

{

for (int j=0; j

{

cout<<"a["<

cin>>a[i][j];

}

}

cout<<"\n\nVvedit matrucjy vilnuh chleniv\n";

for (int i=0; i

{

int j;

j=q;

cout<<"b["<

cin>>a[i][j];

}

};

void tform(float v[100][100], int q)

{

float e;

for (int k=0; k

{

for (int i=1+k; i

{

e=v[i][k];

for (int j=0; j<=q; j++)

v[i][j]=v[i][j]-e/v[k][k]*v[k][j];

}

}

};

void xxx(float v[100][100], float x[100], int q)

{

float dx=0;

for (int i=0; i<100; i++)

x[i]=0;

for(int i=q-1; i>=0; i--)

{

dx=0;

for(int j=i; j

dx=dx+x[j]*v[i][j] ;

x[i]=(v[i][q]-dx)/v[i][i];

}

};

void main()

{

clrscr();

int q=3, p=0;

float a[100][100], x[100];

do {

cout<<"\n\n\tRozvjazok SLAR metodom Gaysa:\n\n";

cout<<"\n\t1) Obchuslutu zi standartnumu znachennjamu \n\n";

cout<<"\t2) Vvestu znachennja\n\n";

cout<<"\t3) Exit\n\n";

cout<<"Vash vubir (1, 2, 3)\t";

cin>>p;

if(p==3) exit(1);

if(p==2)

{

clrscr();

cout<<"\nVvedit kilkist rivnjan: ";

cin>>q;

if((q=100))

{

cout<<"Zaveluka kilkist rivnjan";

getch();

exit(1);

}

else

{

cout<<"\n";

vvod(a, q);

cout<<"\n\tObjednana matrucja\n";

vuvid(a, q);

}

}

if (p==1)

{

clrscr();

q=3;

a[0][0]=3.6; a[0][1]=1.8; a[0][2]=-4.7;

a[1][0]=2.7; a[1][1]=-3.6; a[1][2]=1.9;

a[2][0]=1.5; a[2][1]=4.5; a[2][2]=3.3;

a[0][3]=3.8; a[1][3]=0.4; a[2][3]=-1.6;

cout<<"\n\tObjednana matrucja\n";

vuvid(a, q);

}

tform(a, q);

xxx(a, x, q) ;

cout<<"\n\n\tRozvjazok sustemu\n\n";

for (int i=0; i

cout<<"x"<

getch();

}while(p!=3);

getch();

}

Контрольні питання

1) Назвіть методи розв’язання систем лінійних рівнянь.

2) Наведіть приклади прямих методів. Назвіть їх переваги та недоліки.

3) Наведіть приклади ітераційних методів. Назвіть їх переваги та недоліки.

4) Наведіть алгоритм методу простої ітерації розв’язання систем лінійних алгебраїчних рівнянь.

5) Назвіть умови збіжності методу простої ітерації.

6) Наведіть алгоритм методу Гауса розв’язання систем лінійних алгебраїчних рівнянь.

Лабораторна робота №2

vvp.deutsch-service.ru refamtx.ostref.ru vww.deutsch-service.ru referattiu.nugaspb.ru Главная Страница