Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практические / Пр №8.Обработка матриц

.odt
Скачиваний:
9
Добавлен:
17.04.2015
Размер:
15.57 Кб
Скачать

Практическое занятие №8. Обработка матриц.

//Решение СЛУ методом Гаусса

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

main()

{

const int n=4, m=4;

float c,M,max,s,a[n][m],b[n],x[n];

int i,j,k,r;

printf("vvesti matrizu 3*3\n");

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

for(j=0;j<m; j++)

scanf("%f",&a[i][j]);

printf("vvesti pravye thasty\n");

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

scanf("%f",&b[i]);

for (k=0;k<n;k++)

{

max=fabs(a[k][k]);

r=k;

for (i=k+1;i<n;i++)

if(fabs(a[i][k])>max)

{

max=fabs(a[i][k]);

r=i;

}

for (j=0;j<n;j++)

{

c=a[k][j];

a[k][j]=a[r][j];

a[r][j]=c;

}

c=b[k];

b[k]=b[r];

b[r]=c;

for (i=k+1;i<n;i++)

{

for(M=a[i][k]/a[k][k],j=k;j<n;j++)

a[i][j]-=M*a[k][j];

b[i]-=M*b[k];

}

}

for (i=n-1;i>=0;i--)

{

for (s=0,j=i+1;j<n;j++)

s+=a[i][j]*x[j];

x[i]=(b[i]-s)/a[i][i];

}

printf("\n massiv a\n");

for(i=0; i<n; i++){

for(j=0;j<m; j++)

printf("%f ",a[i][j]);

printf("\n");

}

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

printf("%f ",b[i]);

printf("\n");

printf("\n RESHENIE \n");

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

printf("%f ",x[i]);

printf("\n");

system("pause");

return 0;

}

//4 4

// 7.9X1+5.6X2+5.7X3-7.2X4=6.68

// 8.5X1-4.8X2+0.8X3+3.5X4=9.95

// 4.3X1+4.2X2-3.2X3+9.3X4=8.6

// 3.2X1-1.4X2-8.9X3+3.3X4=1.0

//

//X1= 0.967 X2=0.125 X3=0.426 x4=0.568

Домашнее задание.

162. Написать профамму, которая вычисляет определитель квад­ ратной матрицы второго порядка. Рекомендуемый вид экрана во время работы программы приведен ниже (введенные пользова­ телем данные выделены полужирным шрифтом). Введите матрицу второго порядка. После ввода элементов строки нажимайте <Enter> -> 5 -7 -> 1 3 Определитель матрицы 5.00 -7.00 1.00 3.00 Равен 22.00