同济大学数值分析报告matlab编程题总汇编Word文档格式.docx

上传人:b****6 文档编号:19040470 上传时间:2023-01-03 格式:DOCX 页数:19 大小:65.42KB
下载 相关 举报
同济大学数值分析报告matlab编程题总汇编Word文档格式.docx_第1页
第1页 / 共19页
同济大学数值分析报告matlab编程题总汇编Word文档格式.docx_第2页
第2页 / 共19页
同济大学数值分析报告matlab编程题总汇编Word文档格式.docx_第3页
第3页 / 共19页
同济大学数值分析报告matlab编程题总汇编Word文档格式.docx_第4页
第4页 / 共19页
同济大学数值分析报告matlab编程题总汇编Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

同济大学数值分析报告matlab编程题总汇编Word文档格式.docx

《同济大学数值分析报告matlab编程题总汇编Word文档格式.docx》由会员分享,可在线阅读,更多相关《同济大学数值分析报告matlab编程题总汇编Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

同济大学数值分析报告matlab编程题总汇编Word文档格式.docx

x=x1-feval(f,x1).*(x1-x0)./(feval(f,x1)-feval(f,x0));

x0=x1;

x1=x;

end

editf.m

functionv=f(x)

v=x.*log(x)-1;

editg.m

functionz=g(y)

z=y.^5+y-1;

[x1iter1]=gexianfa('

f'

1,3,1e-10)

x1=

1.7632

iter1=

6

[x2iter2]=gexianfa('

g'

0,1,1e-10)

x2=

0.7549

iter2=

8

3.使用GS迭代求解下述线性代数方程组:

editgsdiedai.m

function[xiter]=gsdiedai(A,x0,b,tol)

D=diag(diag(A));

L=D-tril(A);

U=D-triu(A);

x=x0;

while((norm(b-A*x)./norm(b))>

tol)

x0=x;

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

A=[521;

-142;

1-310];

b=[-12103]'

tol=1e-4;

x0=[000]'

[xiter]=gsdiedai(A,x0,b,tol);

x

x=

-3.0910

1.2372

0.9802

iter

iter=

4.用四阶Range-kutta方法求解下述常微分方程初值问题(取步长h=0.01)

editksf2.m

functionv=ksf2(x,y)

v=y+exp(x)+x.*y;

a=1;

b=2;

h=0.01;

n=(b-a)./h;

x=[1:

0.01:

2];

y

(1)=2;

fori=2:

(n+1)

k1=h*ksf2(x(i-1),y(i-1));

k2=h*ksf2(x(i-1)+0.5*h,y(i-1)+0.5*k1);

k3=h*ksf2(x(i-1)+0.5*h,y(i-1)+0.5*k2);

k4=h*ksf2(x(i-1)+h,y(i-1)+k3);

y(i)=y(i-1)+(k1+2*k2+2*k3+k4)./6;

y

调用函数方法

editRangekutta.m

function[xy]=Rangekutta(f,a,b,h,y0)

x=[a:

h:

b];

n=(b-a)/h;

y

(1)=y0;

k1=h*(feval(f,x(i-1),y(i-1)));

k2=h*(feval(f,x(i-1)+0.5*h,y(i-1)+0.5*k1));

k3=h*(feval(f,x(i-1)+0.5*h,y(i-1)+0.5*k2));

k4=h*(feval(f,x(i-1)+h,y(i-1)+k3));

[xy]=Rangekutta('

ksf2'

1,2,0.01,2);

5.取

,请编写Matlab程序,分别用欧拉方法、改进欧拉方法在

上求解初值问题。

editEuler.m

function[xy]=Euler(f,a,b,h,y0)

n=(b-a)./h;

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

editgaijinEuler.m

function[xy]=gaijinEuler(f,a,b,h,y0)

y1=y(i-1)+h*feval(f,x(i-1),y(i-1));

y2=y(i-1)+h*feval(f,x(i),y1);

y(i)=(y1+y2)./2;

editksf3.m

functionv=ksf3(x,y)

v=x.^3-y./x;

[xy]=Euler('

ksf3'

1,2,0.2,0.4)

1.00001.20001.40001.60001.80002.0000

y=

0.40000.52000.77891.21651.88362.8407

[xy]=gaijinEuler('

0.40000.58950.92781.46152.24643.3466

6.请编写复合梯形积分公式的Matlab程序,计算下面积分的近似值,区间等分

编写辛普森积分公式的Matlab程序,计算下面积分的近似值,区间等分

edittixingjifen.m

functions=tixingjifen(f,a,b,n)

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

y=zeros(1,length(x));

y=feval(f,x)

h=(b-a)./n;

s=0.5*h*(y

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

n))+y(n+1));

editsimpson.m

functionI=simpson(f,a,b,n)

