C语言实现矛盾方程求解

阅读: 评论:0

C语言实现矛盾方程求解

C语言实现矛盾方程求解

 矛盾方程组,非常好理解,其实为翻译上述图片,当你图片看懂了,原理就懂了:

代码实现:

#include<stdio.h> 
# define M 100
int main()
{int i,j,n,w1,w2,k1,k2,t,r,k,w,e,o1,o2,e1;double x[M],y[M],a[M][M],b[M][M],c[M],d[M],h[M][M],max,f,s;//录入数据printf("输入未知数的个数n:");scanf("%d",&n);printf("输入方程行数K1:");scanf("%d",&k1);printf("输入方呈列数K2:");//不包括y值那一列scanf("%d",&k2);printf("输入增广矩阵数据:"); for(i=0;i<k1;i++){for(j=0;j<k2;j++){scanf("%lf",&a[i][j]); b[j][i]=a[i][j];//b矩阵为a矩阵的转置	}scanf("%lf",&y[i]);} //处理数据//赋初值为0for(i=0;i<k2*k2;i++){c[i]=0;d[i]=0;}w1=0;for(i=0;i<k2;i++){   for(j=0;j<k2;j++){  for(e1=0;e1<4;e1++){c[w1]=c[w1]+a[e1][j]*b[i][e1];	}	w1=w1+1;}}for(i=0;i<3;i++){for(e1=0;e1<4;e1++){d[i]=d[i]+b[i][e1]*y[e1];}}t=0;for(i=0;i<k2;i++){for(j=0;j<k2;j++){h[i][j]=c[t++];}}for(i=0;i<k2;i++){for(j=0;j<k2;j++){printf("%lf  ",h[i][j]);}printf("%lf",d[i]);printf("n");}//用列主元高斯消元法求解for(r=0;r<k2-1;r++){	k=r;max=h[r][r];for(w=r;w<k2-1;w++){if(h[w+1][r]>=h[w][r]){max=h[w+1][r];k=w+1;}}if(k>=r){	for(e=r;e<k2;e++){f=h[r][e];h[r][e]=h[k][e];h[k][e]=f;}f=d[r];d[r]=d[k];d[k]=f;	}   for(i=r+1;i<k2;i++){   f=1.0*h[i][r]/h[r][r];d[i]=d[i]-1.0*f*d[r];for(j=r;j<k2;j++){h[i][j]=h[i][j]-1.0*f*h[r][j];}}}//回代 x[k2-1]=1.0*d[k2-1]/h[k2-1][k2-1];for(i=k2-2;i>=0;i--){   f=0;for(j=i+1;j<k2;j++){s=1.0*h[i][j]*x[j];f=f+s;}x[i]=1.0*(d[i]-f)/h[i][i];	}for(i=1;i<k2+1;i++){printf("x[%d]=%lfn",i,x[i-1]); }return 0;
}

本后面采用列主元高斯消元法进行矩阵求解,代码不难,但是如何利用代码分析矛盾方程组,值得思考。我利用上述代码发现了一个有趣的现象,并讲给同桌听了,他大为震撼哈哈哈哈哈,希望,大家也能发现更多有趣的现象。 

本文发布于:2024-01-28 01:21:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063760983803.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:方程   矛盾   语言
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23