非线性方程和常微分方程的解法.docx

上传人:b****2 文档编号:2855777 上传时间:2023-05-04 格式:DOCX 页数:9 大小:17.97KB
下载 相关 举报
非线性方程和常微分方程的解法.docx_第1页
第1页 / 共9页
非线性方程和常微分方程的解法.docx_第2页
第2页 / 共9页
非线性方程和常微分方程的解法.docx_第3页
第3页 / 共9页
非线性方程和常微分方程的解法.docx_第4页
第4页 / 共9页
非线性方程和常微分方程的解法.docx_第5页
第5页 / 共9页
非线性方程和常微分方程的解法.docx_第6页
第6页 / 共9页
非线性方程和常微分方程的解法.docx_第7页
第7页 / 共9页
非线性方程和常微分方程的解法.docx_第8页
第8页 / 共9页
非线性方程和常微分方程的解法.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

非线性方程和常微分方程的解法.docx

《非线性方程和常微分方程的解法.docx》由会员分享,可在线阅读,更多相关《非线性方程和常微分方程的解法.docx(9页珍藏版)》请在冰点文库上搜索。

非线性方程和常微分方程的解法.docx

非线性方程和常微分方程的解法

非线性方程和常微分方程的解法

非线性方程和常微分方程的解法

实验8非线性方程和常微分方程的解法

一、实验目的

学会用MATLAB软件求解非线性方程和常微分方程。

二、实验内容与要求

1.非线性方程的整值解

(1)最小二乘法

格式:

fsolve(’fun’,x0)%求方程fun=0在估计值x附近的近似解。

[例1.72]求方程xe0的解。

fc=inline(‘x-exp(-x)’);

xl=fsolve(fc,0)

xl=

0.5671

问题1.28:

求解方程5xsinx-e0,观察知有多解,如何求之?

先用命令fplot(’5__^2*sin(x)-exp(-x),0]’,[0,10])作图1.13,注意5__^2*sin(x)-exp(-x),0]中的“[,0]”是作y=0直线,即x轴。

方程在[0,10]区间从图中可看出有4个解,分别在0,3,6,9附近,所以用命令:

fun=inline(’5__^2*sin(x)-exp(-x)’);

fsolve(fun,[0,3,6,9],le-6)

得出结果:

ans=

0.59183.14076.28329.4248

【例1.73】求解方程组x-0.7sinx-0.2cosy=02-x-x

y0.7cosx0.2siny0

先编制函数文件fu.m:

functiony=fu(x)

y

(1)=x

(1)-0.7*sin(x

(1))-0.2*cos(x

(2));

y

(2)=x

(1)-0.7*cos(x

(1))+0.2*sin(x

(2));

y=[y

(1),y

(2)];

在命令窗口调用fu运算:

x1=fsolve(‘fu’,[0.5,0.5])

x1=

0.52650.5079

(2)零点法

格式:

fzero('fun',x0)%求函数fun在x0附近的零点。

说明:

估计值x0若为标量时,则在x0附近查找零点,x0=[x1,x2]向量时,则首先要求函数值fun(x1)fun(x2)0,然后将严格在[x1,x2]区间内零点,若找不到,系统将给出提示。

非线性方程和常微分方程的解法

【例1.74】求函数f(x)sinx2/xxex4的零点。

fn=inline('sin(x^2)/x+__exp(x)-4');

x=fzero(fn,[1,2])%这里的fn不要加单引号

x=

1.0748

注意:

方程解的估计值可用fplot作图看出;用function建立函数文件fn,求解调用时

fn两边要加单引号,而用inline时fn两边不要加单引号;这两种方法也可解线性方程组。

⒉代数方程的符号解

格式:

gsolve(eq)%求解方程eq0,输入参量eq可是符号表达式或字符表达式。

gsolve(eq,var)%对eq中指定的变量var求解方程eq(var)0。

gsolve(eq1,eq2,,eqn)%求解方程组eq10,eq20,eqn0。

gsolve(eq1,eq2,eqn,var1,var2,,varn)%对方程组eq1,eq2,eqn中指定的n

个变量加var1,var2,varn求解

【例1.75】

solve('a__^2+b__+c')

solve('a__^2+b__+c','b')

[x,y]=solve('x+y=1','x-11*y=5')

[a,u,v]=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')

计算结果为:

ans=

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

ans=

-(a__^2+c)/x

x=

4/3

y=

-1/3

a=

u=

[1/3+1/3*i*2^(1/2)]

[1/3-1/3*i*2^(1/2)]

[1/4+1/4*i*3^(1/2)]

非线性方程和常微分方程的解法

[1/4-1/4*i*3^(1/2)]

v=

[-2/3+1/3*i*2^(1/2)]

[-2/3-1/3*i*2^(1/2)]

[-3/4+1/4*i*3^(1/2)]

[-3/4-1/4*i*3^(1/2)]

注意:

对于单个的方程或方程组,若不存在符号解,则返回方程(组)的数值解。

问题1.29:

用符号法求解问题1.28中的方程,结果不对,所以要验根,多用几种方法相互验证,用符号法解方程3xe0,解的表达式不易懂,怎么办?

x=solve('3__^2-exp(x)')

x=

[-2*lambertw(-1/6*3^(1/2))]

