下载此文档

matlab实现牛顿迭代法求解非线性方程组.pdf


文档分类:高等教育 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍
matlab 实现牛顿迭代法求解非线性方程组已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+)^2+sin(x3)+=0 exp(-x1*x2)+20*x3+(10*pi-3)/3=0 求解要求精度达到 ————————————————————————————————首先建立函数 fun 储存方程组编程如下将 保存到工作路径中: function f=fun(x); % 定义非线性方程组如下% 变量 x1 x2 x3 % 函数 f1 f2 f3 syms x1 x2 x3 f1=3*x1-cos(x2*x3)-1/2; f2=x1^2-81*(x2+)^2+sin(x3)+; f3=exp(-x1*x2)+20*x3+(10*pi-3)/3; f=[f1 f2 f3]; ————————————————————————————————建立函数 dfun 用来求方程组的雅克比矩阵将 保存到工作路径中: function df=dfun(x); % 用来求解方程组的雅克比矩阵储存在 dfun 中 f=fun(x); df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')]; df=conj(df'); ————————————————————————————————编程牛顿法求解非线性方程组将 保存到工作路径中: function x=newton(x0,eps,N); con=0; % 其中 x0 为迭代初值 eps 为精度要求 N 为最大迭代步数 con 用来记录结果是否收敛 for i=1:N; f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)}); df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)}); x=x0-f/df; for j=1:length(x0); il(i,j)=x(j); end if norm(x-x0)<eps con=1; break; end x0=x; end % 以下是将迭代过程写入 txt 文档文件名为 fid=fopen('','w'); fprintf(fid,'iteration'); for j=1:length(x0) fprintf(fid,' x%d',j); end for j=1:i fprintf(fid,'\n%6d ',j); for k=1:length(x0) fprintf(fid,' %',il(j,k)); end end if con==1 fprintf(fid,'\n 计算结果收敛! '); end if con==0 fprintf(fid,'\n 迭代步数过多可能不收敛! '); end fclose(fid); ————————————————————————————————运行程序在 matlab 中输入以下内容 newton([ -],,20) —————————————————————————————

matlab实现牛顿迭代法求解非线性方程组 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人phl0420371
  • 文件大小0 KB
  • 时间2016-07-14
最近更新