Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Метод Гаусса. Постановка задачи:Дана система линейных уравнений
Постановка задачи: Дана система линейных уравнений
A11*x1+A12*x2+A13*x3+A14*x4=B1
A21*x1+A22*x2+A23*x3+A24*x4=B2
A31*x1+A32*x2+A33*x3+A34*x4=B3
A41*x1+A42*x2+A43*x3+A44*x4=B4
найти точное решение методом Гаусса.
Запись системы линейных уравнений в матричном виде
| Программа на языке CИ
#include < iostream>
#include < cmath>
#include < iomanip>
using namespace std;
int main()
{ double a[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}};
double b[4]={8, 10, 9, 7};
double x[4];
int n, k, i, j;
n=4;
double c, s;
for(k=0; k< n-1; k++)
for(i=k+1; i< n; i++)
{
c=a[i][k]/a[k][k];
a[i][k]=0;
for(j=k+1; j< n; j++)
a[i][j]=a[i][j]-c*a[k][j];
b[i]=b[i]-c*b[k];
}
x[n-1]=b[n-1]/a[n-1][n-1];
for (i=n-1; i> =0; i--)
{
s=0;
for(j=i+1; j< n; j++)
{s=s+a[i][j]*x[j];
x[i]=(b[i]-s)/a[i][i];
}
}
cout< < " reshenie" < < endl;
for (i=0; i< n; i++)
cout< < x[i];
return 0; }
|
| Метод простой итерации.
Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е.
Программа на языке CИ
#include < iostream>
#include < cmath>
#include < iomanip>
using namespace std;
int main()
{ double
A[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}};
double B[4]={8, 10, 9, 7};
double X0[4], X1[4];
double eps, tochnost, max_tochnost, s;
int k, kmax, i, j;
cout< < " Vvedite tochnost" < < endl;
cin> > eps;
cout< < " Vvedite max chislo iter" < < endl;
cin> > kmax;
cout.precision(5);
cout.setf(ios:: left);
for(i=0; i< 4; i++) X0[i]=0;
k=0;
while(fabs(max_tochnost)> eps)
{
if(k> =kmax) break;
k=k+1;
cout< < setw(5)< < k;
max_tochnost=-100;
for(i=0; i< 4; i++)
{s=0;
for(j=0; j< 4; j++)
if(i! =j) s=s+A[i][j]*X0[j];
X1[i]=(B[i]-s)/A[i][i];
cout< < setw(10)< < X1[i];
tochnost=fabs(X1[i]-X0[i]);
if(tochnost> max_tochnost)
max_tochnost=tochnost;
}
cout< < endl;
for(i=0; i< 4; i++) X0[i]=X1[i];
}
cout< < endl;
cout< < " Otvet" < < endl;
for(i=0; i< 4; i++)
cout< < setw(10)< < X1[i];
cout< < endl;
cout< < " Chislo iter=" < < k;
return 0; }
|
| Метод Зейделя.
Постановка задачи: Дана система линейных уравнений. Найти приближённое решение с точностью е.
Программа на языке CИ
#include < iostream>
#include < cmath>
#include < iomanip>
using namespace std;
int main()
{ double A[4][4]={{5, 1, 1, 1}, {1, 7, 1, 1}, {1, 1, 6, 1}, {1, 1, 1, 4}};
double B[4]={8, 10, 9, 7};
double X0[4], X1[4];
double eps, tochnost, max_tochnost, s;
int k, kmax, i, j;
cout< < " Vvedite tochnost" < < endl;
cin> > eps;
cout< < " Vvedite max chislo iter" < < endl;
cin> > kmax;
cout.precision(5);
cout.setf(ios:: left);
for(i=0; i< 4; i++) X0[i]=0;
k=0;
while(fabs(max_tochnost)> eps)
{
if(k> =kmax) break;
k=k+1;
cout< < setw(5)< < k;
max_tochnost=-100;
for(i=0; i< 4; i++)
{s=0;
for(j=0; j< 4; j++)
if(i! =j) s=s+A[i][j]*X0[j];
X1[i]=(B[i]-s)/A[i][i];
cout< < setw(10)< < X1[i];
tochnost=fabs(X1[i]-X0[i]);
if(tochnost> max_tochnost)
max_tochnost=tochnost;
X0[i]=X1[i];
}
cout< < endl;
}
cout< < endl;
cout< < " Otvet" < < endl;
for(i=0; i< 4; i++)
cout< < setw(10)< < X1[i];
cout< < endl;
cout< < " Chislo iter=" < < k;
return 0; }
| | | | | |
|