《计算方法 上机操作(c语言)》由会员分享,可在线阅读,更多相关《计算方法 上机操作(c语言)(5页珍藏版)》请在金锄头文库上搜索。
1、#include stdlib.h#include math.h#include stdio.h#define N 4int agaus(double aNN,double bN,int n);/高斯全主元法求 deltaX,具体见程序中注释void GetFun(double xN,double bN);/F(X),结果放在 b 里void GetJacobi(double xN,double JNN);/计算 F(X),结果放在 J 里double GetDeltaX(double JNN,double bN,double deltaXN);/求 deltaX 主程序,调用agausvoi
2、d UpdateX(double xN,double deltaXN);/xk+1=xk+deltaXvoid SolveNonlinear(double xN,double eps,int k);/非线性方程组主程序,迭代终止条件是最大迭代次数或者绝对值范数(街区距离)main() int i,k;double eps;double x4=1,1.0,1.0,1.0;double bN;eps=0.0000001; k=100;SolveNonlinear(x,eps,k);GetFun(x,b);printf(n);printf(n);for (i=0; ik)|(NormDeltaXd)
3、d=t; jsk=j;/记住列is=i;/记住行if (d+1.0=1.0)l=0;else /* if (jsk!=k)/列交换for (i=0;i=0;i-) t=0.0;for (j=i+1;j=0;k-)if (jsk!=k) t=bk; bk=bjsk; bjsk=t;*/free(js);return(1);double GetDeltaX(double JNN,double bN,double deltaXN)/求 deltaX 主程序,调用 agausint nResultFlag,i;double NormDeltaX;nResultFlag=agaus(J,b,N);if(nResultFlag)NormDeltaX=0;for (i=0;iN;i+)NormDeltaX=NormDeltaX+fabs(bi);deltaXi=bi;return NormDeltaX;void UpdateX(double x0N,double deltaXN)/xk+1=xk+deltaXint i;for (i=0;iN;i+)x0i=x0i-deltaXi;