数值分析24 非线性方程组的数值方法.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析24 非线性方程组的数值方法

第三节 非线性方程组的简单迭代法 二、简单迭代法及其收敛性 收敛速度 第四节 非线性方程组的Newton型算法 一、Newton-Raphson方法的迭代格式 二、同伦算法 三、拟牛顿法 第五节 无约束优化算法 一、高斯-牛顿法 二、有哪些信誉好的足球投注网站法 P=1,C1为线性收敛,P=2为平方收敛。 求解非线性方程组的同伦算法 %文件名:Homotopy.m function root = Homotopy(funcF,funcH,x,N,tol,Nmax) % 功能: 求解非线性方程组的同伦算法 % 输入: % funcF----- 原始方程函数句柄 % funcH----- 同伦方程函数句柄 % x ---- 初始迭代点 % N(可选) ---- 同伦参数t的划分数(默认是10) % tol(可选)---精度要求(默认是1e-4) % Nmax(可选)---最大迭代次数(默认100次) % 输出: % root--- -解向量 if size(x,1) == 1; x = x; end if nargin6;Nmax=100;end if nargin5 | isempty(tol); tol=1e-4;end if nargin4 | isempty(N);N=10;end k=0; x0=x; n=length(x); dx=tol+1; f0=tol+1; for m=1:N t=m/N; while (norm(dx)tol norm(f0)tol) kNmax [jac,f0] = JacobianH(x,funcF,funcH,x0,t); dx = jac\(-f0);x = x + dx; k=k+1; End dx=tol+1; f0=tol+1; root=x; k=0; end function [jac,f0] = JacobianH(x,func1,func2,x0,t) %计算同伦函数的Jacobian矩阵和函数值 h = 1.0e-6; n = length(x); jac = zeros(n); f0 = feval(func2,x,func1,x0,t); for i =1:n temp = x(i); x(i) = temp + h; f1 = feval(func2,x,func1,x0,t); x(i) = temp; jac(:,i) = (f1 - f0)/h; end 例 利用同伦算法求非线性方程组 取初值x(0) =(10,5)’,t的划分数N=4,精度tol=10-3。 首先定义方程函数 function f=fex8_6(x) %定义方程F(x)=0 f(1)=x(1)^2+x(2)^2-5; f(2)=x(1)^2-x(2)^2+3; f=f; 再定义同伦函数 f=HomotopyH(x,func,x0,t) %同伦函数 f0=feval(func,x0); f=feval(func,x)+(t-1)*f0; 然后运行以下主程序 x0=[10,5];tol=1e-3;N=4; root=Homotopy(@fex8_6,@HomotopyH,x0,N,tol) root = 1.0000 2.0000 把牛顿迭代格式变为 求解非线性方程组的Broyden秩1算法 %文件名:QuasiNewton.m function root=QuasiNewton(myfun,x,tol,N) % 功能:Broyden秩1拟牛顿法求解非线性方程组 % 输入: % myfun ---- 方程函数句柄 % x ---- 初始迭代点 % tol(可选)-精度要求(默认是1e-4) % Nmax(可选)-最大迭代次数(默认100次) % 输出: % root--- 解向量 n=length(x); if size(x,1)==1, x=x;end h=1e-4;B0=zeros(n);B1=zeros(n); f0=feval(myfun,x); for i=1:n temp=x(i);x(i)=x(i)+h;f1=feval(myfun,x); B0(:,i)=(f1-f0)/h;x(i)=temp; End dx=B0\(-f0);k=0; while norm(dx)tol kN x1=x+dx;s=dx; f1=feval(myfun,x1); y=f1-f0;B1=B0+(y-B0*s)*s/(s*s); B0=B1;f0=f1;x=x1;dx=B0\(-f0);k=k+

文档评论(0)

lifupingb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档