预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共46页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数值计算方法中的一些常用算法的Matlab源码,这些程序都是原创,传上来仅供大家参考,不足之处请大家指正,切勿用作商业用途……说明:这些程序都是脚本函数,不可直接运行,需要创建函数m文件,保存时文件名必须与函数名相同,懂一点儿Matlab的朋友应该知道。每个程序的说明里面都附了测试例子这些程序在Vista操作系统下,使用MatlabR2008b(7.7版本)编写1、Newdon迭代法求解非线性方程 function[xkt]=NewdonToEquation(f,df,x0,eps)%牛顿迭代法解线性方程%[xkt]=NewdonToEquation(f,df,x0,eps)%x:近似解%k:迭代次数%t:运算时间%f:原函数,定义为内联函数%Df:函数的倒数,定义为内联函数%x0:初始值%eps:误差限%%应用举例:%f=inline('x^3+4*x^2-10');%df=inline('3*x^2+8*x');%x=NewdonToEquation(f,df,1,0.5e-6)%[xk]=NewdonToEquation(f,df,1,0.5e-6)%[xkt]=NewdonToEquation(f,df,1,0.5e-6)%函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6%[xkt]=NewdonToEquation(f,df,1)ifnargin==3eps=0.5e-6;endtic;k=0;while1x=x0-f(x0)./df(x0);k=k+1;ifabs(x-x0)<eps||k==30break;endx0=x;endt=toc;ifk==30disp('迭代次数太多。');x='';end2、Newdon迭代法求解非线性方程组 functiony=NewdonF(x)%牛顿迭代法解非线性方程组的测试函数%定义是必须定义为列向量y(1,1)=x(1).^2-10*x(1)+x(2).^2+8;y(2,1)=x(1).*x(2).^2+x(1)-10*x(2)+8;return; functiony=NewdonDF(x)%牛顿迭代法解非线性方程组的测试函数的导数y(1,1)=2*x(1)-10;y(1,2)=2*x(2);y(2,1)=x(2).^+1;y(2,2)=2*x(1).*x(2)-10;return;以上两个函数仅供下面程序的测试 function[xkt]=NewdonToEquations(f,df,x0,eps)%牛顿迭代法解非线性方程组%[xkt]=NewdonToEquations(f,df,x0,eps)%x:近似解%k:迭代次数%t:运算时间%f:方程组(事先定义)%df:方程组的导数(事先定义)%x0:初始值%eps:误差限%%说明:由于虚参f和df的类型都是函数,使用前需要事先在当前目录下采用函数M文件定义%另外在使用此函数求解非线性方程组时,需要在函数名前加符号“@”,如下所示%%应用举例:%x0=[0,0];eps=0.5e-6;%x=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)%[xk]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)%[xkt]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)%函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6%[xkt]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)ifnargin==3eps=0.5e-6;endtic;k=0;while1x=x0-inv(df(x0))*f(x0);%此处可采用其他方法避免求逆k=k+1;ifnorm(x-x0)<eps||k==15break;endx0=x;endt=toc;ifk==15disp('迭代次数太多。');x='';end3、Lagrange插值法提供两个程序,采用了不同的方法 functionf=InterpLagrange(x,y,x0)%构造Lagrange插值多项式%此函数中借助向量卷积来求Lagrange基函数,运算速度较快%f=InterpLagrange(x,y,x0)%f:插值多项式或者是插值多项式在x0处的值%x:节点%y:函数值%x0:某一测试点%%调用格式:%f=InterpLagrange(x,y)返回插值多项式%f=InterpLagrange(x,y,x0)返回插值多项式在点x0处的值%举例:%x=[0.320.340.36];y=[0.3145670.3334870.352274];x0=0.33;%f=InterpLagrange(x,y)%f=Int