matlab用于计算方法的源程序(4)

2019-04-23 19:00

以上两个函数用于下列函数的测试

function [x k t]=NewdonDampingToEquations(f,df,x0,yita,eps) %带阻尼因子的Newdon迭代格式求解非线性方程组

%[x k t]=NewdonDampingToEquations(f,df,x0,yita,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组

?:方程组的Jacobi矩阵 %x0:初始值

%yita:阻尼因子,为了克服Jacobi矩阵的奇异性 %eps:误差限 %

%应用举例:

%x0=[2.5;2.5];yita=1e-5;eps=0.5e-6;

%x=NewdonDampingToEquations(@NewdonDampingF,@NewdonDampingDF,x0,yita,eps) %[x

k]=NewdonDampingToEquations(@NewdonDampingF,@NewdonDampingDF,x0,yita,eps) %[x k

t]=NewdonDampingToEquations(@NewdonDampingF,@NewdonDampingDF,x0,yita,eps) %函数的最后两个参数也可以不写,默认情况下,yita=1e-4;eps=0.5e-6

%[x k t]=NewdonDampingToEquations(@NewdonDampingF,@NewdonDampingDF,x0) %[x k t]=NewdonDampingToEquations(@NewdonDampingF,@NewdonDampingDF,x0,yita)

if nargin==3 yita=\ eps=\end

if nargin==4 eps=\end

I=eye(size(df(x0))); tic; k=0; while 1

x=\此处可采用其他方法避免求逆 k=\

if norm(x-x0) < eps || k > 30 break; end

x0=x; end t=toc;

if k >= 30

disp('迭代次数太多。'); x=\ t=\end

13、牛顿下山法求解非线性方程组

测试函数见2(Newdon迭代法求解非线性方程组)

function [x k t]=NewdonDescendToEquations(f,df,x0,omiga,eps) %下降牛顿迭代法求解非线性方程组

%[x k t]=NewdonDescendToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组

?:方程组的Jacobi矩阵 %x0:初始值

%omiga:下降因子,通常在区间(0,1)内选择。当omiga=1时,即为Newdon迭代格式 %eps:误差限 %

%应用举例:

%x0=[0;0];eps=0.5e-6;

%x=NewdonDescendToEquations(@NewdonF,@NewdonDF,x0,omiga,eps) %[x k]=NewdonDescendToEquations(@NewdonF,@NewdonDF,x0,omiga,eps) %[x k t]=NewdonDescendToEquations(@NewdonF,@NewdonDF,x0,omiga,eps) %函数的最后两个参数也可以不写,默认情况下,omiga=0.8;eps=0.5e-6 %[x k t]=NewdonDescendToEquations(@NewdonF,@NewdonDF,x0) %[x k t]=NewdonDescendToEquations(@NewdonF,@NewdonDF,x0,omiga)

if nargin==3 omiga=\ eps=\end

if nargin==4 eps=\

end tic; k=0; while 1

x=\此处可采用其他方法避免求逆 k=\

if norm(x-x0) < eps || k > 30 break; end x0=x; end t=toc;

if k >= 30

disp('迭代次数太多。'); x=\ t=\end

14、简化牛顿法求解非线性方程组

测试函数见2(Newdon迭代法求解非线性方程组)

function [x k t]=NewdonSimplifyToEquations(f,df,x0,eps) %简化牛顿格式求解非线性方程组

%[x k t]=NewdonSimplifyToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组

?:方程组的Jacobi矩阵 %x0:初始值 %eps:误差限 %

%应用举例:

%x0=[0;0];eps=0.5e-6;

%x=NewdonSimplifyToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k]=NewdonSimplifyToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=NewdonSimplifyToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6

%[x k t]=NewdonSimplifyToEquations(@NewdonF,@NewdonDF,x0)

if nargin==3 eps=\end

x_const=x0; tic; k=0;

A=inv(df(x_const)); while 1

x=\此处可采用其他方法避免求逆 k=\

if norm(x-x0) < eps || k > 30 break; end x0=x; end t=toc;

if k >= 30

disp('迭代次数太多。'); x=\ t=\end

15、逆Broyden秩1方法求解非线性方程组

测试函数见2(Newdon迭代法求解非线性方程组)

function [x k t]=Broyden1InvToEquations(f,df,x0,eps) %逆Broyden秩1方法求解非线性方程组

%function [x k t]=Broyden1InvToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组

?:方程组的Jacobi矩阵 %x0:初始值 %eps:误差限 %

%应用举例:

%x0=[0;0];eps=0.5e-6;

%x=Broyden1InvToEquations(@NewdonF,@NewdonDF,x0,eps)

%[x k]=Broyden1InvToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=Broyden1InvToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写,默认情况下,eps=0.5e-6

%[x k t]=Broyden1InvToEquations(@NewdonF,@NewdonDF,x0)

if nargin==3 eps=\end tic; k=0;

B0=inv(df(x0)); while 1

x=\ k=\

if norm(x-x0) < eps || k> 30 break; end s=\ y=\

B=\ x0=x; B0=B; end t=toc;

if k >= 30

disp('迭代次数太多。'); x=\ t=\end

16、Jacobi迭代法求解线性方程组

function [x k]=EqtsJacobi(A,b,x0,eps) %Jacobi迭代法求解线性方程组Ax=b %[x k]=EqtsJacobi(A,b,x0,eps) %x:解向量,列向量 %k:迭代次数 %A:系数矩阵 %b:列向量


matlab用于计算方法的源程序(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:古诗文大赛试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: