C实现牛顿迭代解非线性方程组.docx

上传人:rrsccc 文档编号:8942849 上传时间:2021-01-26 格式:DOCX 页数:6 大小:68.48KB
返回 下载 相关 举报
C实现牛顿迭代解非线性方程组.docx_第1页
第1页 / 共6页
C实现牛顿迭代解非线性方程组.docx_第2页
第2页 / 共6页
C实现牛顿迭代解非线性方程组.docx_第3页
第3页 / 共6页
C实现牛顿迭代解非线性方程组.docx_第4页
第4页 / 共6页
C实现牛顿迭代解非线性方程组.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《C实现牛顿迭代解非线性方程组.docx》由会员分享,可在线阅读,更多相关《C实现牛顿迭代解非线性方程组.docx(6页珍藏版)》请在三一文库上搜索。

1、 料推荐C+实现牛顿迭代解非线性方程组(二元二次为例)求 解 0=x*x-2*x-y+0.5; 0=x*x+4*y*y-4; 的方程#include#include#define N 2/ 非线性方程组中方程个数、未知量个数#define Epsilon 0.0001/ 差向量 1 范数的上限#define Max100/ 最大迭代次数using namespace std;const int N2=2*N;int main()void ff(float xxN,float yyN);/ 计算向量函数的因变量向量yyNvoid ffjacobian(float xxN,float yyNN);

2、/计算雅克比矩阵 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 的初始化,撤销下面两行的注释符,就可以由键盘x 读入初始近似解向量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);/计算雅克比矩阵的逆矩阵invjacobian1 料推荐inv_jacobian(jacobian,invjacobian);/ 由近似解向量x0 计算近似解向量x1newdundiedai(x0, invjacobian,y0,x1);/ 计算差向量的1 范数 errornormerrornorm=0;

4、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=x*x-2*x-y+0.5;yy1=x*x+4*y*y-4;/计算初值位置的值cout 向量函数的因变量向量是:endl;for( i=0;iN;i+)coutyyi;coutendl;coutendl;void f

5、fjacobian(float xxN,float yyNN)float x,y;int i,j;x=xx0;y=xx1;/jacobian have n*n element / 计算函数雅克比的值 yy00=2*x-2;yy01=-1;yy10=2*x;2 料推荐yy11=8*y;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;cout 开始计算雅克比矩阵的逆矩阵:

6、 endl;for (i=0;iN;i+)for(j=0;jN;j+)augij=yyij;for(j=N;jN2;j+)if(j=i+N) augij=1;elseaugij=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+L*augij;for (i=0;iN;i+)3 料推荐 for(j=0;jN2;j+)coutaugij;coutendl;cout0;i-)for

7、(k=i-1;k=0;k-)L=-augki/augii;for(j=N2-1;j=0;j-)augkj=augkj+L*augij;for (i=0;iN;i+) for(j=0;jN2;j+)coutaugij;coutendl;cout=0;i-)for(j=N2-1;j=0;j-)augij=augij/augii;for (i=0;iN;i+) for(j=0;jN2;j+)coutaugij;coutendl;for(j=N;jN2;j+)invij-N=augij;coutendl;cout 雅克比矩阵的逆矩阵:endl;for (i=0;iN;i+)4 料推荐 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;5

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1