Автор работы: Пользователь скрыл имя, 20 Ноября 2011 в 16:48, курсовая работа
Возникает вопрос, как это усовершенствование влияет на сходимость метода. Из формулы (3) видно, что при должно получиться . Последовательные поправки слишком малы; так как α > 1, усовершенствованный метод увеличит эти поправки и ускорит сходимость вычислений.
1.1) Метод усовершенствованной простой итерации 2
1.2) Листинг программы 3
1.3) Тестирование программы 4
1.4) График сходимости значений 4
1.5) Блок-схема программы 5
2.1) Численное решение Систем Линейных Алгебраических Уравнений методом Гаусса
6
2.2) Листинг программы 9
2.3) Тестирование программы 10
2.4) Блок-схема программы
for(int i = 0; i<n; i++)
mat[i] = new float [n+1];
float *otv=new float [n];
printf (RUS("Введите матрицу коэффициентов\n"));
vvod (mat, n);
preobr (mat, n);
resh(mat, otv, n);
printf (RUS("матрица ответов\n"));
vivodio(otv, n);
return 0;
}
//Функция вывода ответов
void vivodio(float *otv, int n)
{for (int j = 0; j < n; j++)
{printf ("%.2f\t ", otv[j]) ;}
printf ("\n");
}
//Функция ввода массива
void vvod (float **a, int k)
{
int i;
for (i = 0; i < k; i++)
scanf ("%f %f %f %f", &a[i][0], &a[i][1], &a[i][2], &a[i][3]);
}
//Функция вывода массива на экран
void vivod(float **a, int k, int l)
{ int i, j;
for (i = 0; i < k; i++)
{ for (j = 0; j < l; j++)
{printf ("%.2f\t ", a[i][j]) ;}
printf ("\n");}
printf ("\n");
}
//Функция преобразования
матрицы коэффициентов в
void preobr(float **a,int n)
{float k;
for (int l=0;l<n-1; l++)
{for (int j=l+1; j<n; j++)
{k=(-1)*a[j][l]/a[l][l];
for (int i=l; i<n+1; i++)
{a[j][i]=a[j][i]+
}}}
//Функция вычисления ответов
void resh(float **a, float *b, int n)
{float f;
for (int l=0; l<n; l++)
b[l]=0;
b[n-1]=a[n-1][n]/a[n-1][n-1];
for (int j=n-2; j>=0;j--)
{f=0;
for (int i=j; i<n;i++)
{f=f+a[j][i]*b[i];
}
b[j]=(a[j][n]-f)/a[j][j];}
}