非线性方程和常微分方程的解法.docx
- 文档编号:11851936
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:9
- 大小:17.97KB
非线性方程和常微分方程的解法.docx
《非线性方程和常微分方程的解法.docx》由会员分享,可在线阅读,更多相关《非线性方程和常微分方程的解法.docx(9页珍藏版)》请在冰豆网上搜索。
非线性方程和常微分方程的解法
非线性方程和常微分方程的解法
非线性方程和常微分方程的解法
实验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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 非线性 方程 微分方程 解法