Нахождение определенного интнеграла методом Гаусса - 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]);
        }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы