求用C语言解三元一次线性方程组

老师要求的课题,我实在搞不定,所以请高手解决... 老师要求的课题,我实在搞不定,所以请高手解决 展开
 我来答
gaoheng253
2012-03-01
知道答主
回答量:8
采纳率:0%
帮助的人:8.5万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>
#define N 3 /* 3个未知数,3个方程组 */
float **p = NULL;
float b[N * (N + 1)] ={2,1,1,28,
5,2,2,66,
10,5,4,137};
/* 3元方程组的数据, 自己可以随意修改数值, 还可以修改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; i < r; 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; i < row; i++)
{
for(j = 0; j < cul; 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; i < row; i++)
{
tmp1 = p[i][i];
for(j = 0; j < cul; j++)
{
p[i][j] /= tmp1;
}
int k;
for(k = i + 1; k < row; k++)
{
tmp2 = p[k][i];
for(j = 0; j < cul; 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; z > m; 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; m < N; m++)
{
for(x = 0; x < N + 1; x++)
{
printf(" %2f ", p[m][x]);
}
printf("\n");
}
qiujie(N);
free_room(p);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
栩箭
2010-03-09 · TA获得超过5310个赞
知道大有可为答主
回答量:3036
采纳率:0%
帮助的人:1637万
展开全部
输入数据以后判定一下解的情况,然后用克莱姆法则算一下.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
343360692
2010-03-11
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
也要
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式