Читайте также: |
|
Заметим, что , следовательно, условие сходимости выполнено.
Зададим . В поставленной задаче
Текст программы
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
#include <stdio.h>
#include <algorithm>
using namespace std;
double Eps = 0.001;
double residual (double X[4], double K[4])
{
int p=0;
double s[4];
for(int i=0; i<4; i++)
s[i] = X[i] - K[i];
sort(s,s+4);
return s[3];
}
void Output(int i, double X[4], double E)
{
cout << i << "\t";
for(int i=0; i<4; i++){
cout << fixed << setprecision(12) << X[i] << "\t";
}
cout << E << endl;
}
void Simple_iter(double X[4], double A[4][4], double B[4])
{
int i = 0;
double K[4];
for (int q = 0; q < 4; q++)
X[q] = B[q];
Output(i,X, 0);
do{
for (int q = 0; q < 4; q++)
K[q] = X[q];
for (int i=0; i<4; i++){
X[i] = A[i][0]*K[0] + A[i][1]*K[1] + A[i][2]*K[2] + A[i][2]*K[2] + B[i];
}
i++;
Output(i,X, residual(X,K));
}
while(residual(X, K) > Eps);
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "rus");
double X[4],
A[4][4] = {{0.23,-0.04,0.21,-0.18},{0.45,-0.23,0.06,0.0},{0.26,0.34,-0.11,0.0},{0.05, -0.26, 0.34, -0.12}},
B[4] = {1.24,-0.88,0.62,-1.17};
cout << "Итер.\tx1\t\tx2\t\tx3\t\tx4\t\tЭпсилон" << endl;
Simple_iter(X,A,B);
cout << endl << endl;
system ("pause");
return 0;
}
Вывод программы
Дата добавления: 2015-12-01; просмотров: 33 | Нарушение авторских прав