列主元消去法求解方程组(C语言)
2018-02-10 10:33
260 查看
用列主元消去法解下列方程组:
#include<stdio.h> #include<math.h> void main() { void zhu(float *,int,float[]); //声明函数zhu int i; float x[4]; //x为解 float c[4][5]={1,1,0,3,4, //矩阵 2,1,-1,1,1, 3,-1,-1,3,-3, -1,2,3,-1,4}; float y[4]; float d[4][5]={1,-1,2,-1,-8, 2,-2,3,-3,-20, 1,1,1,0,-2, 1,-1,4,3,4}; zhu(c[0],4,x); zhu(d[0],4,y); for(i=0;i<=3;i++) printf("x[%d]=%f\n",i+1,x[i]); //输出结果 printf("\n"); for(i=0;i<=3;i++) printf("y[%d]=%f\n",i+1,y[i]); } //列主元消去法 void zhu(float *c,int n,float x[]) { int i,j,t,k; float p; for(i=0;i<=n-2;i++) { k=i; for(j=i+1;j<=n-1;j++) if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i)))) k=j; if(k!=i) for(j=i;j<=n;j++) { p=*(c+i*(n+1)+j); *(c+i*(n+1)+j)=*(c+k*(n+1)+j); *(c+k*(n+1)+j)=p; } //找最大的 9ed2 调换位置 for(j=i+1;j<=n-1;j++) { p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i)); //求系数 for(t=i;t<=n;t++) *(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t)); } } for(i=n-1;i>=0;i--) { for(j=n-1;j>=i+1;j--) (*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j)); //求解 x[i]=(*(c+i*(n+1)+n))/(*(c+i*(n+1)+i)); } }
相关文章推荐
- LU分解法求解方程组(C语言)
- 列选主元Guass消元法求解方程组+c语言
- 改进平方根法求解方程组(C语言)
- 追赶法求解方程组(C语言)
- 雅克比迭代法与高斯塞德尔迭代法求解方程组(C语言)
- 三对角阵的LU分解和三对角方程组的求解(C语言)
- C语言编程 N皇后问题求解
- C语言之基本算法26—佩尔方程求解
- C语言用顺序栈求解迷宫问题
- [图论]用Edmonds-Karp算法求解最大流问题(C语言实现)
- 遗传算法的C语言实现(二)-----以求解TSP问题为例
- (C语言)分支界限法求解旅行商(TSP)问题
- C语言进阶-第6讲:递归法问题求解(易列写递归方程)
- C语言 迷宫求解
- 改进欧拉法求解微分方程初值(C语言)
- 用C语言实现“百鸡问题”的求解
- c语言实现,用最小二乘法求解方程数多于未知变量的线性方程组的最适解(即矛盾方程组)
- 已知两圆圆心坐标及半径求两圆交点 (C语言|参数方程求解)
- ai1835-宇航员 C语言 暴力求解
- C语言初步-第35讲: 问题求解方法——迭代(Bessel函数 )