Програма решения уравнений методом Гауса, но есть одна ошибка:
#include "stdafx.h"
float systgaus(float,float,float);
int _tmain(int argc, _TCHAR* argv[])
{
float A[]={5,0.1,0.2,0.1,4,-0.1,0.1,-0.2,3};
float B[]={10,20,-4.5},X[3];
systgaus(A,B,X);
printf("\n x1=%f,x2=%f,x3=%f", X[0],X[1],X[2]);
return 0;
}
float systgaus (float A0[],float B0[],float X[])
{
int i,j,k;
float A[3][3],B[3],S,D,C;
for(i=0;i<3;i++)
{
B[i]=B0[i]; A[0][i]=A0[i]; A[1][i]=A0[i+3]; A[2][i]=A0[i+6];
}
for(i=0;i<3;i++)
{
D=A[i][i];B[i]=B[i]/D;
for(j=i;j<3;j++) A[i][j]=A[i][j]/D;
for(k=(i+1);k<3;k++)
{
C=A[k][i]; B[k]=B[k]-B[i]*C;
for(j=i;j<3;j++) A[k][j]=A[k][j]-A[i][j]*C;
}
}
X[2]=B[2];
for(k=1;k>0;k--)
{
S=0; for(j=2;j>k;j--) S=S+X[j]*A[k][j]; X[k]=B[k]-S;
}
}
float systgaus(float*,float*,float*);
Спасибо большое. После всех исправлений все получилось. А про масивы нечего не понял(если можно объесните что именно).
#include "stdafx.h"
float systgaus(float* , float* , float* );
int _tmain(int argc, _TCHAR* argv[])
{
float A[]={1.6,-0.2,0.4,-0.2,1.8,-0.1,0.3,-0.1,2};
float B[]={10,20,-4.5},X[3];
systgaus(A,B,X);
printf("\n x1=%f, x2=%f, x3=%f", X[0],X[1],X[2]);
return 0;
}
float systgaus (float A0[],float B0[],float X[])
{
int i,j,k;
float A[3][3],B[3],S,D,C;
for(i=0;i<3;i++)
{
B[i]=B0[i]; A[0][i]=A0[i]; A[1][i]=A0[i+3]; A[2][i]=A0[i+6];
}
for(i=0;i<3;i++)
{
D=A[i][i];B[i]=B[i]/D;
for(j=i;j<3;j++) A[i][j]=A[i][j]/D;
for(k=(i+1);k<3;k++)
{
C=A[k][i]; B[k]=B[k]-B[i]*C;
for(j=i;j<3;j++) A[k][j]=A[k][j]-A[i][j]*C;
}
}
X[2]=B[2];
for(k=1;k>=0;k--)
{
S=0; for(j=2;j>k;j--)
S=S+X[j]*A[k][j]; X[k]=B[k]-S;
}
return 1;
}
М | Просьба использовать правильные тэги! code=cpp Lapp |
#include "stdafx.h"Обрати внимание, теперь программа будет работать как для 3-х уравнений, так и для 4-х, и т.д. Достаточно только изменить N, и впечатать нужные данные...
float systgaus(float* , float* , float* );
#define N 4
int _tmain(int argc, _TCHAR* argv[])
{
int i;
float A[N*N] = {8, 5, -3, 4, 2, 2, -1, 1, 3, 3, -2, 2, 4, 3, -1, 2};
float B[N] = {-8, 6, -2, -4}, X[4];
systgaus(A,B,X);
printf("\n");
for(i = 0; i < N; i++)
{
printf(" x%d=%f%c", i, X[i], (i == N-1)?' ':',');
}
return 0;
}
float systgaus (float A0[],float B0[],float X[])
{
int i,j,k;
float A[N][N],B[N],S,D,C;
for(i=0;i<N;i++)
{
B[i]=B0[i];
for(j = 0; j<N; j++)
{
A[j][i]=A0[i+N*j];
}
}
for(i=0;i<N;i++)
{
D=A[i][i];B[i]=B[i]/D;
for(j=i;j<N;j++) A[i][j]=A[i][j]/D;
for(k=(i+1);k<N;k++)
{
C=A[k][i]; B[k]=B[k]-B[i]*C;
for(j=i;j<N;j++) A[k][j]=A[k][j]-A[i][j]*C;
}
}
X[N-1]=B[N-1];
for(k=N-2;k>=0;k--)
{
S=0;
for(j=N-1;j>k;j--) S=S+X[j]*A[k][j];
X[k]=B[k]-S;
}
return 1;
}