- •Учреждение образования
- •Лабораторная работа №1 Тема: «Прямые методы решения систем линейных алгебраических уравнений»
- •Изученные теоретические вопросы: Метод Гаусса
- •Решение:
- •Лабораторная работа №2
- •Изученные теоретические вопросы:
- •Лабораторная работа №3
- •Изученные теоретические вопросы:
- •Лабораторная работа №4
- •Изученные теоретические вопросы: Метод квадратного корня
- •Лабораторная работа №5
- •Изученные теоретические вопросы: Метод отражений
- •Лабораторная работа №6 Решить систему линейных алгебраических уравнений методом вращений.
- •Изученные теоретические вопросы:
- •Решение:
- •Лабораторная работа№7 Тема: «Прямые методы решения систем линейных алгебраических уравнений»
- •Изученные теоретические вопросы: Метод ортогонализации
- •Лабораторная работа №8
- •Изученные теоретические вопросы: Метод сопряженных градиентов
- •Лабораторная работа № 9
- •Лабораторная работа № 10
- •Решение:
Решение:
int main(){
int n;
float a[4][4],a2[10][10],b[4],oq[4],q,s,x[4],sum,op=1;
printf("vvedite razmer matrix\n");
scanf("%d",&n);
printf("vvedite matrix and svobodnie elem\n");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
scanf("%f",&a[i][j]);
scanf("%f",&b[i]);
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a2[i][j]=a[i][j];
for(int i=0;i<n;i++){
q=a[i][i];
oq[i]=q;
for(int j=0;j<n;j++)
a[i][j]/=q;
b[i]/=q;
for(int k=i+1;k<n;k++){
s=a[k][i];
for(int j=i;j<n;j++)
a[k][j]-=a[i][j]*s;
b[k]-=b[i]*s;
}
}
x[n-1]=b[n-1];
for(int i=n-2;i>=0;i--){
sum=0;
for(int j=i+1;j<n;j++)
sum+=a[i][j]*x[j];
x[i]=b[i]-sum;
}
printf("poluchennie korni\n");
for(int i=0;i<n;i++)
printf("%.2f\n",x[i]);
getch();
}
|
Введенные данные |
Полученный результат |
Проверка |
|
|
0.77 1.79 0.26 |
2.21 -0.41 1.02 |
void main(){
int n,l;
float a[4][4],b[4],y,max,q,s,x[4],sum,op=1,oq[4],a2[10][10];
printf("vvedite razmernost\n");
scanf("%d",&n);
printf("vvedite matrix and svobodnie elem\n");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
scanf("%f",&a[i][j]);
scanf("%f",&b[i]);
}
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a2[i][j]=a[i][j];
for(int i=0;i<n;i++){
l=i;
max=fabs(a[i][i]);
for(int j=i;j<n;j++)
if(fabs(a[j][i])>max){
max=fabs(a[j][i]);
l=j;
}
if(i!=l){
for(int j=i;j<n;j++){
y=a[i][j];
a[i][j]=a[l][j];
a[l][j]=y;
}
y=b[i];
b[i]=b[l];
b[l]=y;
}
q=a[i][i];
oq[i]=q;
for(int j=0;j<n;j++)
a[i][j]/=q;
b[i]/=q;
for(int k=i+1;k<n;k++){
s=a[k][i];
for(int j=i;j<n;j++)
a[k][j]-=a[i][j]*s;
b[k]-=b[i]*s;
}
}
x[n-1]=b[n-1];
for(int i=n-2;i>=0;i--){
sum=0;
for(int j=i+1;j<n;j++)
sum+=a[i][j]*x[j];
x[i]=b[i]-sum;
}
printf("poluchennie korni\n");
for(int i=0;i<n;i++)
printf("%.2f\n",x[i]);
|
Введенные данные |
Полученный результат |
Проверка |
|
|
0.77 1.79 0.26 |
2.21 -0.41 1.02 |
– Г.
for(int i=0;i<n;i++)
op*=oq[i];
printf("opredelitel raven\n%.2f\n",op);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a2[i][j+n]=0;
for(int i=0;i<n;i++)
a2[i][i+n]=1;
for(int i=0;i<n;i++){
q=a2[i][i];
for(int j=0;j<2*n;j++)
a2[i][j]/=q;
for(int k=i+1;k<n;k++){
s=a2[k][i];
for(int j=0;j<2*n;j++)
a2[k][j]-=a2[i][j]*s;
}
float r;
for(int i=0;i<n-1;i++)
for(int k=1+i;k<n;k++){
r=a2[i][k];
for(int j=0;j<2*n;j++)
a2[i][j]-=a2[k][j]*r;
}
}
printf("obratnaja matrix\n");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
printf("%.2f ",a2[i][j+n]);
printf("\n");
}
getch();
}
|
Введенные данные |
Определитель |
Обратная матрица |
|
|
-1.31 |
0.2061 0 0.5044 0.2142 0 0.0825 0.4396 0 0.6793 |



