实验2利用matlab解非线性、微分方程组答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验2 利用matlab解(非)线性、微分方程(组)-答案1、对于下列线性方程组:

(1)请用直接法求解;

(2)请用LU分解方法求解;

(3)请用QR分解方法求解;

(4)请用Cholesky分解方法求解。

(1)

>> A=[2 9 0;3 4 11;2 2 6]

A =

2 9 0

3 4 11

2 2 6

>> B=[13 6 6]'

B =

13

6

6

>> x=inv(A)*B

x =

7.4000

-0.2000

-1.4000

或:

>> X=A\B

X =

7.4000

-0.2000

-1.4000

(2)

>> [L,U]=lu(A);

>> x=U\(L\B)

x =

7.4000

-0.2000

-1.4000

(3)

>> [Q,R]=qr(A);

>> x=R\(Q\B)

x =

7.4000

-0.2000

-1.4000

(4)

>> chol(A)

??? Error using ==> chol

Matrix must be positive definite.

2、设迭代精度为10-6,分别用Jacobi 迭代法、Gauss-Serdel 迭代法求解下列线性方程组,并比较此两种迭代法的收敛速度。

Jacobi 迭代法:

>> A=[10 -1 0;-1 10 -2;0 -2 10];

>> B=[9 7 5]';

>> [x,n]=jacobi(A,B,[0,0,0]',1e-6)

x =

0.9937

0.9368

0.6874

n =

11

Gauss-Serdel 迭代法:

>> A=[10 -1 0;-1 10 -2;0 -2 10];

>> B=[9 7 5]';

>> [x,n]=gauseidel(A,B,[0,0,0]',1e-6)

x =

0.9937

0.9368

0.6874

n =

7

3、求解非线性方程010=-+x xe x 在2附近的根。

首先建立M 文件f.m

function f=f(x)

f=x+x*exp(x)-10;

然后在主窗口调用:

>> x=fzero('f',2)

x =

1.6335

或直接采取以下方法:

x=solve('x+x*exp(x)-10')

x =

1.6335

4、求下列非线性方程组在(0.5,0.5) 附近的数值解。

(1) 建立函数文件f.m 。

function q=f(p)

x=p(1);

y=p(2);

q(1)=cos(x)+y*exp(x)-2;

q(2)=sin(y)+x*exp(y)-2;

(2) 在给定的初值x0=0.5,y0=0.5下,调用fsolve 函数求方程的根。 x=fsolve('f',[0.5,0.5]',optimset('Display','off'))

x =

0.8087

0.5833

或采取以下方法:

>> [x,y]=solve('cos(x)+y*exp(x)-2','sin(y)+x*exp(y)-2')

x =

.

y =

.668096

5、通过画图方法描述某非刚性体的运动方程的微分方程⎪⎩⎪⎨⎧=-==2

1331232151.0y y y y y y

y y y ,其初始条件为⎪⎩⎪⎨⎧===1)0(1)0(0)0(3

21y y y 。

建立ff.m 函数

function dy=ff(t,y)

dy=[y(2)*y(3);-y(1)*y(3);0.51*y(1)*y(2)];

建立调用函数

y0=[0 1 1];

[t,y]=ode45('ff',[0,15],y0)

plot(t,y(:,1),'r-o',t,y(:,2),'b-*',t,y(:,3),'g-v')

legend('y1','y2','y3')

运行结果:

6、求二阶微分方程)2sin(3t y e y t y t =-'+'', 1)0(=y ,1)0(-='y 在20≤≤t 时的数值图解。

令x 1=y , x 2=y'时有

x 1'=x 2,x 2'=3sin(t)-tx 2+e t x 1

建立ff.m 函数

function dx=ff(t,x)

dx=[x(2);3*sin(2*t)-t*x(2)+exp(t)*x(1)];

建立调用函数

x0=[1 -1];

[t,x]=ode45('ff',[0,2],x0)

plot(t,x(:,1),'r-o',t,x(:,2),'b-.*')

legend('x1','x2')

相关文档
最新文档