数值分析各种代码Word下载.docx

上传人:wj 文档编号:13041763 上传时间:2022-10-03 格式:DOCX 页数:5 大小:21.47KB
下载 相关 举报
数值分析各种代码Word下载.docx_第1页
第1页 / 共5页
数值分析各种代码Word下载.docx_第2页
第2页 / 共5页
数值分析各种代码Word下载.docx_第3页
第3页 / 共5页
数值分析各种代码Word下载.docx_第4页
第4页 / 共5页
数值分析各种代码Word下载.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数值分析各种代码Word下载.docx

《数值分析各种代码Word下载.docx》由会员分享,可在线阅读,更多相关《数值分析各种代码Word下载.docx(5页珍藏版)》请在冰豆网上搜索。

数值分析各种代码Word下载.docx

1

x(j)=y(j)-u(j)*x(j+1);

拉格朗日

functionyh=lagrange(x,y,xh)

n=length(x);

m=length(xh);

yh=zeros(1,m);

c1=ones(n-1,1);

c2=ones(1,m);

fori=1:

xp=x([1:

i-1i+1:

n]);

yh=yh+y(i)*prod((c1*xh-xp'

*c2)./(x(i)-xp'

*c2));

end

线性

x=[x1,x2]y=[y1.y2]xh=[xh]

抛物线

X=[x1,x2,x3]y=[y1,y2,y3]xh=[xh]

牛顿差商(输入x,y为列向量)

function[p,q]=chashang(x,y)

p(:

1)=x;

2)=y;

forj=3:

n+1

p(1:

n+2-j,j)=diff(p(1:

n+3-j,j-1))./(x(j-1:

n)-x(1:

n+2-j));

q=p(1,2:

n+1)'

;

三次样条

x=[0123];

y=[0.200.52.01.5-1];

pp=csape(x,y,'

complete'

[breaks,coefs,npolys,ncoefs,dim]=unmkpp(pp)

最小二乘

x=[0.240.650.951.241.732.012.232.522.772.99]'

y=[0.23-0.26-1.1-0.450.270.1-0.290.240.561]'

A=[log(x)cos(x)exp(x)];

Z=A\y;

a0=Z

(1)

a1=Z

(2)

a2=Z(3)

x=[00.250.500.751.00];

y=[1.001.2841.64872.11702.7183];

p=polyfit(x,y,2)

a2=p

(1)

a1=p

(2)

a0=p(3)

复合中点

functionI=fmid(fun,a,b,n)

h=(b-a)/n;

x=linspace(a+h/2,b-h/2,n);

y=feval(fun,x);

I=h*sum(y);

复合梯形

functionI=ftrapz(fun,a,b,n)

x=linspace(a,b,n+1);

I=h*(0.5*y

(1)+0.5*y(n+1)+sum(y(2:

n)));

复合辛普森

functionI=fsimpson(fun,a,b,n)

x=linspace(a,b,2*n+1);

I=h/6*(y

(1)+y(2*n+1)+2*sum(y(3:

2:

2*n-1))+4*sum(y(2:

2*n)));

雅克比迭代

function[x,iter]=jacobi(A,b,tol)

D=diag(diag(A));

L=D-tril(A);

U=D-triu(A);

x=zeros(size(b));

foriter=1:

500

x=D\(b+U*x+L*x);

error=norm(b-A*x)/norm(b);

if(error<

tol)

break;

GS迭代

function[x,iter]=GS(A,b,tol)

x=(D-L)\(b+U*x);

SOR迭代

function[x,iter]=SOR(A,b,omega,tol)

x=(D-omega*L)\(omega*b+(1-omega)*D*x+omega*U*x);

二分法

functionv=f(x)

v=x^3-x-1;

functionx=erfenfa(f,a,b,tol)

ifnargin<

4

tol=1e-5;

fa=feval(f,a);

fb=feval(f,b);

whileabs(a-b)>

tol

x=(a+b)/2;

fx=feval(f,x);

ifsign(fx)==sign(fa)

a=x;

fa=fx;

elseifsign(fx)==sign(fb)

b=x;

fb=fx;

>

x=erfenfa('

f'

1,2)

牛顿法

function[x,it]=newton(f,g,x0,tol)

it=0;

done=0;

while~done

x=x0-feval(f,x0)/feval(g,x0);

it=it+1;

done=(norm(x-x0)<

=tol);

if~done

x0=x;

functionr=f(x)

r=polyval([1,2,10,-20],x);

functionr=g(x)

p=polyder([1,2,10,-20]);

r=polyval(p,x);

牛顿下山法

乘幂法

function[t,y]=chengmifa(a,xinit,ep)

v0=xinit;

[tv,ti]=max(abs(v0));

lam0=v0(ti);

u0=v0/lam0;

flag=0;

while~flag

v1=a*u0;

[tv,ti]=max(abs(v1));

lam1=v1(ti);

u0=v1/lam1;

err=abs(lam0-lam1);

iferr<

ep

flag=1

lam0=lam1;

t=lam1;

y=u0;

反幂法

function[t,y]=fanmifa(a,xinit,ep)

v1=inv(a)*u0;

flag=1;

t=1/lam1;

改进欧拉法

function[x,y]=odeIEuler(f,y0,a,b,n)

x=a:

h:

b;

y

(1)=y0;

yp=y(i)+h*feval(f,x(i),y(i));

yc=y(i)+h*feval(f,x(i+1),yp);

y(i+1)=1/2*(yp+yc);

functionr=f(x,y)

r=y-2*x/y;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1