Метод усовершенствованной простой итерации. Численное решение Системы Линейных Алгебраических Уравнений методом Гаусса

Автор работы: Пользователь скрыл имя, 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) Блок-схема программы

Содержимое работы - 1 файл

курсовая работа.doc

— 920.00 Кб (Скачать файл)

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]+k*a[l][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];}

} 
 

Информация о работе Метод усовершенствованной простой итерации. Численное решение Системы Линейных Алгебраических Уравнений методом Гаусса