(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc

上传人:鲁** 文档编号:559749396 上传时间:2023-05-29 格式:DOC 页数:5 大小:23.04KB
返回 下载 相关 举报
(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc_第1页
第1页 / 共5页
(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc_第2页
第2页 / 共5页
(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc_第3页
第3页 / 共5页
(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc_第4页
第4页 / 共5页
(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc》由会员分享,可在线阅读,更多相关《(完整word版)c++求解非线性方程组的牛顿顿迭代法.doc(5页珍藏版)》请在金锄头文库上搜索。

1、(完整word版)c+求解非线性方程组的牛顿顿迭代法牛顿迭代法c+程序设计求解 0=xx-2x-y+0.5; 0=x*x+4y*y4;的方程includeinclude#define N 2 / 非线性方程组中方程个数、未知量个数 #define Epsilon 0.0001 / 差向量1范数的上限#define Max 100 /最大迭代次数using namespace std;const int N2=2N;int main()void ff(float xxN,float yyN); /计算向量函数的因变量向量yyNvoid ffjacobian(float xxN,float yyN

2、N);/ /计算雅克比矩阵yyNNvoid inv_jacobian(float yyNN,float invNN); /计算雅克比矩阵的逆矩阵invvoid newdundiedai(float x0N, float invNN,float y0N,float x1N); /由近似解向量 x0 计算近似解向量 x1float x0N=2.0,0.25,y0N,jacobianNN,invjacobianNN,x1N,errornorm;int i,j,iter=0; /如果取消对x0的初始化,撤销下面两行的注释符, 就可以由键盘向x0读入初始近似解向量for( i=0;ix0i;cout”初

3、始近似解向量:endl;for (i=0;iN;i+)coutx0i ; coutendl;coutendl;doiter=iter+1;cout第 iter 次迭代开始”endl; /计算向量函数的因变量向量 y0ff(x0,y0); /计算雅克比矩阵 jacobianffjacobian(x0,jacobian); /计算雅克比矩阵的逆矩阵 invjacobianinv_jacobian(jacobian,invjacobian); /由近似解向量 x0 计算近似解向量 x1 newdundiedai(x0, invjacobian,y0,x1); /计算差向量的1范数errornorme

4、rrornorm=0;for (i=0;iN;i+)errornorm=errornorm+fabs(x1i-x0i);if (errornormEpsilon) break;for (i=0;iN;i+)x0i=x1i; while (iterMax);return 0;void ff(float xxN,float yyN) /调用函数float x,y; int i; x=xx0;y=xx1;yy0=xx2*xy+0。5; yy1=xx+4*y*y4; /计算初值位置的值 cout向量函数的因变量向量是: ”endl;for( i=0;iN;i+) coutyyi ; coutendl;

5、coutendl;void ffjacobian(float xxN,float yyNN) float x,y; int i,j;x=xx0;y=xx1;/jacobian have nn element /计算函数雅克比的值yy00=2x-2;yy01=1;yy10=2*x;yy11=8y; cout雅克比矩阵是: ”endl;for( i=0;iN;i+) for(j=0;jN;j+) coutyyij” ”; coutendl; coutendl;void inv_jacobian(float yyNN,float invNN)float augNN2,L; int i,j,k; co

6、ut”开始计算雅克比矩阵的逆矩阵 :endl; for (i=0;iN;i+) for(j=0;jN;j+) augij=yyij; for(j=N;jN2;j+)if(j=i+N) augij=1;else augij=0; for (i=0;iN;i+) for(j=0;jN2;j+) coutaugij” ”; coutendl;coutendl; for (i=0;iN;i+) for (k=i+1;kN;k+) L=-augki/augii;for(j=i;jN2;j+) augkj=augkj+Laugij; for (i=0;iN;i+) for(j=0;jN2;j+) cout

7、augij” ; coutendl;cout0;i-) for (k=i1;k=0;k-) L=augki/augii;for(j=N21;j=0;j) augkj=augkj+Laugij; for (i=0;iN;i+) for(j=0;jN2;j+) coutaugij” ; coutendl;cout=0;i) for(j=N21;j=0;j)augij=augij/augii;for (i=0;iN;i+) for(j=0;jN2;j+) coutaugij” ”; coutendl; for(j=N;jN2;j+) invijN=augij;coutendl;cout”雅克比矩阵的逆矩阵: endl;for (i=0;iN;i+) for(j=0;jN;j+) coutinvij ”; coutendl;coutendl;void newdundiedai(float x0N, float invNN,float y0N,float x1N)int i,j;float sum=0;for(i=0;iN;i+) sum=0; for(j=0;jN;j+) sum=sum+invij*y0j;x1i=x0i-sum; cout”近似解向量:”endl;for (i=0;iN;i+) coutx1i” ; coutendl;coutendl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号