c语言解线性方程组函数 c++线性方程组求解( 二 )


float **p = NULL;
float b[N * (N + 1)] ={2,1,1,28,
5,2,2,66,
10,5,4,137};
/* 3元方程组c语言解线性方程组函数的数据,自己可以随意修改数值,还可以修改N 和浮点数组实现任意多阶方程组求解*/
float ** build_array(int r, int c)
{
int i = 0;
float *p1 = malloc(r * c * sizeof(float));
float **p2 = malloc( r * sizeof(float *));
for(i = 0; ir; i++)
{
p2[i] = p1[i * c];
}
return p2;
}
void free_room(float **p)
{
free(*p);
free(p);
}
void init(int row, int cul)
{
int i, j;
int cnt = 0;
for(i = 0; irow; i++)
{
for(j = 0; jcul; j++)
{
p[i][j] = b[cnt++];
}
}
}
void gs(float **p, int row, int cul)/* 高斯消元法*/
{
int i = 0;
int j = 0;
float tmp1,tmp2;
for(i = 0; irow; i++)
{
tmp1 = p[i][i];
for(j = 0; jcul; j++)
{
p[i][j] /= tmp1;
}
int k;
for(k = i + 1; krow; k++)
{
tmp2 = p[k][i];
for(j = 0; jcul; j++)
{
p[k][j] -= tmp2 * p[i][j];
}
}
}
}
void qiujie(int hang)
{
float y[hang];
int m = 0;
float tmp3;
int z = 0;
for(m = hang-1; m = 0; m--)
{
tmp3 = 0;
for(z = hang-1; zm; z--)
{
tmp3 += p[m][z] * y[z];
}
printf("y[%d] = %f\n", m, y[m] = (p[m][hang] - tmp3));
}
}
int main(void)
{
int m = 0;
int x = 0;
p = build_array(N, N+1);
init(N, N+1);
gs(p, N, N+1);
for(m = 0; mN; m++)
{
for(x = 0; xN + 1;x++)
{
printf(" %2f ", p[m][x]);
}
printf("\n");
}
qiujie(N);
free_room(p);
}
C语言线性方程组求解,很急!/*
方程组维数 : 3
控制精度 : 0.000001
增广矩阵第1行(空格隔开):3 4 -6 12
增广矩阵第2行(空格隔开):1 -2 1 -3
增广矩阵第3行(空格隔开):3 2 -1 11
整理完毕c语言解线性方程组函数,此时方程组为 :
1 1.33333 -2 4
0 1 -0.9 2.1
0 0 1 1
方程c语言解线性方程组函数的解为 :
2 3 1
Press any key to continue
*/
#include iostream.h
#include math.h
#define N 100
int main() {
int n,k,i,j,m;
double A[N][N + 1],eps,temp;
cout"方程组维数 : ";
cinn;
cout"控制精度 : ";
【c语言解线性方程组函数 c++线性方程组求解】 cineps;
for(i = 0;in;i++) {
cout"增广矩阵第"i + 1"行(空格隔开):";
for(j = 0;jn + 1;j++) cinA[i][j];
}
for(k = 0; kn; ++k) {
m = k;
for(i = k + 1; in; ++i) {
if(fabs(A[i][k])fabs(A[m][k]))
m = i;
}
if(fabs(A[m][k]) = eps) return 0;
if(m != k) {
for(i = k;in + 1;i++) {
temp = A[k][i];
A[k][i] = A[m][i];
A[m][i] = temp;
}
}
temp = A[k][k];
for(i = k; in + 1; ++i) A[k][i] /= temp; // 主元系数“归一”划
for(i = k + 1;in;i++) { // 消元
temp = A[i][k];
for(j = k; jn + 1; ++j) {
A[i][j] -= A[k][j] * temp;
}
}
}
cout"整理完毕c语言解线性方程组函数,此时方程组为 :"endl;
for(i = 0;in;i++) {
for(j = 0;jn + 1;j++)
coutA[i][j]" ";
coutendl;
}
for(i = n - 2;i = 0;i--) {
for(j = i + 1;jn;j++)
A[i][n] -= A[i][j] * A[j][n];
}
cout"方程c语言解线性方程组函数的解为 :"endl;
for(i = 0; in;i++) coutA[i][n]" ";
coutendl;
return 0;
}
高斯先列主消元法求解线性方程组AX=b C语言其中用到c语言解线性方程组函数了高斯先列主消元法#include iostream.h

推荐阅读