数学建模实验报告求微分方程的解
数学建模实验报告求微分方程的解5页
求微分方程的解一、实验目的及意义1. 归纳和学习求解常微分方程(组)的基本原理和方法;2. 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;3. 熟悉MATLAB 软件关于微分方程求解的各种命令。
二、实验内容1.微分方程及方程组的解析求解法; 2.微分方程及方程组的数值求解法——欧拉、欧拉改进算法; 3.直接使用MATLAB 命令对微分方程(组)进行求解(包括解析解、数值解); 4. 利用图形对解的特征作定性分析。
三、实验步骤1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据微分方程求解步骤编写M 文件 3.保存文件并运行; 4.观察运行结果(数值或图形); 5. 根据观察到的结果和体会写出实验报告。
四、实验要求与任务根据实验内容和步骤,完成以下实验,要求写出实验报告1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分方程x e y y y x sin 5'2''=+-的通解.3. 求微分方程组在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形.4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.5. 用 Euler 折线法求解微分方程初值问题的数值解(步长h 取0.1),求解范围为区间[0,2].6. 用四阶 Runge-Kutta 法求解微分方程初值问题的数值解(步长h 取0.1),求解范围为区间[0,3].五. 程序代码及运行结果(经调试后正确的源程序)1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.程序代码:syms x yfprintf('通解为')y=dsolve('(x^2-1)*Dy+2*x*y-sin(x)=0','x')运行结果:通解为y =(-cos(x)+C1)/(x^2-1)2. 求微分方程x e y y y x sin 5'2''=+-的通解.程序代码:syms x yfprintf('通解为')y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x')运行结果:通解为y =-1/4*exp(x)*cos(2*x)*sin(x)+1/12*exp(x)*cos(2*x)*sin(3*x)-1/12*exp(x)*sin(2*x)*cos(3*x)+1/4*exp(x)*sin(2*x)*cos(x)+C1*exp(x)*cos(2*x)+C2*e xp(x)*sin(2*x)3. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dt dx 在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形. 程序代码:syms x y t[x,y]=dsolve('Dx+x+y=0','Dy+x-y=0','x(0)=1','y(0)=0','t')ezplot(x,y,[0,2]);运行结果:x =1/2*exp(2^(1/2)*t)+1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^(1/2)*t)+1/2*exp(-2^(1/2)*t)y =1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^(1/2)*t)4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异. 程序代码:M函数文件verderpol.m:function xprime=verderpol(t,x)xprime=[-x(1)-x(2); x(2)-x(1)];在程序中调用此函数:clear;y0=[1;0];[t,x]=ode45('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'r-');hold onclear;y0=[1;0];[t,x]=ode23('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'b-');运行结果:5. 用Euler 折线法求解微分方程初值问题的数值解(步长h取0.1),求解范围为区间[0,2].程序代码:clearf=sym('y-(12*x^2)/y^3');a=0; b=2;h=0.1;n=(b-a)/h+1;x=0; y=1;szj=[x,y];for i=1:n-1y=y+h*subs(f,{'x','y'},{x,y});x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2),'or-')运行结果:szj =0 1.00000.1000 1.10000.2000 1.20190.3000 1.29340.4000 1.37280.5000 1.43590.6000 1.47810.7000 1.49210.8000 1.46440.9000 1.36621.0000 1.12171.1000 0.38361.2000 -25.30541.4000 -30.61931.5000 -33.68121.6000 -37.04921.7000 -40.75411.8000 -44.82941.9000 -49.31232.0000 -54.24356. 用四阶Runge-Kutta 法求解微分方程初值问题的数值解(步长h取0.1),求解范围为区间[0,3].程序代码:clear;f=sym('y-exp(x)*cos(x)');a=0; b=3; h=0.1;n=(b-a)/h+1;x=0; y=1;szj=[x,y];for i=1:n-1l1=subs(f,{'x','y'},{x,y});l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});l4=subs(f,{'x','y'},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2), 'dg-')运行结果:szj =0 1.00000.1000 0.99480.2000 0.97870.3000 0.95090.4000 0.91090.5000 0.85830.6000 0.79330.7000 0.71650.8000 0.62900.9000 0.53291.0000 0.43091.1000 0.32681.2000 0.22561.3000 0.13371.5000 0.01121.6000 0.00211.7000 0.04561.8000 0.15821.9000 0.35902.0000 0.67022.1000 1.11712.2000 1.72832.3000 2.53642.40003.57742.5000 4.89162.6000 6.52312.7000 8.52042.8000 10.93592.9000 13.82603.0000 17.2510六.实验总结本次实验的目的是归纳和学习求解常微分方程(组)的基本原理和方法;掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;熟悉MATLAB 软件关于微分方程求解的各种命令。
(整理)数学建模作业实验2微分方程实验
数学建模作业(实验2微分方程实验)基本实验1.微分方程稳定性分析绘出下列自治系统相应的轨线,并标出随t 增加的运动方向,确定平衡点,并按稳定的、渐近稳定的、或不稳定的进行分类:,,,+1,(1)(2)(3)(4);2;2;2.dx dx dx dxx x y x dt dt dt dt dy dy dy dy y y x y dt dt dt dt ⎧⎧⎧⎧==-==-⎪⎪⎪⎪⎪⎪⎪⎪⎨⎨⎨⎨⎪⎪⎪⎪===-=-⎪⎪⎪⎪⎩⎩⎩⎩解答解:(1)由平衡点的定义可得,f (x )=x=0,f (y )=y=0,因此平衡点为(0,0),微分方程组的系数矩阵为1001A ⎡⎤=⎢⎥⎣⎦,显然其特征值为12=1=1λλ,;由根与系数的关系可得:1212()2010p q λλλλ=-+=-<==>,且24p q >,由平衡点与稳定性的各种情况可知,平衡点(0,0)是不稳定的。
自治系统相应轨线为:(2)由平衡点的定义可得,f (x )=-x=0,f (y )=2y=0,因此平衡点为(0,0),微分方程组的系数矩阵为-1002A ⎡⎤=⎢⎥⎣⎦,显然其特征值为12=-1=2λλ,;由根与系数的关系可得:121210-(2<0)p q λλλλ=-+=-<==,,平衡点(0,0)是不稳定的。
自治系统相应轨线为:(3)由平衡点的定义可得,f (x )=y=0,f (y )=-2x=0,因此平衡点为(0,0),微分方程组的系数矩阵为0120A ⎡⎤=⎢⎥-⎣⎦,显然其特征值为121.4142=4142=-1.i i λλ,;由根与系数的关系可得:12120 1.41420()p q λλλλ=-+===>,,由平衡点与稳定性的各种情况可知,平衡点(0,0)是不稳定的。
自治系统相应轨线为:(4)由平衡点的定义可得,f (x )=-x=0,f (y )=-2y=0,因此平衡点为(0,0),微分方程组的系数矩阵为-100-2A ⎡⎤=⎢⎥⎣⎦,显然其特征值为12==-12-λλ,;由根与系数的关系可得:1212()3020p q λλλλ=-+=>==>,且24p q >,由平衡点与稳定性的各种情况可知,平衡点(0,0)是稳定的。
matlab求微分方程的解 实验报告四
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
微分方程数值解实验报告
微分方程数值解实验报告实验目的:掌握微分方程数值解的基本方法,能够利用计算机编程求解微分方程。
实验原理:微分方程是自然科学与工程技术中常见的数学模型,它描述了变量之间的关系及其随时间、空间的变化规律。
解微分方程是研究和应用微分方程的基础,但有很多微分方程无法找到解析解,只能通过数值方法进行求解。
本实验采用欧拉方法和改进的欧拉方法求解微分方程的初值问题:$$\begin{cases}\frac{dy}{dt}=f(t,y)\\y(t_0)=y_0\end{cases}$$其中,$f(t,y)$是给定的函数,$y(t_0)=y_0$是已知的初值条件。
欧拉方法是最基本的数值解法,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_{i+1}=y_i+hf(t_i,y_i)$4.重复步骤2、3直到达到终止条件改进的欧拉方法是对欧拉方法进行改进,通过利用函数$y(t)$在$t+\frac{1}{2}h$处的斜率来更准确地估计$y_{i+1}$,其步骤如下:1.给定$t_0$和$y_0$2.计算$t_{i+1}=t_i+h$,其中$h$是步长3. 计算$y_*=y_i+\frac{1}{2}hf(t_i,y_i)$4. 计算$y_{i+1}=y_i+hf(t_i+\frac{1}{2}h,y_*)$5.重复步骤2、3、4直到达到终止条件实验步骤:1.编写程序实现欧拉方法和改进的欧拉方法2.给定微分方程和初值条件3.设置步长和终止条件4.利用欧拉方法和改进的欧拉方法求解微分方程5.比较不同步长下的数值解与解析解的误差6.绘制误差-步长曲线,分析数值解的精度和收敛性实验结果:以一阶常微分方程$y'=3ty+t$为例,给定初值$y(0)=1$,取步长$h=0.1$进行数值求解。
利用欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Euler}} & \text{误差} \\ \hline0.0&1.000&1.000&0.000\\0.1&1.035&1.030&0.005\\0.2&1.104&1.108&0.004\\0.3&1.212&1.217&0.005\\0.4&1.360&1.364&0.004\\0.5&1.554&1.559&0.005\\0.6&1.805&1.810&0.005\\0.7&2.131&2.136&0.005\\0.8&2.554&2.560&0.006\\0.9&3.102&3.107&0.006\\1.0&3.807&3.812&0.005\\\end{array}利用改进的欧拉方法求解微分方程得到的数值解如下:\begin{array}{cccc}t & y_{\text{exact}} & y_{\text{Improved Euler}} & \text{误差} \\\hline0.0&1.000&1.000&0.000\\0.1&1.035&1.035&0.000\\0.2&1.104&1.103&0.001\\0.3&1.212&1.211&0.001\\0.4&1.360&1.358&0.002\\0.5&1.554&1.552&0.002\\0.6&1.805&1.802&0.003\\0.7&2.131&2.126&0.005\\0.8&2.554&2.545&0.009\\0.9&3.102&3.086&0.015\\1.0&3.807&3.774&0.032\\\end{array}误差-步长曲线如下:实验结论:通过对比欧拉方法和改进的欧拉方法的数值解与解析解的误差,可以发现改进的欧拉方法具有更高的精度和收敛性。
(完整word版)数学建模实训报告
目录实训项目一线性规划问题及lingo软件求解 (1)实训项目二lingo中集合的应用…………………………………………。
7实训项目三lingo中派生集合的应用 (9)实训项目四微分方程的数值解法一 (13)实训项目五微分方程的数值解法二……………………………………。
.15实训项目六数据点的插值与拟合 (17)综合实训作品 (18)每次实训课必须带上此本子,以便教师检查预习情况和记录实验原始数据。
实验时必须遵守实验规则.用正确的理论指导实践袁必须人人亲自动手实验,但反对盲目乱动,更不能无故损坏仪器设备。
这是一份重要的不可多得的自我学习资料袁它将记录着你在大学生涯中的学习和学习成果.请你保留下来,若干年后再翻阅仍将感到十分新鲜,记忆犹新.它将推动你在人生奋斗的道路上永往直前!项目一:线性规划问题及lingo软件求解一、实训课程名称数学建模实训二、实训项目名称线性规划问题及lingo软件求解三、实验目的和要求了解线性规划的基本知识,熟悉应用LINGO解决线性规划问题的一般方法四:实验内容和原理内容一:某医院负责人每日至少需要下列数量的护士班次时间最少护士数1 6:00—10:00 602 10:00—14:00 703 14:00—18:00 604 18:00—22:00 505 22:00—02:00 206 02:00—06:00 30每班的护士在值班的开始时向病房报道,连续工作8个小时,医院领导为满足每班所需要的护士数,最少需要多少护士。
内容二:内容三五:主要仪器及耗材计算机与Windows2000/XP系统;LINGO软件六:操作办法与实训步骤内容一:考虑班次的时间安排,是从6时开始第一班,而第一班最少需要护士数为60,故x1>=60 ,又每班护士连续工作八个小时,以此类推,可以看出每个班次的护士可以为下一个班次工作四小时,据此可以建立如下线性规划模型:程序编程过程:min=x1+x2+x3+x4+x5+x6;x1〉=60;x1+x2〉=70;x2+x3>=60;x3+x4〉=50;x4+x5〉=20;x5+x6〉=30;编程结果:Global optimal solution found.Objective value:150.0000 Infeasibilities: 0。
数学建模试验报告-微分方程
学号
班级
问题:(微分方程)
讨论资金积累、国民收入、与人口增长的关系.
(1)若国民平均收入x与按人口平均资金积累y成正比,说明仅当总资金积累的相对增长率k大于人口的相对增长率r时,国民平均收入才是增长的.
(2)作出k(x)和r(x)的示意图,分析人口激增会引起什么后果.
.
问题的分析和假设:
问题分析:
求解的Matlab程序代码:
建立.M文件,,如下:
functiondx=lab4(t,x)
dx=zeros(3,1);
k=;
r=;
a=1;
dx(1)=k*x(1);
dx(2)=r*x(2);
dx(3)=a*(k-r)*x(3);
主程序:
[t,x]=ode45('lab4',[2011 2100],[134735 00 ]);
(1) 由图像可以看出:总资金积累的相对增长率k大于人口的相对增长率r时,国民平均收入是增长的
(2) 当人口激增时,在一定程度上,人口平均资金积累和国民平均收入都会减少,人们的生活水平会下降,国家应实施宏观调控,来控制人口增长,以保证人民的生活水平进一步提高。
figure(1),plot(t,x(:,1),'k*')
xlabel('时间[年]'),ylabel('总资金积累量[亿元]')
figure(2),plot(t,x(:,2),'m-')
hold on
xlabel('时间[年]'),ylabel('人口总数')
figure(3),plot(t,x(:,3),'r+')
实验四:求微分方程的解
Euler 折线法
考虑一维经典初值问题
dy dx f ( x , y ) , y ( x 0 ) y0 , x [ a , b ]
基本思想:用差商代替微商
根据 Talyor 公式,y(x) 在点 xk 处有
y ( x ) y ( x k ) ( x x k ) y '( x k ) O ( x )
是一类求解法
用得较多的是 四阶R-K方法(教材第 79 页)
x k 1 x k h y 0 y ( x 0 ), y k 1 y k h ( L1 2 L 2 2 L 3 L 4 )/6
r = dsolve('Dx+5*x=0','Dy-3*y=0', ... 'x(0)=1', 'y(0)=1','t') 这里返回的 r 是一个 结构类型 的数据 r.x r.y %查看解函数 x(t) %查看解函数 y(t)
dsolve的输出个数只能为一个 或 与方程个数相等。
只有很少一部分微分方程(组)能求出解析解。 大部分微分方程(组)只能利用数值方法求数值解。
Euler折线法举例(续)
解析解: y
2 5 3x e 2x 3 3
1/3
解析解
近似解
Runge-Kutta 方法
为了减小误差,可采用以下方法:
让步长 h 取得更小一些; 改用具有较高精度的数值方法:
Runge-Kutta (龙格-库塔) 方法
龙格-库塔方法
dy 2 2 y 2 x 2 x dx y(0) 1
的数值解,求解范
数学建模解偏微分方程
数学建模解偏微分方程
摘要:
1.数学建模简介
2.偏微分方程的基本概念
3.解偏微分方程的方法
4.数学建模在实际应用中的案例
5.总结与展望
正文:
数学建模是一种用数学方法解决实际问题的过程,它涉及到多个领域,如物理学、生物学、经济学等。
在这个过程中,偏微分方程是一类非常重要的数学模型,用于描述各种自然现象和工程问题。
本文将简要介绍数学建模解偏微分方程的相关知识。
首先,我们需要了解偏微分方程的基本概念。
偏微分方程是一种包含多个变量的微分方程,可以用来描述各种物理现象,如波动、热传导、电磁场等。
根据偏微分方程的性质,可以将其分为多种类型,如线性偏微分方程、非线性偏微分方程、椭圆型偏微分方程、双曲型偏微分方程等。
解偏微分方程是数学建模的关键步骤之一。
根据偏微分方程的类型和问题的具体条件,可以采用不同的方法求解。
常用的方法有分离变量法、矩方法、有限元法、有限差分法等。
这些方法各有优缺点,需要根据实际情况进行选择。
数学建模在实际应用中具有广泛的应用。
例如,在天气预报中,可以通过
数学模型预测未来的天气状况;在生物医学领域,可以通过数学模型研究病毒传播、药物代谢等问题;在经济学中,可以通过数学模型分析市场供求、价格波动等现象。
这些实际问题都可以转化为偏微分方程或相关数学模型进行求解。
总之,数学建模解偏微分方程是一种重要的数学方法,可以用来解决实际问题。
了解偏微分方程的基本概念和解法,以及数学建模在实际应用中的案例,有助于我们更好地应用数学知识解决实际问题。
数学建模解偏微分方程
数学建模解偏微分方程是指建立数学模型,并通过一系列的数学操作,如离散化,代码实现和可视化,来求解复杂的偏微分方程问题。
这些偏微分方程问题主要包括数学物理方程、偏微分方程数值模拟等。
在解决这些问题时,有许多数学工具和方法可以使用。
首先,建立数学模型是解决偏微分方程的第一步。
这包括根据实际问题的性质,构造相应的偏微分方程,并确定其定解条件。
例如,在求解数学物理方程时,我们可以采用分离变量法,对问题进行分类,并根据具体情况选择合适的数学模型。
接下来,离散化是将偏微分方程转化为离散形式的过程,这是求解偏微分方程的关键步骤。
它通过对偏微分方程进行数值积分,把连续的偏微分方程转化为离散的方程,从而实现用计算机进行求解。
在离散化的过程中,我们可以选择有限差分方法、有限元方法和有限体积方法等不同的离散方法,其中有限差分方法是最早采用的方法,有限元方法利用变分原理和分片多项式插值,具有求解区域灵活、单元类型灵活、程序代码通用等特点。
然后,代码实现是使用计算机程序来实现我们所建立的离散化偏微分方程,以便进行高效计算。
在Python中,有许多库可用于此,如SymPy、SciPy和FEniCS等等,这使得我们可以方便地编写和调试代码。
最后,可视化是将计算结果以图像、曲线或表格等形式表示出来,以方便人们理解和分析。
在可视化的过程中,我们可以使用Matplotlib,NumPy等绘图库,生成漂亮的图像和图表,这对于理解和分析偏微分方程的解具有很大的帮助。
总之,数学建模解偏微分方程是一个复杂的过程,需要我们综合运用数学工具和方法,如建模、离散化、代码实现和可视化等。
在求解过程中,我们需要根据问题的性质和具体情况,灵活选择不同的数学模型和离散方法,以便提高计算的准确性和效率。
数学建模中的微分方程求解
数学建模中的微分方程求解数学建模是将真实世界中的问题抽象成数学模型,利用数学方法求解并得出结论的过程。
微分方程作为数学建模中最常用的数学工具之一,广泛应用于物理、生物、工程等领域,成为数学建模不可或缺的一部分。
本文将着重介绍微分方程在数学建模中的求解方法以及常见的数学模型。
一、常见的微分方程求解方法(一) 分离变量法分离变量法是最基本的微分方程求解方法之一。
对于形如$ \frac{dy}{dx} = f(x)g(y) $的一阶微分方程,我们可以将其分离为$ \frac{dy}{g(y)} = f(x) dx $,进而求解出$ y $的解析解。
例如,对于简单的一阶线性微分方程$ \frac{dy}{dx} + p(x)y = q(x) $,我们可以将其写成$ \frac{dy}{dx} = -p(x)y + q(x) $,然后将$ y $和$ x $分隔开来,即$ \frac{dy}{-p(x)y+q(x)} = dx $,最后将分子和分母积分得到$ y $的解析解。
但是,在实际问题中的微分方程很难一步到位地完成分离变量,需要结合其他的方法。
(二) 特解法特解法是一种特殊的微分方程求解方法,它适用于某些特殊的微分方程。
特解法的思想是先猜出通解的一部分,然后再根据该猜测解答出剩余的部分,得到最终的通解。
例如,对于形如$ y'' + ay' + by = f(x) $的二阶非齐次微分方程,我们可以先猜测一个特解$ y_p $,然后再求出方程的通解$ y = y_c + y_p $,其中$ y_c $是齐次方程的通解。
特解法在实际问题中应用广泛,但对特定问题的适用性并不一定好。
(三) 变量代换法变量代换法是另一种常见的微分方程求解方法,它常用于解决高阶微分方程或无法通过分离变量法解决的微分方程。
变量代换法的思想是将微分方程通过变量代换转化为可分离变量或一阶线性微分方程的形式。
例如,对于形如$ y'' + py' + qy = 0 $的二阶齐次微分方程,我们可以通过变量代换$ z = y' $,将其转化为一阶线性微分方程。
数学建模中的微分方程求解技术
数学建模中的微分方程求解技术第一章概述数学建模是指将实际问题抽象成数学模型,并利用数学方法解决实际问题的过程。
微分方程在数学建模中起着重要作用,而求解微分方程是数学建模中的关键问题之一。
本文将从数学建模中的微分方程求解技术入手,深入探讨微分方程求解的常用方法。
第二章解析解法解析解法是指通过解析公式或定理求解微分方程的方法。
该方法通常适用于一些比较简单的微分方程,如一阶线性微分方程、变量分离形式的微分方程、二阶线性齐次微分方程等。
通过这些公式或定理可以得到微分方程的解析解,使得微分方程的求解变得简便快捷。
第三章数值解法为了解决那些难以用解析方法求解的微分方程,数值解法应运而生。
数值解法是指将微分方程转化为差分方程,利用计算机进行数值计算求解微分方程的方法。
数值解法相比解析解法,其求解精度受固定精度限制,但通常可以算得更精确的近似解,并常常能解决含有非线性项或者涉及材料参数的微分方程。
第四章前向差分法前向差分法是求解微分方程的一种数值解法。
该方法通过将微分方程转化为差分方程,并以该差分方程对每个时间步求解微分方程的数值解。
前向差分法具有计算量小、收敛速度快等优点,但其精度较低。
第五章后向差分法后向差分法是求解微分方程的另一种数值解法。
该方法的思想是通过求解微分方程的逆向差分方程,从而得到微分方程的数值解。
后向差分法相比前向差分法,其精度更高,但计算量相对较大。
第六章结论微分方程是数学建模中的重要部分,其求解技术也是数学建模中比较复杂的问题之一。
解析解法和数值解法是微分方程求解的两种主要方法。
解析解法通常适用于简单的微分方程,而数值解法则相对复杂,但可以处理更加复杂的微分方程。
不同的求解方法在实际应用中可以结合使用,得到更加准确的结果。
因此,对微分方程求解技术的深入研究有助于提高数学建模的精度和实用性。
数学建模中的微分方程理论
数学建模中的微分方程理论数学建模是数学的一个重要分支,它在科学、工程、计算机等领域中都有广泛的应用。
其中,微分方程是数学建模中的重要工具之一。
微分方程的理论研究和应用,对于解决现实世界中的问题具有重要意义。
一、微分方程的定义和分类微分方程是数学模型中常见的数学表达式,它描述了变量之间的关系,以及随时间变化的规律。
微分方程的一般形式为:$$F(x,y,y',y'',\cdots,y^{(n)})=0$$其中,$x$ 是自变量,$y$ 是因变量,$y'$ 是 $y$ 对 $x$ 的一阶导数,$y''$ 是 $y$ 对 $x$ 的二阶导数,$y^{(n)}$ 是 $y$ 对$x$ 的 $n$ 阶导数。
微分方程按照阶数和类型的不同,可以分为很多种类。
例如:1. 一阶常微分方程:$$\frac{dy}{dx}=f(x,y)$$2. 二阶常微分方程:$$\frac{d^2y}{dx^2}=f(x,y,\frac{dy}{dx})$$3. 偏微分方程:$$\frac{\partial u}{\partialt}=k\frac{\partial^2u}{\partial x^2}$$二、微分方程的求解方法求解微分方程是微分方程理论中的核心问题之一。
对于不同类型的微分方程,有不同的求解方法。
以下为一些常用的方法:1. 变量分离法:$$\frac{dy}{dx}=f(x)g(y)$$2. 齐次方程法:$$\frac{dy}{dx}=\frac{f(x,y)}{g(x,y)}=\frac{\frac{\partial}{\partial x}h(x,y)}{\frac{\partial}{\partial y}h(x,y)}$$3. 一阶线性微分方程法:$$\frac{dy}{dx}+P(x)y=Q(x)$$4. 二阶常系数齐次线性微分方程法:$$y''+ay'+by=0$$5. 分离变量法:$$\frac{\partial u}{\partialt}=k\frac{\partial^2u}{\partial x^2}$$三、微分方程在数学建模中的应用微分方程在数学建模中具有广泛的应用,例如:1. 物理问题:微分方程可以用来描述物理世界中的各种问题,例如运动学、动力学、热力学、电磁学等。
数学建模实验5-微分方程求解
[x,y]=ode23('zhuiji',[500 1],[0 0]);
y1=y(:,1);
plot(x,y1)
结果如图
五、实验心得(质疑、建议):
plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
结果如图
(3)
解:令y1=x,y2=y1’
则微分方程变为一阶微分方程组:
建立M文件
function dy=vdp1000(t,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=1000*(1-y(1)^2)*y(2)-y(1)
湖南第一师范学院数学系实验报告
姓名:
学号:
专业:
数学与应用数学
班级:
课程名称:
线性规划与数学建模
实验名称:
微分方程(组)的Matlab求解
实验类型:
基础实验
实验室名称:
数学建模实验室
实验地点:
实A302
实验时间:
2016年6月14日
指导教师:
成绩评定:
一、实验目的与要求:
1、掌握微分方程(组)的解析解法。
取t0=0,tf=3000,输入命令:
[T,Y]=ode15s('vdp1000',[0 3000],[2 0]);
plot(T,Y(:,1),'-')
结果如图
4.
建立如下微分方程模型:
其中,
转化为一阶微分方程组:
得
建立M文件:
function f=zhuiji(x,y)
数学建模实验报告孤岛危机求解微分方程问题
求解微分方程问题一.实验目的建立微分方程模型,求出方程的解来说明实际现象,并加以检验,以此来研究实际问题的函数变化规律。
通过运用matlab 软件及相关知识解决与讨论孤岛疾病微分方程问题。
二.实验内容孤岛疾病问题考虑在一个人口数量为N 的孤岛上,一部分到岛外旅游的居民回来使该岛感染了一种高传染性的疾病。
请预测在某时刻t 将会被感染的人数X 。
考虑一下模型,其中k>0为常数:()dXkX N X dt=- (a) 列出这个模型所隐含的两条主要假设,说明这些假设有什么依据? (b) 把X 作为t 的函数,解出前面给出的模型。
(c) 由(b),当t 趋于无穷时求X 的极限。
(d) 设岛上的人口有5000人,在传染期的不同时刻被感染人数如下表(e) 画出/dX dt 关于X 的图形(f) 若初始被感染的人数1/2X N <,画出X 关于t 的图形;若初始被感染人数为1/2X N >,画出X 关于t 的图形。
(g) 利用(f)的结果估计模型中的常数,并预测t=ns 天(ns 为你学号最后两位数字+10)时被感染的人数。
(h) 分析上述模型的优缺点,试给出改进方案。
四. 模型求解(含经调试后正确的源程序)a)假设1人口数量N 不变,因为是孤岛。
假设2人口分为健康人和被感染的病人数量分别为X ,N-X 。
b)程序文件:b.m syms N k;X=dsolve('DX=k*X*(N-X)') 结果: X =N/(1+exp(-k*N*t)*C1*N) c)1lim1()ktt NC N N e -→∞+-=Nd)11111221()1()()ln ln ()ln ln()ln ln ktkt ktktkt NX C N N e NC N N e X N XC N N e X N X C N N e XN X C N N e C ktX X kt C N X-----=+--=--=--⎡⎤=-⎣⎦-=-+=-=-- 由上式可以看出lnXN X-是线性变化的,观察表中数据可得:这些数据能支持所给的模型。
数学建模解偏微分方程
数学建模解偏微分方程【原创版】目录一、引言二、数学建模与偏微分方程三、差分算法求解偏微分方程四、数值模拟在环境数据分析中的应用五、结论正文一、引言随着科技的发展,数学建模在各个领域的应用越来越广泛。
其中,偏微分方程作为数学建模的一个重要工具,其在实际应用中的地位和作用日益凸显。
本文将围绕数学建模解偏微分方程的主题,介绍差分算法在求解偏微分方程中的应用以及数值模拟在环境数据分析中的应用。
二、数学建模与偏微分方程数学建模是一种通过数学方法和工具对现实世界中的问题进行描述和求解的过程。
在建模过程中,偏微分方程作为一种重要的数学工具,可以描述许多复杂的现象和过程,例如流体力学、热力学、电磁学等。
偏微分方程在实际应用中有着广泛的应用,如天气预报、环境数据分析等。
三、差分算法求解偏微分方程差分算法,又称为有限差分方法或网格法,是一种求解偏微分方程定解问题的数值解中应用最广泛的方法之一。
其基本思想是:先对求解区域作网格剖分,将自变量离散化,然后将偏微分方程转化为离散形式的代数方程组,通过求解该代数方程组得到数值解。
差分算法具有良好的数值稳定性和收敛性,适用于大多数偏微分方程的求解。
四、数值模拟在环境数据分析中的应用数值模拟是数学建模的一个重要环节,通过对现实世界中的问题进行数值模拟,可以得到近似解,从而为实际问题提供科学准确的决策指导和服务。
在环境数据分析中,数值模拟技术的应用已经取得了显著的成果。
例如,在气象预报领域,数值天气预报的诞生曾经给天气预报领域带来跨越式的发展。
通过巨型计算机进行数值计算,再用流体力学和热力学的方程组进行求解,进而预测未来一定时段的大气运动状态,为人们的生产生活提供科学准确的决策指导和服务。
五、结论总之,数学建模在解决实际问题中发挥着重要作用,其中偏微分方程作为数学建模的一个重要工具,在实际应用中具有广泛的应用。
差分算法作为一种求解偏微分方程的数值方法,具有良好的数值稳定性和收敛性。
用matlab对微分方程求解实验报告.
o 《高等数学》上机作业(三一、上机目的1、学会用 M a t l a b 求简单微分方程的解析解。
2、学会用 M a t l a b 求微分方程的数值解。
二、上机内容1、求简单微分方程的解析解.2、求微分方程的数值解.3、数学建模实例.4、上机作业. 三、上机作业1. 求微分方程:在初值条件下的特解,并画出解函数的图形. 命令>> y =d s o l v e ('x *D y +y -e x p (x =0','y (1=2*e x p (1','x ' 运行结果:y = 1/x *e x p (x +1/x *e x p (1'xxy y e +-=12(y e =函数图象:2. 求微分方程的特解.22450(00,'(110d y dyy dx dx y y ?+-=???==?命令>> y=dsolve('D2y+4*Dy-5*y=0','y(0=0,Dy(1=10','x' 运行结果:y=10/(exp(1+5*exp(-5*exp(x-10/(exp(1+5*exp(-5*exp(-5*x3. 鱼雷追击问题一敌舰在某海域内沿着正北方向航行时,我方战舰恰好位于敌舰的正西方向 1 公里处.我舰向敌舰发射制导鱼雷,敌舰速度为0.42 公里/分,鱼雷速度为敌舰速度的2倍。
试问敌舰航行多远时将被击中?M文件x0=0; xf=0.9999999999999; [x,y]=ode15s('eq1',[x0 xf],[0 0]; plot(x,y(:,1,'b.'hold on;y=0:0.1:1;plot(1,y, '*'运行结果图像:结论:大概在y=0.67处击中敌方舰艇!(选做一个慢跑者在平面上沿椭圆以恒定的速率v=1跑步,设椭圆方程为:x=10+20cost, y=20+5sint. 突然有一只狗攻击他. 这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者.分别求出w=20,w=5时狗的运动轨迹.W=20M文件代码function dy=eq3(t,ydy=zeros(2,1;dy(1=20*(10+20*cos(t-y(1/sqrt((10+20*cos(t-y(1^2+(2 0+15*sin(t-y(2^2;dy(2=20*(20+15*sin(t-y(2/sqrt((10+20*cos(t-y(1^2+(2 0+15*sin(t-y(2^2;运行命令t0=0;tf=10;[t,y]=ode45('eq3',[t0 tf],[0 0];T=0:0.1:2*pi;X=10+20*cos(T;Y=20+15*sin(T;plot(X,Y,'-'hold onplot(y(:,1,y(:,2,'r*'运行结果:利用二分法更改tf tf=5时tf=2.5时tf=3.15时:所以在t=3.15时刻恰好追上!W=5M文件代码function dy=eq4(t,ydy=zeros(2,1;dy(1=5*(10+20*cos(t-y(1/sqrt((10+20*cos(t-y(1^2+(20 +15*sin(t-y(2^2; dy(2=5*(20+15*sin(t-y(2/sqrt((10+20*cos(t-y(1^2+(20 +15*sin(t-y(2^2; 命令:t0=0;tf=10;[t,y]=ode45('eq4',[t0 tf],[0 0]; T=0:0.1:2*pi;X=10+20*cos(T; Y=20+15*sin(T; plot(X,Y,'-'hold onplot(y(:,1,y(:,2,'*' 运行结果更改tf=20运行结果Tf=40 11所以永远追不上!四、上机心得体会高等数学是工科学生的主干科目,它应用于生产生活的方方面面,通过建模,计算可以求出实际问题的最优化问题!因此我们需要掌握建模和利用专业软件处理实际问题的能力! 12。
实验二MATLAB 求微分方程的解
实验二 微分方程求解一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解).对微分方程(组)的解析解法(精确解),Matlab 有专门的函数可以用,本实验将作一定的介绍.本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍 Euler 折线法.二、相关函数(命令)及简介1.dsolve('equ1','equ2',…):Matlab 求微分方程的解析解.equ1、equ2、…为方程(或条件).写方程(或条件)时用 Dy 表示y 关于自变量的一阶导数,用用 D2y 表示 y 关于自变量的二阶导数,依此类推.2.simplify(s):对表达式 s 使用 maple 的化简规则进行化简. 例如: syms xsimplify(sin(x)^2 + cos(x)^2) ans=13.[r,how]=simple(s):由于 Matlab 提供了多种化简规则,simple 命令就是对表达式 s 用各种规则进行化简,然后用 r 返回最简形式,how 返回形成这种形式所用的规则.例如: syms x[r,how]=simple(cos(x)^2-sin(x)^2) r = cos(2*x) how = combine4.[T,Y] = solver(odefun,tspan,y 0) 求微分方程的数值解. 说明:(1) 其中的 solver 为命令 ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 之一.(2) odefun是显式常微分方程:⎪⎩⎪⎨⎧==00)(),(yt y y t f dt dy(3) 在积分区间 tspan =],[0f t t 上,从0t 到f t ,用初始条件0y 求解.(4) 要获得问题在其他指定时间点 ,210,,t t t 上的解,则令 tspan =],,,[,210f t t t t (要求是单调的).(5) 因为没有一种算法可以有效地解决所有的 ODE 问题,为此,Matlab 提供了多种求解器 Solver ,对于不同的ODE 问题,采用不同的Solver .(6) 要特别的是:ode23、ode45 是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的 Matlab 的常用程序,其中:ode23 采用龙格-库塔2 阶算法,用3 阶公式作误差估计来调节步长,具有低等的精度.ode45 则采用龙格-库塔4 阶算法,用5 阶公式作误差估计来调节步长,具有中等的精度.5.ezplot(x,y ,[tmin,tmax]):符号函数的作图命令.x,y 为关于参数t 的符号函数,[tmin,tmax] 为 t 的取值范围.6.inline():建立一个内联函数.格式:inline('expr', 'var1', 'var2',…) ,注意括号里的表达式要加引号.例:Q = dblquad(inline('y*sin(x)'), pi, 2*pi, 0, pi)三、实验内容1. 几个可以直接用 Matlab 求微分方程精确解的例子: 例1:求解微分方程22xxexy dxdy -=+,并加以验证.求解本问题的Matlab 程序为:syms x y %line1 y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') %line2diff(y ,x)+2*x*y-x*exp(-x^2) %line3 simplify(diff(y ,x)+2*x*y-x*exp(-x^2)) %line4 说明:(1) 行line1是用命令定义x,y 为符号变量.这里可以不写,但为确保正确性,建议写上;(2) 行line2是用命令求出的微分方程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3) 行line3使用所求得的解.这里是将解代入原微分方程,结果应该为0,但这里给出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4) 行line4 用 simplify() 函数对上式进行化简,结果为 0, 表明)(x y y =的确是微分方程的解.例2:求微分方程0'=-+x e y xy 在初始条件e y 2)1(=下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x yy=dsolve('x*Dy+y-exp(x)=0','y(1)=2*exp(1)','x') ezplot(y)微分方程的特解为:y=1/x*exp(x)+1/x* exp (1) (Matlab 格式),即xe e y x+=,解函数的图形如图 1:图1例3:求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++035y x dt dy e y x dtdx t在初始条件0|,1|00====t t y x 下的特解,并画出解函数的图形.求解本问题的 Matlab 程序为: syms x y t[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0','x(0)=1','y(0)=0','t') simple(x); simple(y);ezplot(x,y ,[0,1.3]);axis auto微分方程的特解(式子特别长)以及解函数的图形均略. 2. 用ode23、ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问题的数值解(近似解).例4:求解微分方程初值问题⎪⎩⎪⎨⎧=++-=1)0(2222y x x y dxdy 的数值解,求解范围为区间[0, 0.5].fun=inline('-2*y+2*x^2+2*x','x','y'); [x,y]=ode23(fun,[0,0.5],1); x'; y';plot(x,y ,'o-') >> x' ans =0.0000 0.0400 0.0900 0.1400 0.1900 0.2400 0.2900 0.3400 0.3900 0.4400 0.4900 0.5000 >> y' ans =1.0000 0.9247 0.8434 0.7754 0.7199 0.6764 0.6440 0.6222 0.6105 0.6084 0.6154 0.6179 图形结果为图 2.图2例 5:求解描述振荡器的经典的 V er der Pol 微分方程.7,0)0(',1)0(,0)1(222====+--μμy y y dtdy y dty d分析:令,,121dtdx x y x ==则.)1(,1221221x x x dtdx x dtdx --==μ先编写函数文件verderpol.m : function xprime = verderpol(t,x) global mu;xprime = [x(2);mu*(1-x(1)^2)*x(2)-x(1)]; 再编写命令文件vdp1.m : global mu; mu = 7; y0=[1;0][t,x] = ode45('verderpol',[0,40],y0); x1=x(:,1);x2=x(:,2); plot(t,x1)图形结果为图3.图33. 用 Euler 折线法求解前面讲到过,能够求解的微分方程也是十分有限的.下面介绍用 Euler 折线法求微分方程的数值解(近似解)的方法.Euler 折线法求解的基本思想是将微分方程初值问题⎪⎩⎪⎨⎧==00)(),,(yx y y x f dx dy化成一个代数方程,即差分方程,主要步骤是用差商hx y h x y )()(-+替代微商dxdy ,于是:⎪⎩⎪⎨⎧==-+)()),(,()()(00x y y x y x f h x y h x y k k k k 记)(,1k k k k x y y h x x =+=+,从而)(1h x y y k k +=+,则有1,,2,1,0).,(,),(1100-=⎪⎩⎪⎨⎧+=+==++n k y x hf y yh x x x y y k k k k k k 例 6:用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=+=1)0(,22y y x y dxdy 的数值解(步长h 取0.4),求解范围为区间[0,2].解:本问题的差分方程为1,,2,1,0).2),( ),(,,4.0,1,021100-=⎪⎪⎪⎩⎪⎪⎪⎨⎧+=+=+====++n k y x y y x f y x hf y y h x x h y x k k k k k k (其中: 相应的Matlab 程序见附录 1. 数据结果为:0 1.0000 0.4000 1.4000 0.8000 2.1233 1.2000 3.1145 1.6000 4.4593 2.0000 6.3074图形结果见图4:图4特别说明:本问题可进一步利用四阶 Runge-Kutta 法求解,读者可将两个结果在一个图中显示,并和精确值比较,看看哪个更“精确”?(相应的 Matlab 程序参见附录 2).四、自己动手1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分方程x e y y y x sin 5'2''=+-的通解.3. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dtdx在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形. 4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.5. 用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=-=1)0(,12'32y y xy y 的数值解(步长h 取0.1),求解范围为区间[0,2].6. 用四阶 Runge-Kutta 法求解微分方程初值问题⎩⎨⎧=-=1)0(,cos 'y x e y y x 的数值解(步长h 取0.1),求解范围为区间[0,3].四阶 Runge-Kutta 法的迭代公式为(Euler 折线法实为一阶 Runge-Kutta 法):1,,2,1,0),()2,2()2,2(),()22(6,),(342312143211100-=⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎨⎧++=++=++==++++=+==++n k hL y h x f L L h y h x f L L h y h x f L y x f L L L L L hy y h x x x y y k k k k k k k k k k k k 相应的 Matlab 程序参见附录 2.试用该方法求解第5题中的初值问题. 7. 用 ode45 方法求上述第 6 题的常微分方程初值问题的数值解(近似解),从而利用画图来比较两者间的差异.五、附录附录 1:(fulu1.m)clearf=sym('y+2*x/y^2'); a=0; b=2; h=0.4;n=(b-a)/h+1; x=0; y=1;szj=[x,y]; for i=1:n-1y=y+h*subs(f,{'x','y'},{x,y}); x=x+h;szj=[szj;x,y]; end szjplot(szj(:,1),szj(:,2))附录 2:(fulu2.m)clearf=sym('y-exp(x)*cos(x)'); a=0; b=3; h=0.1;n=(b-a)/h+1; x=0; y=1;szj=[x,y];for i=1:n-1l1=subs(f,{'x','y'},{x,y});l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});l4=subs(f,{'x','y'},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2))。
微分方程(2)
1) 向前欧拉公式: (y’= f (x, y) ) y (xn+1) y(xn) + h f(xn, y(xn)) (迭代式) yn+1 yn + h f(xn, yn) (近似式) 特点:f(x,y)取值于区间[xn, xn+1]的左端点.
2) 向后欧拉公式 yn+1 yn + h f(xn +1, yn +1)
= yn + (h/2)* [(-yn + xn+ 1) -(yn+ h*(-yn + xn+ 1) )+xn +1+1] = yn + (h/2)* [ (1-h)*xn + xn+1 + 2-h + (h-2)*yn] died1.m
结果
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
变量组
注意:① y '
‘t’。
② 自变量名可以省略,默认变量名
例①
dy 1 y2, dx
y ( 0) 1
输入:y=dsolve ('Dy=1+y^2') y1=dsolve('Dy=1+y^2','y(0)=1','x') 输出:y= tan(t-C1) (通解,一簇曲线) y1= tan(x+1/4*pi)(特解,一条曲线)
① 分离变量法;如 dy/dx = x*y; ② 齐次方程的变换法; 如 dy/dx = f (y/x) ③ 线性方程的常数变易法或公式法. ……
MATLAB软件实现
解析解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
求微分方程的解一、实验目的及意义1. 归纳和学习求解常微分方程(组)的基本原理和方法;2. 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;3. 熟悉MATLAB 软件关于微分方程求解的各种命令。
二、实验内容1.微分方程及方程组的解析求解法; 2.微分方程及方程组的数值求解法——欧拉、欧拉改进算法; 3.直接使用MATLAB 命令对微分方程(组)进行求解(包括解析解、数值解); 4. 利用图形对解的特征作定性分析。
三、实验步骤1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据微分方程求解步骤编写M 文件 3.保存文件并运行; 4.观察运行结果(数值或图形); 5. 根据观察到的结果和体会写出实验报告。
四、实验要求与任务根据实验内容和步骤,完成以下实验,要求写出实验报告1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.2. 求微分方程x e y y y x sin 5'2''=+-的通解.3. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dt dx 在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形.4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.5. 用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=-=1)0(,12'32y y x y y 的数值解(步长h 取0.1),求解范围为区间[0,2].6. 用四阶 Runge-Kutta 法求解微分方程初值问题⎩⎨⎧=-=1)0(,cos 'y x e y y x 的数值解(步长h 取0.1),求解范围为区间[0,3].五. 程序代码及运行结果(经调试后正确的源程序)1. 求微分方程0sin 2')1(2=-+-x xy y x 的通解.程序代码:syms x yfprintf('通解为')y=dsolve('(x^2-1)*Dy+2*x*y-sin(x)=0','x')运行结果:通解为y =(-cos(x)+C1)/(x^2-1)2. 求微分方程x e y y y x sin 5'2''=+-的通解.程序代码:syms x yfprintf('通解为')y=dsolve('D2y-2*Dy+5*y=exp(x)*sin(x)','x')运行结果:通解为y =-1/4*exp(x)*cos(2*x)*sin(x)+1/12*exp(x)*cos(2*x)*sin(3*x)-1/12*exp(x)*sin(2*x)*cos(3*x)+1/4*exp(x)*sin(2*x)*cos(x)+C1*exp(x)*cos(2*x)+C2*e xp(x)*sin(2*x)3. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=-+=++00y x dtdy y x dt dx 在初始条件0|,1|00====t t y x 下的特解,并画出解函数()y f x =的图形.程序代码:syms x y t[x,y]=dsolve('Dx+x+y=0','Dy+x-y=0','x(0)=1','y(0)=0','t')ezplot(x,y,[0,2]);运行结果:x =1/2*exp(2^(1/2)*t)+1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^(1/2)*t)+1/2*exp(-2^(1/2)*t)y =1/4*2^(1/2)*exp(-2^(1/2)*t)-1/4*2^(1/2)*exp(2^(1/2)*t)4. 分别用 ode23、ode45 求上述第 3 题中的微分方程初值问题的数值解(近似解),求解区间为[0,2]t ∈.利用画图来比较两种求解器之间的差异.程序代码:M 函数文件verderpol.m:function xprime=verderpol(t,x)xprime=[-x(1)-x(2); x(2)-x(1)];在程序中调用此函数:clear;y0=[1;0];[t,x]=ode45('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'r-'); hold onclear;y0=[1;0];[t,x]=ode23('verderpol',[0,2],y0); plot(x(:,1),x(:,2),'b-'); 运行结果:5. 用 Euler 折线法求解微分方程初值问题⎪⎩⎪⎨⎧=-=1)0(,12'32y y x y y 的数值解(步长h 取0.1),求解范围为区间[0,2].程序代码:clearf=sym('y-(12*x^2)/y^3');a=0; b=2;h=0.1;n=(b-a)/h+1;x=0; y=1;szj=[x,y];for i=1:n-1y=y+h*subs(f,{'x','y'},{x,y}); x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2),'or-')运行结果:szj =0 1.00000.1000 1.10000.2000 1.20100.3000 1.29340.4000 1.37280.5000 1.43590.6000 1.47810.7000 1.49210.8000 1.46440.9000 1.36621.0000 1.12171.1000 0.38361.2000 -25.30541.3000 -27.83581.4000 -30.61931.5000 -33.68121.6000 -37.04921.7000 -40.75411.8000 -44.82941.9000 -49.31232.0000 -54.24356. 用四阶 Runge-Kutta 法求解微分方程初值问题⎩⎨⎧=-=1)0(,cos 'y x e y y x 的数值解(步长h 取0.1),求解范围为区间[0,3].程序代码:clear;f=sym('y-exp(x)*cos(x)');a=0; b=3; h=0.1;n=(b-a)/h+1;x=0; y=1;szj=[x,y];for i=1:n-1l1=subs(f,{'x','y'},{x,y});l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2});l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2});l4=subs(f,{'x','y'},{x+h,y+l3*h});y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=[szj;x,y];endszjplot(szj(:,1),szj(:,2), 'dg-')运行结果:szj =0 1.00000.1000 0.99480.2000 0.97870.3000 0.95090.4000 0.91090.5000 0.85830.6000 0.79330.7000 0.71650.8000 0.62900.9000 0.53291.0000 0.43091.1000 0.32681.2000 0.22561.3000 0.13371.4000 0.05901.5000 0.01121.6000 0.00211.7000 0.04561.8000 0.15821.9000 0.35902.0000 0.67022.1000 1.11712.2000 1.72832.3000 2.53642.40003.57742.5000 4.89162.6000 6.52312.7000 8.52042.8000 10.93592.9000 13.82603.0000 17.2510六.实验总结本次实验的目的是归纳和学习求解常微分方程(组)的基本原理和方法;掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析;熟悉MATLAB 软件关于微分方程求解的各种命令。
实验中,我们了解和熟悉了微分方程及方程组的解析求解法;微分方程及方程组的数值求解法——欧拉、欧拉改进算法;直接使用MATLAB命令对微分方程(组)进行求解(包括解析解、数值解)以及利用图形对解的特征作定性分析。
经过多次MATLAB实验,对MATLAB的语法也越来越熟悉,对相关的数学思想也有了更多了解。
学生签名:年月日七.教师评语及成绩教师签名:年月日。