Нахождение определенного интнеграла методом Гаусса - C (СИ)
Формулировка задачи:
нужно написать прогу для нахождения определенного интнеграла методом гаусса
Решение задачи: «Нахождение определенного интнеграла методом Гаусса»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <math.h> int i, j, k, z, p; float a[5][5], b[5][5]; float koef, e, e1, e2, e3, y; float x[5], x1[5]; int main() { e=0.001; printf("vvedit` koeficienty\n"); for (i=1; i<=3; i++) for (j=1; j<=4; j++) scanf ("%f", &a[i][j]); for (i=1; i<=3; i++) for (j=1; j<=4; j++) b[i][j]=a[i][j]; printf ("vuberit` metod:\n 1-gauss\n 2-zeidel\n"); scanf ("%i", &z); if (z==1) { for (p=1; p<=2; p++) for (i=p+1; i<=3; i++) { koef=-a[i][p]/a[p][p]; for (j=p;j<=4; j++) a[i][j]=a[i][j]+koef*a[p][j]; } for (i=3;i>=1; i--) { x[i]=a[i][4]; for (j=3; j>=1;j--) if(i==j) x[i]=x[i]/a[i][j]; else x[i]=x[i]-a[i][j]*x[j]; } for (i=1; i<=3; i++) printf("%f\n\n", x[i]); } else { for (i=1; i<=3; i++) { a[i][4]=0; for (j=1; j<=3; j++) a[i][4]=a[i][4]+b[j][i]*b[j][4]; } for (i=1; i<=3; i++) for (j=1; j<=3; j++) { a[i][j]=0; for (k=1; k<=3; k++) a[i][j]=a[i][j]+b[j][k]*b[k][i]; } for (i=1; i<=3; i++) x1[i]=a[i][4]/a[i][i]; do { for (i=1; i<=3; i++) { x[i]=x1[i]; x1[1]=(a[1][4]-a[1][2]*x[2]-a[1][3]*x[3])/a[1][1]; e1=fabs(x1[1]-x[1]); x1[2]=(a[2][4]-a[2][1]*x1[1]-a[2][3]*x[3])/a[2][2]; e2=fabs(x1[2]-x[2]); x1[3]=(a[3][4]-a[3][1]*x1[1]-a[3][2]*x1[2])/a[3][3]; e3=fabs(x1[3]-x[3]); } } while ((e1>e)&&(e2>e)&&(e3>e)); for (i=1; i<=3; i++) printf("%f\n\n", x[i]); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д