Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <malloc.h>
  4. const int N = 3;
  5.  
  6.  
  7. void razn(double *m1, double *m2, double *m3){
  8.     int l;
  9.     for(l = 0; l < N; l++) m3[l] = m1[l] - m2[l];
  10.  
  11.     return;
  12. }
  13.  
  14. void zvezda(double **m1, double *m2, double *m3)
  15. {
  16.     int i, j;
  17.     double s;
  18.     for (i=0; i<N; i++)
  19.     {
  20.         s=0;
  21.         for (j=0;j<N;j++)
  22.             s = s + m1[i][j]*m2[j];
  23.         m3[i] = s;
  24.     }
  25.     return;
  26. }
  27.  
  28. void shag(double **m1, double *m2,double *m3, double *m4)
  29. {
  30.     int i, j;
  31.     double s1=0, s2=0;
  32.     for (i=1; i<N; i++)
  33.         s1 = s1 + m1[0][i]*m3[i];
  34.     m2[0] = (m4[0] - s1)/m1[0][0];
  35.     for (i=1; i<(N-1); i++)
  36.     {
  37.         s1=0;
  38.         s2=0;
  39.         for (j=0; j<i; j++)
  40.             s1 = s1+ m1[i][j]*m2[j];
  41.         for (j=i+1; j<N; j++)
  42.             s2 = s2 + m1[i][j]*m3[j];
  43.         if (m1[i][i]!=0)
  44.             m2[i] = (m4[i]- s1 - s2)/m1[i][i];
  45.         else
  46.             printf ("\n error");
  47.     }
  48.     s2 = 0;
  49.     for (i=0; i<(N-1); i++)
  50.         s2 = s2+ m1[N-1][i]*m2[i];
  51.     m2[N-1] = (m4[N-1] - s2)/m1[N-1][N-1];
  52.     return;    
  53. }
  54.  
  55. void main ()
  56. {
  57.  
  58.     int i,j;
  59.  
  60.     double **A;
  61.     double *b, *xk1, *r, *xk, *t, *e;
  62.     double c, sum, help, bam;
  63.     A = (double **) malloc (N * sizeof(double));
  64.     for(i = 0; i < N; i++)
  65.         A[i] = (double *) malloc (N * sizeof(double));
  66.     b = (double *) malloc (N * sizeof(double));
  67.     xk1 = (double *) malloc (N * sizeof(double));
  68.     r = (double *) malloc (N * sizeof(double));
  69.     xk = (double *) malloc (N * sizeof(double));
  70.     t = (double *) malloc (N * sizeof(double));
  71.     e = (double *) malloc (N * sizeof(double));
  72.  
  73.     for (i=0; i<N; i++)
  74.     {
  75.         for (j=0; j<N; j++)
  76.             scanf (" %lf ", &A[i][j]);
  77.  
  78.     }
  79.  
  80.     for (i=0; i<N; i++)
  81.         scanf (" %lf ", &b[i]);
  82.  
  83.     for (i=0; i<N; i++)
  84.         scanf (" %lf ", &xk[i]);
  85.  
  86.  
  87.  
  88.     for (i=0; i<N; i++)
  89.     {
  90.         e[i] = 0;
  91.         t[i] = 0;
  92.     }
  93.  
  94.  
  95.     //ezda(A, xk, t);
  96.     razn (t,b, r);
  97.     bam = 1;
  98.     for (i=0; i<N; i++)
  99.     {
  100.         if  (r[i] = e[i])
  101.             bam = bam*1.0;
  102.         else
  103.             bam = bam*0.0;
  104.     }
  105.  
  106.     while (bam != 1.0)
  107.     {
  108.         shag(A, xk1, xk, b);
  109.         for (i=0; i<N; i++)
  110.             xk[i] = xk1[i];
  111.         for (i=0; i<N; i++)
  112.             t[i] = e[i];
  113.         zvezda (A, xk1, t);
  114.         razn (t,b, r);
  115.         bam = 1;
  116.         for (i=0; i<N; i++)
  117.         {
  118.             if  (r[i] = e[i])
  119.                 bam = bam*1.0;
  120.             else
  121.                 bam = bam*0.0;
  122.         }
  123.  
  124.     }
  125.     printf ("\n sha budet otvet \n");
  126.     for (i=0; i<N; i++)
  127.         printf (" %lf ", xk[i]);
  128.  
  129.     return;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement