70,037
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 5
void gauss(float** A,float* b);
float x[SIZE]; //近似解
int main(void)
{
int i, j;
float sum = 0;
//Ax=b
float A[SIZE][SIZE];
float b[SIZE];
srand((unsigned)time(NULL));
printf("A=\n");
for (i = 0; i < SIZE; i++)
{
for (j = 0; j < SIZE; j++)
{
A[i][j] = rand()/(RAND_MAX + 1.0);
printf("%f\t", A[i][j]);
}
printf("\n");
}
printf("b=\n");
for (i = 0; i < SIZE; i++)
{
for (j = 0; j < SIZE; j++)
{
sum += A[i][j];
}
b[i] = sum;
printf("%f\n", b[i]);
}
gauss(A, b);
gauss_pivot(A, b);
;
return 0;
}
void gauss(float** A,float* b)
{
int i,j,k;
float m,s;
for (i = 0; i < SIZE - 1; i++)
{
for (j = i + 1; j < SIZE; i++)
{
m = A[j][i] / A[i][i];
for (k = j; k < SIZE; k++)
{
A[j][k] = A[j][k] - m * A[i][k];
}
b[j] = b[j] - m * b[i];
}
}
x[SIZE - 1] = b[SIZE - 1] / A[SIZE - 1][SIZE - 1];
printf("x[%d]=%f\n", SIZE, x[SIZE - 1]);
for (j = SIZE - 2; j >= 0; j--)
{
s = b[j];
for (k = j + 1; k < SIZE; k++)
{
s = s - A[j][k] * x[k];
}
x[j] = s / A[j][j];
printf("x[%d]=%f\n", k, x[j]);
}
return;
}