h=(b-a)/n;

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

y=feval(f,x);

I=(h/6)*(y

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

2:

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

2*n))+y(2*n+1));

editksf4.m

functionv=ksf4(x)

v=1./(x.^2+1);

tixingjifen('

ksf4'

0,1,20)

ans=

0.7853

simpson('

0,1,10)

0.7854

editksf5.m

functionv=ksf5(x)

if(x==0)

v=1;

else

v=sin(x)./x;

(第二个函数‘ksf5’调用求积函数时,总显示有错误:

“NaN”,还没调试好。

见谅!

7.用

迭代方法对下面方程组求解,取初始向量

editJacobi.m

function[xiter]=Jacobi(A,x0,b,tol)

while(norm(A*x-b)/norm(b)>

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

A=[24-4;

333;

442];

b=[2-3-2]'

x0=[32-1]'

[x,iter]=Jacobi(A,x0,b,1e-4)

1

-1

3

 

8.用牛顿法求解方程

附近的根。

editNewton.m

function[xiter]=Newton(f,g,x0,tol)

done=0

while~done

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

done=norm(x-x0)<

=tol;

if~done,x0=x;

end

editksf6.m

functionv=ksf6(x)

v=x*cos(x)+2;

editksg6.m

functionz=ksg(y)

[xiter]=Newton('

ksf6'

'

ksg6'

2,1e-4)

2.4988

9.分别用改进乘幂法、反幂法计算矩阵A的按模最大特征值及其对应的特征向量、按模最小特征值及其对应的特征向量。

editep.m

function[t,x]=ep(A,x0,tol)

[tv0ti0]=max(abs(x0));

lam0=x0(ti0);

x0=x0./lam0;

x1=A*x0;

[tv1ti1]=max(abs(x1));

lam1=x1(ti1);

x1=x1./lam1;

while(abs(lam0-lam1)>

lam0=lam1;

[tv1ti1]=max(abs(x1));

lam1=x1(ti1);

t=lam1;

x=x1;

editfanep.m

function[t,x]=fanep(A,x0,tol)

x1=A\x0;

while(abs(1/lam0-1/lam1)>

t=1/lam1;

A=[126-6;

6162;

-6216];

x0=[10.5-0.5]'

[t,x]=ep(A,x0,tol)

t=

21.5440

1.0000

0.7953

-0.7953

[t,x]=fanep(A,x0,tol)

4.4560

-0.6287

0.6287

10.将积分区间n等分,用复合梯形求积公式计算定积分

比较不同

值时的误差(画出平面上log(n)-log(Error)图).

editksf7.m

functionv=ksf7(x)

v=sqrt(1+x.^2);

I=quad('

ksf7'

1,3);

n=1:

100;

fori=1:

100

x(i)=tixingjifen('

1,3,i);

error(i)=abs(I-x(i));

plot(log10(n),log10(error(n)))

11.用

editsor.m

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

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

A=[2-10;

-13-1;

0-12];

b=[18-5]'

x0=[10-1]'

[x,iter]=sor(A,x0,b,1.1,1e-4)

1.9999

3.0000

-1.0000

5

12.编程实现求解满足下列条件的区间[-1,2]上的三次样条函数S(x),并画出此样条函数的图形:

xi-1012

f(xi)-1010

f(xi)'

0-1

functionspl

x=[-1012]

y=[0-1010-1]

pp=csape(x,y,'

complete'

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

2

if-1<

=xh<

=0

yh=coefs(1,1)*(xh+1).^3+coefs(1,2)*(xh+1).^2+coefs(1,3)*(xh+1)+coefs(1,4)

elseif0<

=1

yh=coefs(2,1)*(xh).^3+coefs(2,2)*(xh).^2+coefs(2,3)*(xh)+coefs(2,4)

elseif1<

=2

yh=coefs(3,1)*(xh-1).^3+coefs(3,2)*(xh-1).^2+coefs(3,3)*(xh-1)+coefs(3,4)

return

plot(xh,yh,'

13.二分法程序

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

ifnargin<

4

tol=1e-12

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

else

其他

A=[1234;

5678];

A

A=

1234

5678

[mn]=size(A)

m=

2

n=

4

x=[12345];

12345

length(x)

A=[234;

119;

12-6];

234

119

12-6

[LU]=lu(A);

L

L=

1.000000

0.50001.00000

0.5000-1.00001.0000

U

U=

2.00003.00004.0000

0-0.50007.0000

00-1.0000

x=linspace(0,1,11);

x'

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

x=[1234];

y=[6111827];

p=polyfit(x,y,2)

p=

1.00002.00003.0000

diag(ones(4,1),1)

01000

00100

00010

00001

00000

=1

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

当前位置:首页 > PPT模板 > 其它模板

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

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