matlab差分方程和微分方程,实验二微分方程与差分方程模型matlab求解

41528d3028836879cd698677c3999917.gif实验二微分方程与差分方程模型matlab求解

实验二: 微分方程与差分方程模型 Matlab 求解一、实验目的[1] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;[2] 熟悉 MATLAB 软件关于微分方程求解的各种命令;[3] 通过范例学习建立微分方程方面的数学模型以及求解全过程;[4] 熟悉离散 Logistic 模型的求解与混沌的产生过程。 二、实验原理1. 微分方程模型与 MATLAB 求解解析解用 MATLAB 命令 dsolve(‘eqn1’,’eqn2’, .) 求常微分方程(组)的解析解。其中‘eqni 表示第 i 个微分方程,Dny 表示 y 的 n 阶导数,默认的自变量为 t。(1) 微分方程例 1 求解一阶微分方程 21ydx(1) 求通解输入:dsolve( Dy=1+y^2 ) 输出:ans =tan(t+C1) (2)求特解输入:dsolve( Dy=1+y^2 , y(0)=1 , x ) 指定初值为 1,自变量为 x输出:ans =tan(x+1/4*pi) 例 2 求解二阶微分方程 221()04(/)/xyxy原方程两边都除以 ,得2x21()04yyx输入:dsolve( D2y+(1/x)*Dy+(1-1/4/x^2)*y=0 , y(pi/2)=2,Dy(pi/2)=-2/pi , x ) ans =- (exp(x*i)*(pi/2)^(1/2)*i)/x^(1/2) + (exp(x*i)*exp(-x*2*i)*(pi/2)^(3/2)*2*i)/(pi*x^(1/2))试试能不用用 simplify 函数化简输入: simplify(ans)ans =2^(1/2)*pi^(1/2)/x^(1/2)*sin(x) (2)微分方程组例 3 求解 df/dx=3f+4g; dg/dx=-4 f+3g。(1)通解: [f,g]=dsolve( Df=3*f+4*g , Dg=-4*f+3*g ) f =exp(3*t)*(C1*sin(4*t)+C2*cos(4*t))g =exp(3*t)*(C1*cos(4*t)-C2*sin(4*t)) 特解:[f,g]=dsolve( Df=3*f+4*g , Dg=-4*f+3*g , f(0)=0,g(0)=1 ) f =exp(3*t)*sin(4*t)g =exp(3*t)*cos(4*t) 数值解在微分方程(组)难以获得解析解的情况下,可以用 Matlab 方便地求出数值解。格式为:[t,y] = ode23( F ,ts,y0,options)注意: 微分方程的形式:y = F(t, y),t 为自变量,y 为因变量(可以是多个,如微分方程组); [t, y]为输出矩阵,分别表示自变量和因变量的取值; F 代表一阶微分方程组的函数名(m 文件,必须返回一个列向量,每个元素对应每个方程的右端); ts 的取法有几种,(1)ts=[t0, tf] 表示自变量的取值范围,(2)ts=[t0,t1,t2,…,tf],则输出在指定时刻 t0,t1,t2,…,tf 处给出,(3)ts=t0:k:tf,则输出在区间[t0,tf]的等分点给出; y0 为初值条件; options 用于设定误差限(缺省是设定相对误差是 10^(-3),绝对误差是 10^(-6));ode23 是微分方程组数值解的低阶方法,ode45 为中阶方法,与 ode23 类似。例 4 求解一个经典的范得波(Van Der pol)微分方程: 0)( ,1)0( )1( 2 uuu,解 形式转化:令 。则以上方程转化一阶微分方程组: );21tyt221(;yy。编写 M 文件如下,必须是 M 文件表示微分方程组,并保存,一般地,M 文件的名字与函数名相同,保存位置可以为默认的 work 子目录,也可以保存在自定义文件夹,这时注意要增加搜索路径(File\Set Path\Add Folder)function dot1=vdpol(t,y);dot1=[y(2); (1-y(1)^2)*y(2)-y(1)];在命令窗口写如下命令:[t,y]=ode23( vdpol ,[0,20],[1,0]);y1=y(:,1);y2=y(:,2);plot(t,y1,t,y2, -- );title( Van Der Pol Solution );xlabel( Time,Second );ylabel( y(1)andy(2) ) 执行:0 2 4 6 8 10 12 14 16 18 20-3-2-10123 Van Der Pol Solution Time,Secondy(1)andy(2)注:Van der Pol 方程描述具有一个非线性振动项的振动子的运动过程。最初,由于它在非线性电路上的应用而引起广泛兴趣。一般形式为。0 )1( 2uu图形解无论是解析解还是数值解,都不如图形解直观明了。即使是在得到了解析解或数值解的情况下,作出解的图形,仍然是一件深受欢迎的事。这些都可以用 Matlab 方便地进行。(1)图示解析解如果微分方程(组)的解析解为:y= f (x),则可以用 Matlab 函数 fplot 作出其图形:fplot( fun ,lims)其中:fun 给出函数表达式;lims=[xmin xmax ymin ymax]限定坐标轴的大小。例如fplot( sin(1/x) , [0.01 0.1 -1 1]) 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1-1-0.8-0.6-0.4-0.200.20.40.60.81(2)图示数值解设想已经得到微分方程(组)的数值解(x,y)。可以用 Matlab 函数plot(x,y)直接作出图形。其中 x 和 y 为向量(或矩阵)。2、Volterra 模型(食饵捕食者模型)意大利生物学家 Ancona 曾致力于鱼类种群相互制约关系的研究,他从第一次世界大战期间,地中海各港口捕获的几种鱼类捕获量百分比的资料中,发现鲨鱼的比例有明显增加(见下表) 。年代 1914 1915 1916 1917 1918百分比 11.9 21.4 22.1 21.2 36.4年代 1919 1920 1921 1922 1923百分比 27.3 16.0 15.9 14.8 19.7战争为什么使鲨鱼数量增加?是什么原因?因为战争使捕鱼量下降,食用鱼增加,显然鲨鱼也随之增加。 但为何鲨鱼的比例大幅增加呢?生物学家 Ancona 无法解释这个现象,于是求助于著名的意大利数学家 V.Volterra,希望建立一个食饵—捕食者系统的数学模型,定量地回答这个问题。1、符号说明:① x1(t), x2(t)分别是食饵、捕食者(鲨鱼)在 t 时刻的数量; ② r 1, r2 是 食饵、捕食者的固有增长率;③ λ 1 是捕食者掠取食饵的能力, λ 2 是食饵对捕食者的供养能力;2、基本假设:① 捕食者的存在使食饵的增长率降低,假设降低的程

你可能感兴趣的:(matlab差分方程和微分方程)