Нахождение определенного интнеграла методом Гаусса - 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]);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д