[-2*lambertw(-1,-1/6*3^(1/2))]

[-2*lambertw(1/6*3^(1/2))]

再用命令:

vpa(x,3)

ans=

[.912]

[3.72]

[-.460]

3.常微分方程数值解法

格式:

[T,Y]solver(odefun,tspan,y0)%区间tspan[t0,tf]上,用初始条件y0求解

显示微分方程y'f(t,y)

说明:

solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,之一。

odefun为显示常微分方程y'f(t,y)。

tspan积分区间(即求解区间)的向量tspan[t0,tf]。

要获得问题在其他指的时间点t0,t1,t2上的解,则令tspan[t0,t1,t2tf](要求是单调的)。

2x

y0包含初始条件的向量。

求解具体ODE的基本过程如下所示。

1根据问题所属学科中的规律、定律、公式,用微分方程与初始条件进行描述。

○(n)F(y,y’,y’’,,y,t)=0(n-1)y(0)=y0,y’(0)=y1,,y(0)=yn-1

而y=[y;y

(1);y

(2);;y(m-1)],n与m可以不等。

(n-1)(n-2)2运用数学中的变量替换:

yn=y,yn-1=y,,y2=y’,y1=y,把高阶(大于2阶)的○

方程(组)写成一阶微分方程组:

非线性方程和常微分方程的解法

y10y0y1'f1t,y'ft,yy02y1y22,y..y'..0....n-1yn'ft,yy0ynn

3根据○1与○2的结果,编写能计算导数的M函数文件odefile.○

4将文件odefile与初始条件传递给求解器Solver中的一个,运行后就可得到ODE的、○

在指定时间区间上的解列向量y(其中包含y及不同阶的导数)。

因为没有一种算法可以有效地解决所有的ODE问题,为此,MATLAB提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver,具体如表1.11所示。

【例1.76】求解微分方程y’=-2y+2x+2x,0QxQ0.5,y(0)=1.

fun=inline('-2*y+2__^2+2__','x','y');

[x,y]=ode23(fun,[0,0.5],1);

x'

ans=

Columns1through6

00.04000.09000.14000.19000.2400

Columns7through12

0.29000.34000.39000.44000.49000.5000

y'

ans=

Columns1through7

1.00000.92470.84340.77540.71990.67640.6440

Columns8through12

0.62220.61050.60840.61540.6179

【例1.77】求解描述振荡器的经典的VerderPol微分方程

d2y2dy'2

dt2(1y)dty0,y(0)1,y(0)0.

分析:

非线性方程和常微分方程的解法

x1y,x2dy/dt,7,则:

dx1/dtx2

dx2/dt7(1x1^2)x2x1

编写函数文件vdp,m:

functionfy=vdp(t,x)

fy=[x

(2);7*(1-x

(1)^2)__

(2)-x

(1)];

再在命令窗口中执行:

Y0=[1;0];

[t,x]=ode45('vdp',[0,40],Y0);

y=x(:

1);dy=x(:

2);

plot(t,y,t,dy)

图形结果如图1.15所示

.

图1.15例1.77图形结果

4.常微分方程的符号解

格式:

r=dsolve('eq1,eq2,','cond1,cond2,','v').

说明:

①对给定的常微分方程(组)eq1,eq2,中指定的符号自变量v,与给定的边界条件

和初始条件cond1,cond2,求符号解(解析解)r

②若没有指定变量v,则缺省变量为t;在微分方程(组)的表达式eq中,

非线性方程和常微分方程的解法

yd2y大写字母D表示对自变量(设为x)的微分算子:

Dy2y,。

微分算子2xdx

y10y0y1'f1t,y'ft,yy02y1y22

',y..变量,即待求解的D后面的字母则表示为因y..0....n-1yn'ft,yy0ynn

未知函数;

初始和边界条件由字符串表示:

yab,Dycd,D2y(e)f,等等,分别表示yxxaby'xxcdy''xxef;

若边界条件少于方程组的阶数,则返回的结果r中会出现任意的常数若该命令找不到解析解,则返回一警告信息,同时返回一空的sym对象,这时,用户可以用命令ode23或ode45求方程组的数值解

例1.78

D1=dsolve(‘D2y=Dy+exp(x)’)

D2=dsolve(‘(Dy)^2+y^2=1’,’s’)

D3=dsolve(Dy=a*y’,’y(0)=b’)%带一个初始条件

D4=dsolve(‘D2y=-a^2*y’,’y(0)=1’,’Dy(pi/a)=0’)%带两个初始条件

[x,y]=dsolve(‘Dy=y’,’Dy=-x’)%求解线性微分方程组

计算结果为:

D1=

-exp(x)*t+c1+c2*exp(t)

D2=

非线性方程和常微分方程的解法

[-1]

[1]

[sin(s-c1)]

[-sin(s-c1)]

D3=

b*exp(a*t)

D4

cos(a*t)

x=

cos(t)*c1+sin(t)*c2

y=

-sin(t)*c1+cos(t)*c2

三练习和思考

求解方程3xe0

求解方程3xlnx0

求解方程5xsin2x0

求解微分方程yy2y5,y01,y02.''''222x求解微分方程的特解,并作出解函数曲线图。

y''21y2y'y0,0x30,y01,y'00

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

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2