- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于拟Newton法解非线性方程组的数值算法 (吴志华 中国计量学院信息工程学院 310018)关键字:非线性方程组 牛顿法1?理论背景我们先考虑线性方程,线性方程组的解便不难得出了与线性方程相比,非线性方程问题无论是从理论上还是从计算公式上,都要复杂得多,计算方程的根既无一定章程可寻也无直接法可言,求解高次方程组的根,求解含有指数和正弦函数的超越方程的零点,牛顿(I . Newton)提出了方程求根的一种迭代方法,被后人称为牛顿算法,人们一直用牛顿算法,改善牛顿算法,不断推广算法的应用范围,可以说是数值计算方面的最有影响的计算方法对于方程式,如果是线性函数,则它的求根是容易的,其基本思想是将非线性方程式逐步归结为某种线性方程来求解2?主要理论考虑方程组
其中均为多元函数, 就可写成
当,且中至少有一个是自变量 的非线性函数时,则称方程组为非线性方程组求根的直接推广,实际上只要把单变量函数看成向量函数则可将单变量方程求根方法推广到方程组的一个近似根 将函数的分量在用多元函数泰勒展开,并取其线性部分,则可表示为
令上式右端为零,得到线性方程组
其中
称为为雅可比(Jacobi)矩阵,并记解为,则得
这就是解非线性方程组的牛顿法3?算法 牛顿法主要思想是用 进行迭代 的雅可比矩阵,再求过求出它的逆,当它达到某个精度时即停止迭代 具体算法如下:首先宏定义方程组 ,确定步长和精度;
求的雅可比矩阵;
可用求出雅可比矩阵;求雅可比矩阵的逆;
将右乘一个单位矩阵,通过单位矩阵变换实现求 的逆,用指针来存贮雅可比矩阵与其逆的相乘;用来迭代;当精度大于时,重复执行2——5步,直到精度小于或等于停止迭代,就是最后的迭代结果其中4?代码#include iostream.h
#include stdlib.h
#include math.h
#include conio.h
#define f0(x1,x2) (x1+2*x2-3)
#define f1(x1,x2) (2*x1*x1+x2*x2-5)
#define x_ 0.000001
#define matrixNum 2
double *matrixF2(double *x);
int y=0;
void main()
{
int i,j,n;
double p,*x;
double *b;
double *matrixF; //矩阵F double *matrixF_; //矩阵F的雅可比矩阵的逆 b=(double *)malloc(matrixNum);
matrixF=(double *)malloc(matrixNum);
matrixF_=(double *)malloc(matrixNum*matrixNum);
cout请输入初值:; for(i=0;imatrixNum;i++)
cin*(x+i);
do
{
p=0.0;
for(i=0;imatrixNum;i++)
*(b+i)=0;
*matrixF=f0(*x,*(x+1));
*(matrixF+1)=f1(*x,*(x+1));
matrixF_=matrixF2(x);
for(i=0;imatrixNum;i++)
{
for(j=0;jmatrixNum;j++)
*(b+i)+=*(matrixF_+i*matrixNum+j)*(*(matrixF+j));
*(x+i)=*(x+i)-*(b+i);
cout*(x+i) ;
}
coutendl;
for(i=0;imatrixNum;i++)
p+=pow(*(b+i),2);
y++;
}while(sqrt(p)x_);
cout停止迭代,最终迭代结果为*x,*(x+1)endl;
delete [] matrixF;
delete [] matrixF_;
getch();
}
double *matrixF2(double *x)
{
int i,j;
double t;
double *matrixF1; //矩阵F的雅可比矩阵
您可能关注的文档
最近下载
- 血透室护士在医疗行为中的职业暴露与职业防护专家讲座.pptx VIP
- 水利工程事故应急方案【精选资料】.doc VIP
- 西奥扶梯XO-9800电气原理图纸.pdf
- 2025年中级注册安全工程师《安全生产法律法规》考试真题及答案解析.docx VIP
- 配送中食材卫生保障措施.docx VIP
- 国家科学技术学术著作出版基金资助力度与科技学术著作出版成本初探.pdf VIP
- DBJ50T-323-2019 滨江步道技术标准 .docx VIP
- 2025年电竞教育机构运营模式与盈利分析.docx
- 5.2染色体变异课件(共47张PPT)人教版(2019)高中生物学必修2(内嵌音频+视频).pptx VIP
- 【复习资料】00642传播学概论(章节复习要点).doc VIP
原创力文档


文档评论(0)