Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- const int N = 3;
- void razn(double *m1, double *m2, double *m3){
- int l;
- for(l = 0; l < N; l++) m3[l] = m1[l] - m2[l];
- return;
- }
- void zvezda(double **m1, double *m2, double *m3)
- {
- int i, j;
- double s;
- for (i=0; i<N; i++)
- {
- s=0;
- for (j=0;j<N;j++)
- s = s + m1[i][j]*m2[j];
- m3[i] = s;
- }
- return;
- }
- void shag(double **m1, double *m2,double *m3, double *m4)
- {
- int i, j;
- double s1=0, s2=0;
- for (i=1; i<N; i++)
- s1 = s1 + m1[0][i]*m3[i];
- m2[0] = (m4[0] - s1)/m1[0][0];
- for (i=1; i<(N-1); i++)
- {
- s1=0;
- s2=0;
- for (j=0; j<i; j++)
- s1 = s1+ m1[i][j]*m2[j];
- for (j=i+1; j<N; j++)
- s2 = s2 + m1[i][j]*m3[j];
- if (m1[i][i]!=0)
- m2[i] = (m4[i]- s1 - s2)/m1[i][i];
- else
- printf ("\n error");
- }
- s2 = 0;
- for (i=0; i<(N-1); i++)
- s2 = s2+ m1[N-1][i]*m2[i];
- m2[N-1] = (m4[N-1] - s2)/m1[N-1][N-1];
- return;
- }
- void main ()
- {
- int i,j;
- double **A;
- double *b, *xk1, *r, *xk, *t, *e;
- double c, sum, help, bam;
- A = (double **) malloc (N * sizeof(double));
- for(i = 0; i < N; i++)
- A[i] = (double *) malloc (N * sizeof(double));
- b = (double *) malloc (N * sizeof(double));
- xk1 = (double *) malloc (N * sizeof(double));
- r = (double *) malloc (N * sizeof(double));
- xk = (double *) malloc (N * sizeof(double));
- t = (double *) malloc (N * sizeof(double));
- e = (double *) malloc (N * sizeof(double));
- for (i=0; i<N; i++)
- {
- for (j=0; j<N; j++)
- scanf (" %lf ", &A[i][j]);
- }
- for (i=0; i<N; i++)
- scanf (" %lf ", &b[i]);
- for (i=0; i<N; i++)
- scanf (" %lf ", &xk[i]);
- for (i=0; i<N; i++)
- {
- e[i] = 0;
- t[i] = 0;
- }
- //ezda(A, xk, t);
- razn (t,b, r);
- bam = 1;
- for (i=0; i<N; i++)
- {
- if (r[i] = e[i])
- bam = bam*1.0;
- else
- bam = bam*0.0;
- }
- while (bam != 1.0)
- {
- shag(A, xk1, xk, b);
- for (i=0; i<N; i++)
- xk[i] = xk1[i];
- for (i=0; i<N; i++)
- t[i] = e[i];
- zvezda (A, xk1, t);
- razn (t,b, r);
- bam = 1;
- for (i=0; i<N; i++)
- {
- if (r[i] = e[i])
- bam = bam*1.0;
- else
- bam = bam*0.0;
- }
- }
- printf ("\n sha budet otvet \n");
- for (i=0; i<N; i++)
- printf (" %lf ", xk[i]);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement