搜档网
当前位置:搜档网 › 实验七用matlab求解常微分方程

实验七用matlab求解常微分方程

实验七用matlab求解常微分方程
实验七用matlab求解常微分方程

实验七 用matlab 求解常微分方程

一、实验目的:

1、熟悉常微分方程的求解方法,了解状态方程的概念;

2、能熟练使用dsolve 函数求常微分方程(组)的解析解;

3、能熟练应用ode45\ode15s 函数分别求常微分方程的非刚性、刚性的数值解;

4、掌握绘制相图的方法 二、预备知识: 1.微分方程的概念

未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程。常微分方程的一般形式为

0),,",',,()(=n y y y y t F

如果未知函数是多元函数,成为偏微分方程。联系一些未知函数的一组微分方程组称为微分方程组。微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为

)()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--

若上式中的系数

n i t a i ,,2,1),( =均与t 无关,称之为常系数。

2.常微分方程的解析解

有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy

可化为

dt y dy

=+1,两边积分可得通解为

1-=t

ce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.

线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。

一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程

),,",',()1()(-=n n y y y t f y

设)

1(21,,',-===n n y y y y y y ,可将上式化为一阶方程组

?????????====-),,,,(''''2113221n n n

n y y y t f y y

y y y y y

反过来,在许多情况下,一阶微分方程组也可化为高阶方程。所以一阶微分方程组与高阶常微分方程的理论与方法在许多方面是相通的,一阶常系数线性微分方程组也可用特征根法求解。

3.微分方程的数值解法

除常系数线性微分方程可用特征根法求解,少数特殊方程可用初等积分法求解外,大部分微分方程无限世界,应用中主要依靠数值解法。考虑一阶常微分方程初值问题

??

?=<<=000)()),(,()('y t y t t t t y t f t y f

其中

)'.,,,(,)',,,(,)',,,(020*******m m m y y y y f f f f y y y y ===所谓数值解法,就

是寻求)(t y 在一系列离散节点f n t t t t ≤<<< 10上的近似值n k y k ,,1,0, =称

k k k t t h -=+1为步长,通常取为常量h 。最简单的数值解法是Euler 法。

Euler 法的思路极其简单:在节点出用差商近似代替导数

h t y t y t y k k k )

()()('1-≈

+

这样导出计算公式(称为Euler 格式)

,2,1,0),,(1=+=+k y t hf y y k k k k

他能求解各种形式的微分方程。Euler 法也称折线法。

Euler 方法只有一阶精度,改进方法有二阶Runge-Kutta 法、四阶Runge-Kutta 法、五阶Runge-Kutta-Felhberg 法和先行多步法等,这些方法可用于解高阶常微分方程(组)初值问题。边值问题采用不同方法,如差分法、有限元法等。数值算法的主要缺点是它缺乏物理理解。

4.解微分方程的MATLAB 命令

MATLAB 中主要用dsolve 求符号解析解,ode45,ode23,ode15s 求数值解。

ode45类似,只是精度低一些。ode12s 用来求解刚性方程组,是用格式同ode45。可以用help dsolve, help ode45查阅有关这些命令的详细信息. 例1 求下列微分方程的解析解

(1)b ay y +='

(2)1)0(',0)0(,)2sin(''==-=y y y x y

(3)

1

)0('

,1

)0('

,

'

,

'=

=

-

=

+

=g

f

f

g

g

g

f

f

方程(1)求解的MATLAB代码为:

>>clear;

>>s=dsolve('Dy=a*y+b')

结果为

s =-b/a+exp(a*t)*C1

方程(2)求解的MATLAB代码为:

>>clear;

>>s=dsolve('D2y=sin(2*x)-y','y(0)=0','Dy(0)=1','x')

>>simplify(s) %以最简形式显示s

结果为

s =(-1/6*cos(3*x)-1/2*cos(x))*sin(x)+(-1/2*sin(x)+1/6*sin(3*x))*cos(x)+5/3*sin(x) ans =-2/3*sin(x)*cos(x)+5/3*sin(x)

方程(3)求解的MATLAB代码为:

>>clear;

>>s=dsolve('Df=f+g','Dg=g-f','f(0)=1','g(0)=1')

>>simplify(s.f) %s是一个结构

>>simplify(s.g)

结果为

ans =exp(t)*cos(t)+exp(t)*sin(t)

ans =-exp(t)*sin(t)+exp(t)*cos(t)

例2求解微分方程

,1

)0(

,1

'=

+

+

-

=y

t

y

y

先求解析解,再求数值解,并进行比较。由

>>clear;

>>s=dsolve('Dy=-y+t+1','y(0)=1','t')

>>simplify(s)

可得解析解为

t

e

t

y-

+

=。下面再求其数值解,先编写M文件fun8.m

%M函数fun8.m

function f=fun8(t,y)

f=-y+t+1;

再用命令

>>clear; close; t=0:0.1:1;

>>y=t+exp(-t); plot(t,y); %化解析解的图形

>>hold on; %保留已经画好的图形,如果下面再画图,两个图形和并在一起>>[t,y]=ode45('fun8',[0,1],1);

>>plot(t,y,'ro'); %画数值解图形,用红色小圈画

>>xlabel('t'),ylabel('y')

结果见图7.1

图16.6.1 解析解与数值解

由图16.6.1可见,解析解和数值解吻合得很好。 例3 求方程

0)0(',)0(,sin "0===θθθθθmg ml

的数值解.不妨取15)0(,8.9,1===θg l .则上面方程可化为

0)0(',15)0(,sin 8.9"===θθθθ

先看看有没有解析解.运行MATLAB 代码

>>clear;

>>s=dsolve('D2y=9.8*sin(y)','y(0)=15','Dy(0)=0','t') >>simplify(s)

知原方程没有解析解.下面求数值解.令',21θθ==y y 可将原方程化为如下方程组

???

??====0

)0(,15)0()sin(8.9''21

1221y y y y y y

建立M 文件fun9.m 如下

%M 文件fun9.m

function f=fun9(t,y)

f=[y(2), 9.8*sin(y(1))]'; %f 向量必须为一列向量

运行MATLAB 代码

>>clear; close;

>>[t,y]=ode45('fun9',[0,10],[15,0]);

>>plot(t,y(:,1)); %画θ随时间变化图,y(:2)则表示'θ的值 >>xlabel('t'),ylabel('y1')

结果见图7.2

图7.2 数值解

由图7.2可见,θ随时间t周期变化。

以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:[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 =中的(,)f t y

tspan 为求解区间,要获得问题在其他指定点012,,,t t t 上的解,则令

012[,,,,]f tspan t t t t = (要求i t 单调),

y0初始条件。

例5:求解常微分方程2

'222y y x x =-++,00.5x ≤≤,(0)1y =的MATLAB

程序如下:fun=inline('-2*y+2*x*x+2*x');[x,y]=ode23(fun,[0,0.5],1) 结果为: x =

0,0.0400,0.0900,0.1400,0.1900,0.2400,0.2900,0.3400,0.3900,0.4400,0.4900,0.5000 y =

1.0000,0.9247,0.8434,0.7754,0.7199,0.6764,0.6440,0.6222,0.6105,0.6084,0.6154,0.6179

例6:求解常微分方程222

(1)0,(0)1,'(0)0d y dy y y y y dt dt μ--+===的解,并画

出解的图形。

分析:这是一个二阶非线性方程,用现成的方法均不能求解,但我们可以通过下面的变换,将二阶方程化为一阶方程组,即可求解。

令:1x y =,

2dy

x dt =

,7μ=,则得到:

1

21221212

,(0)17(1),(0)0

dx x x dt dx x x x x dt ?==???

?=--=??

接着,编写vdp.m 如下: function fy=vdp(t,x)

fy=[x(2);7*(1-x(1)^2)*x(2)-x(1)]; 再编写m 文件sy12_6.m 如下: y0=[1;0]

[t,x]=ode45(@vdp,[0,40],y0); y=x(:,1);dy=x(:,2);

plot(t,y,t,dy)

三、实验内容:

1.求下列微分方程的解析解

2.求方程

3)0(',1)0(,'2")1(2===+y y xy y x

的解析解和数值解,并进行比较

3.分别用ode45和ode15s 求解Van-del-Pol 方程

()??

???===---1)0',0)0(0)1(1000

222x x x dt dx

x dt

x d

的数值解,并进行比较.

MATLAB数学实验第二版答案(胡良剑)

数学实验答案 Chapter 1 Page20,ex1 (5) 等于[exp(1),exp(2);exp(3),exp(4)] (7) 3=1*3, 8=2*4 (8) a为各列最小值,b为最小值所在的行号 (10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture (11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10) (12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10) Page20, ex2 (1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a与c相等,但他们不等于b (2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码 Page20,ex3 >> r=2;p=0.5;n=12; >> T=log(r)/n/log(1+0.01*p) Page20,ex4 >> x=-2:0.05:2;f=x.^4-2.^x; >> [fmin,min_index]=min(f) 最小值最小值点编址 >> x(min_index) ans = 0.6500 最小值点 >> [f1,x1_index]=min(abs(f)) 求近似根--绝对值最小的点 f1 = 0.0328 x1_index = 24 >> x(x1_index) ans = -0.8500 >> x(x1_index)=[];f=x.^4-2.^x; 删去绝对值最小的点以求函数绝对值次小的点 >> [f2,x2_index]=min(abs(f)) 求另一近似根--函数绝对值次小的点 f2 = 0.0630 x2_index = 65 >> x(x2_index) ans = 1.2500

MATLAB基本操作实验报告

南昌航空大学 数学与信息科学学院 实验报告 课程名称:数学实验 实验名称: MATLAB基本操作 实验类型:验证性■综合性□ 设计性□ 实验室名称:数学实验室 班级学号: 10 学生姓名:钟 X 任课教师(教师签名): 成绩: 实验日期: 2011-10- 10

一、实验目的 1、熟悉MATLAB基本命令与操作 2、熟悉MATLAB作图的基本原理与步骤 3、学会用matlab软件做图 二、实验用仪器设备、器材或软件环境 计算机MATLAB软件 三、实验原理、方案设计、程序框图、预编程序等 问题1:在区间【0,2π】画sinx 实验程序: >> x=linspace(0,2*pi,30); >> y=sin(x); >> plot(x,y) 问题2:在【0,2π】用红线画sinx,用绿圈画cosx,实验程序:

>> x=linspace(0,2*pi,30); >> y=sin(x); >> z=cos(x); >> plot(x,y,'r',x,z,'co') >> 问题3:在【0,π】上画y=sinx的图形。 实验程序: >> ezplot('sin(x)',[0,pi]) >> 问题4:在【0,π】上画x=cos3t,y=sin3t星形图形。

实验程序: >> ezplot('cos(t).^3','sin(t).^3',[0,pi]) >> 问题5:[-2,0.5],[0,2]上画隐函数 实验程序: >> ezplot('exp(x)+sin(x*y)',[-2,0.5,0,2]) >> 问题6:在[-2,2]范围内绘制tanh的图形。实验程序: >> fplot('tanh',[-2,2])

MATLAB实验报告

MATLAB程序设计语言 实 验 报 告 专业及班级:电子信息工程 姓名:王伟 学号:1107050322 日期 2013年6月20日

实验一 MATLAB 的基本使用 【一】 实验目的 1.了解MATALB 程序设计语言的基本特点,熟悉MATLAB 软件的运行环境; 2.掌握变量、函数等有关概念,掌握M 文件的创建、保存、打开的方法,初步具备将一般数学问题转化为对应计算机模型处理的能力; 3.掌握二维图形绘制的方法,并能用这些方法实现计算结果的可视化。 【二】 MATLAB 的基础知识 通过本课程的学习,应基本掌握以下的基础知识: 一. MATLAB 简介 二. MATLAB 的启动和退出 三. MATLAB 使用界面简介 四. 帮助信息的获取 五. MATLAB 的数值计算功能 六. 程序流程控制 七. M 文件 八. 函数文件 九. MATLAB 的可视化 【三】上机练习 1. 仔细预习第二部分内容,关于MATLAB 的基础知识。 2. 熟悉MATLAB 环境,将第二部分所有的例子在计算机上练习一遍 3. 已知矩阵???? ??????=??????????=123456789,987654321B A 。求A*B ,A .* B ,比较二者结果是否相同。并利用MATLAB 的内部函数求矩阵A 的大小、元素和、长度以 及最大值。 程序代码: >> A=[1 2 3;4 5 6;7 8 9]; >> B=[9 8 7;6 5 4;3 2 1]; >> A*B ans =

30 24 18 84 69 54 138 114 90 >> A.*B ans = 9 16 21 24 25 24 21 16 9 两者结果不同 >> [m,n]=size(A) m = 3 n = 3 >> b=sum(A) b = 12 15 18 >> a=length(A) a = 3 >>max(A) ans =

实验一 MATLAB基本操作及运算(含实验报告).

实验一 MATLAB 基本操作及运算 一、 实验目的 1、 理解Matlab 数据对象的特点; 2、 掌握基本Matlab 运算规则; 3、 掌握Matlab 帮助的使用方法; 二、 实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 三、 实验内容 要求建立一个名为experiment01.m 的,把与实验内容1-7相关的实验命令都放入该文件中,题与题之间用相应注释分割。注意对实验中出现的相关函数或变量,请使用help 或doc 查询相关帮助文档,学习函数的用法。 1、 建立以下标量: 1) a=10 2) b=2.5×1023 3) c=2+3i ,(i 为虚数单位) 4) d=3/2πj e ,(j 为虚数单位,这里要用到exp ,pi ) 2、 建立以下向量: 1) aVec=[3.14 15 9 26] 2) bVec=????? ???????18228871.2 3) cVec=[5 4.8 … -4.8 -5 ] (向量中的数值从5到-5,步长为-0.2) 4) dVec=[100 100.01 … 100.99 101] (产生1到10之间的等对数间隔向量,参考logspace ,注意向量的长度) 3、 建立以下矩阵: 1)???? ??????=2222 aMat aMat 一个9×9的矩阵,其元素全为2;(参考ones 或zeros )

2)??????? ?????????=1000005000001 bMat bMat 是一个9×9的矩阵,除主对角上的元素为[1 2 3 4 5 4 3 2 1]外,其余元素均为0。(参考diag )。 3)100 20109212291111 =cMat cMat 为一个10×10的矩阵,可有1:100的向量来产生(参考reshape ) 4)???? ??????=NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN dMat dMat 为3×4的NaN 矩阵,(参考nan ) 5)?? ????---=8710225113eMat 6)产生一个5×3随机整数矩阵fMat ,其值的范围在-3到3之间。(参考rand 和floor 或ceil ) 4、 使用题1中的变量计算下列等式的x,y,z 的值: 1) ) 6/)15((11--+=a e x 2) g g h h b a y /121,)(=+=提示π,参考sqrt 。 3) c c a d c d c R z ))3/sin()]))([(log(π-+= ,其中R 表示取括号内复数的实数部分,c 表示c 的共轭复数,log 是自然对数。(参考real ,conj ,log ) 5、 使用题2中的向量求解一下等式: 1))25.2/(22 25.221 cVec e xVec -=π, 其中cVec 指的是题2 中定义的向量cVec ,一下雷同。 2)22)(bVec aVec yVec T +=,T aVec 表示aVec 的转置 3) )/1(log 10dVec zVec =,10log 表示已10为底的对数,参考log10 6、 使用题2和题3中所产生的向量和矩阵计算以下等式,注意本题的操作

用MATLAB解常微分方程

实验四 求微分方程的解 一、问题背景与实验目的 实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解). 对微分方程(组)的解析解法(精确解),Matlab 有专门的函数可以用,本实验将作一定的介绍. 本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍 Euler 折线法. 二、相关函数(命令)及简介 1.dsolve ('equ1','equ2',…):Matlab 求微分方程的解析解.equ1、equ2、…为方程(或条件).写方程(或条件)时用 Dy 表示y 关于自变量的一阶导数,用用 D2y 表示 y 关于自变量的二阶导数,依此类推. 2.simplify(s ):对表达式 s 使用 maple 的化简规则进行化简. 例如: syms x simplify(sin(x)^2 + cos(x)^2) ans=1 3.[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 = combine 4.[T,Y] = solver(odefun,tspan,y 0) 求微分方程的数值解. 说明: (1) 其中的 solver 为命令 ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 之一. (2) odefun 是显式常微分方程:?????==0 0)() ,(y t y y t f dt dy (3) 在积分区间 tspan =],[0f t t 上,从0t 到f t ,用初始条件0y 求解.

matlab操作实验报告

实验一matlab基本操作 一、实验目的 熟悉matlab的安装与启动;熟悉matlab用户界面;熟悉matlab功能、建模元素;熟悉matlab优化建模过程。 二、实验设备与工具 1.计算机 2.matlab软件 三、实验步骤 1. 了解matlab的硬件和软件必备环境; 2. 启动matlab; 3. 学习优化建模过程。 四、实验报告要求 1. 写出matlab系统界面的各个构成;以及系统布局区的组成;以及每一部 分的功能; 2. 优化建模过程应用举例 五、实验内容 (一)、Matlab操作界面 1.命令窗口(command window) 2.命令历史窗口(command history) 3.工作空间管理窗口(workspace) 4.当前路径窗口(current directory) (二)、优化建模过程应用举例 1、简单矩阵 123 456 789 A ?? ?? =?? ?? ?? 的输入步骤。 (1)在键盘上输入下列内容 A = [1,1,3; 4,5,6; 7,8,9] (2)按【Enter】键,指令被执行。 (3)在指令执行后,MATLAB指令窗中将显示以下结果: A = 1 2 3 4 5 6 7 8 9

2、矩阵的分行输入。 A=[1,2,3 4,5,6 7,8,9] A = 1 2 3 4 5 6 7 8 9 3、指令的续行输入 S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S = 0.6345 4、画出衰减振荡曲线t e y t 3sin 3-=及其它的包络线3 0t e y -=。t 的取值范围是]4,0[π。 t=0:pi/50:4*pi; y0=exp(-t/3); y=exp(-t/3).*sin(3*t); plot(t,y,'-r',t,y0,':b',t,-y0,':b') grid 5、画出2222) sin(y x y x z ++=所表示的三维曲面。y x ,的取值范围是]8,8[-。 clear;x=-8:0.5:8; y=x';

(完整版)Matlab实验7图形绘制

实验7:图形绘制 一、实验目的 1、 掌握绘制二维图形的常用函数。 2、 掌握绘制三维图形的常用函数。 3、 掌握绘制图形的辅助操作。 二、实验内容 1、 已知2*13),2cos(2,12 y y y x y x y ===,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 %homework_7_1_1.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'r--',x,y2,'k:',x,y3,'b-.'); (2) 以子图形式绘制三条曲线。 %homework_7_1_2.m x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; subplot(2, 2, 1); plot(x,y1,'r--'); subplot(2, 2, 2); plot(x,y2,'k:'); subplot(2, 2, 3); plot(x,y3,'b-.'); (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 %homework_7_1_3.m %ì?D?í??¢?×ìYí??¢??í?oíì?3?í? x=0:pi/100:2*pi; y1=x.*x; y2=cos(2*x); y3=y1.*y2; %μúò?DD subplot(4, 3, 1); bar(x,y1,'r'); subplot(4, 3, 2); bar(x,y2,'k'); subplot(4, 3, 3); bar(x,y3,'b'); %μú?tDD

stairs(x,y1,'r'); subplot(4, 3, 5); stairs(x,y2,'k'); subplot(4, 3, 6); stairs(x,y3,'b'); %μúèyDD subplot(4, 3, 7); stem(x,y1,'r'); subplot(4, 3, 8); stem(x,y2,'k'); subplot(4, 3, 9); stem(x,y3,'b'); %μú??DD subplot(4, 3, 10); fill(x,y1,'r'); subplot(4, 3, 11); fill(x,y2,'k'); subplot(4, 3, 12); fill(x,y3,'b'); 2、 绘制极坐标曲线)sin(θρn b a +=,并分析参数a ,b ,n 对曲线形状的影响。 %homework_7_2.m function homework_7_2(a,b,n) theta=0:0.01:2*pi; rho=a.*sin(b+n.*theta); polar(theta,rho,'k'); %homework_7_2_tiao.m % a μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(2,1,1) subplot(3, 4, 3); homework_7_2(3,1,1) subplot(3, 4, 4); homework_7_2(4,1,1) % b μ?ó°?ì subplot(3, 4, 1); homework_7_2(1,1,1) subplot(3, 4, 2); homework_7_2(1,2,1) subplot(3, 4, 3); homework_7_2(1,3,1)

用Matlab软件求常微分方程的解或通解

《高等数学》实验报告 实验人员:系(班): 学号: 姓名: 实验地点:电教楼五号机房 实验名称:Matlab 高等数学实验 实验时间:2014-6-3 16:30--18:30 实验名称:用Matlab 软件求常微分方程的解(或通解) 实验目的:熟练掌握Matlab 软件求常微分方程的解(或通解) 实验内容:(给出实验程序与运行结果) 1、求微分方程的特解. 1、?? ?? ?===+-10)0(,6)0(034'2 2y y y dx dy dx y d 程序:>> dsolve('D2y-4*Dy+3*y','y(0)=6,Dy(0)=10','x') ans = 4*exp(x)+2*exp(3*x) 吕梁学院《高等数学》实验报告 情况试高中

2、?? ???===++0)0(,2)0(044'2 2y y y dx dy dx y d 程序:>>dsolve('4*D2y+4*Dy+y','y(0)=2,Dy(0)=0','x') ans = 2*exp(-1/2*x)+exp(-1/2*x)*x 3、?? ???===++15)0(',0)0(029422y y y dx dy dx y d 程序:>>dsolve('D2y+4*Dy+29*y=0','y(0)=9,Dy(0)=15','x') ans = 33/5*exp(-2*x)*sin(5*x)+9*exp(-2*x)*cos(5*x) 4、?? ???===+-3)0(',0)0(013422y y y dx dy dx y d 程序:>>dsolve('D2y-4*dy+13*y=0','y(0)=0','Dy(0)=3','x') ans = 3/13*sin(13^(1/2)*x)*13^(1/2)-4/13*cos(13^(1/2)*x)*dy+4/13*dy 5、?? ???-===--5)0(',0)0(04322y y y dx dy dx y d 程序:>>dsolve('D2y-3*Dy-4*y','y(0)=0,Dy(0)=-5','x') ans = exp(-x)-exp(4*x)

MATLAB基本操作实验报告

MATLAB基本操作 实验报告 课程名称: 院系: 专业班级: 学号: 学生姓名: 指导教师: 开课时间:至学年第学期

一、学生撰写要求 按照实验课程培养方案的要求,每门实验课程中的每一个实验项目完成后,每位参加实验的学生均须在实验教师规定的时间内独立完成一份实验报告,不得抄袭,不得缺交。 学生撰写实验报告时应严格按照本实验报告规定的内容和要求填写。字迹工整,文字简练,数据齐全,图表规范,计算正确,分析充分、具体、定量。 二、教师评阅与装订要求 1.实验报告批改要深入细致,批改过程中要发现和纠正学生实验报告中的问题,给出评语和实验报告成绩,签名并注明批改日期。实验报告批改完成后,应采用适当的形式将学生实验报告中存在的问题及时反馈给学生。 2.实验报告成绩用百分制评定,并给出成绩评定的依据或评分标准(附于实验报告成绩登记表后)。对迟交实验报告的学生要酌情扣分,对缺交和抄袭实验报告的学生应及时批评教育,并对该次实验报告的分数以零分处理。对单独设课的实验课程,如学生抄袭或缺交实验报告达该课程全学期实验报告总次数三分之一以上,不得同意其参加本课程的考核。 3.各实验项目的实验报告成绩登记在实验报告成绩登记表中。本学期实验项目全部完成后,给定实验报告综合成绩。 4.实验报告综合成绩应按课程教学大纲规定比例(一般为10-15%)计入实验课总评成绩;实验总评成绩原则上应包括考勤、实验报告、考核(操作、理论)等多方面成绩; 5.实验教师每学期负责对拟存档的学生实验报告按课程、学生收齐并装订,按如下顺序装订成册:实验报告封面、实验报告成绩登记表、实验报告成绩评定依据、实验报告(按教学进度表规定的实验项目顺序排序)。装订时统一靠左侧按“两钉三等分”原则装订。

MATLAB求解常微分方程数值解

利用MATLAB求解常微分方程数值解

目录 1. 内容简介 (1) 2. Euler Method(欧拉法)求解 (1) 2.1. 显式Euler法和隐式Euler法 (2) 2.2. 梯形公式和改进Euler法 (3) 2.3. Euler法实用性 (4) 3. Runge-Kutta Method(龙格库塔法)求解 (5) 3.1. Runge-Kutta基本原理 (5) 3.2. MATLAB中使用Runge-Kutta法的函数 (7) 4. 使用MATLAB求解常微分方程 (7) 4.1. 使用ode45函数求解非刚性常微分方程 (8) 4.2. 刚性常微分方程 (9) 5. 总结 (9) 参考文献 (11) 附录 (12) 1. 显式Euler法数值求解 (12) 2. 改进Euler法数值求解 (12) 3. 四阶四级Runge-Kutta法数值求解 (13) 4.使用ode45求解 (14)

1.内容简介 把《高等工程数学》看了一遍,增加对数学内容的了解,对其中数值解法比较感兴趣,这大概是因为在其它各方面的学习和研究中经常会遇到数值解法的问题。理解模型然后列出微分方程,却对着方程无从下手,无法得出精确结果实在是让人难受的一件事情。 实际问题中更多遇到的是利用数值法求解偏微分方程问题,但考虑到先从常微分方程下手更为简单有效率,所以本文只研究常微分方程的数值解法。把一个工程实际问题弄出精确结果远比弄清楚各种细枝末节更有意思,因此文章中不追求非常严格地证明,而是偏向如何利用工具实际求解出常微分方程的数值解,力求将课程上所学的知识真正地运用到实际方程的求解中去,在以后遇到微分方程的时候能够熟练运用MATLAB得到能够在工程上运用的结果。 文中求解过程中用到MATLAB进行数值求解,主要目的是弄清楚各个函数本质上是如何对常微分方程进行求解的,对各种方法进行MATLAB编程求解,并将求得的数值解与精确解对比,其中源程序在附录中。最后考察MATLAB中各个函数的适用范围,当遇到实际工程问题时能够正确地得到问题的数值解。 2.Euler Method(欧拉法)求解 Euler法求解常微分方程主要包括3种形式,即显式Euler法、隐式Euler法、梯形公式法,本节内容分别介绍这3种方法的具体内容,并在最后对3种方法精度进行对比,讨论Euler法的实用性。 本节考虑实际初值问题 使用解析法,对方程两边同乘以得到下式

MATLAB实验七

实验七、MATLAB的绘图操作(一) 1、>> x=0:0.1:10;y1=x.^2;y2=cos(2*x);y3=y1.*y2; 在同一坐标下用不同的颜色和线型绘制三条曲线 >> plot(x,y1,':'),hold on,plot(x,y2,'b'),hold on,plot(y3,'g') 以子图形式绘制3条曲线 >> subplot(2,2,1),plot(x,y1),subplot(2,2,2),plot(x,y2),subplot(2,2,3),plot(y3) 分别以条形图阶梯图直方图和填充图绘制曲线 条形 图:>>subplot(2,2,1),bar(x,y1),subplot(2,2,2),bar(x,y2),subplot(2,2,3),bar(y3)

阶梯图: >> subplot(2,2,1),stairs(x,y1),subplot(2,2,2),stairs(x,y2),subplot(2,2,3),stairs(y3) 填充图: >> subplot(2,2,1),fill(x,y1,'r'),subplot(2,2,2),fill(x,y2,'r'),subplot(2,2,3),fill(x,y3,'r') 2、绘制极坐标曲线p=a*sin(b+nθ) >> a=2;b=4;n=3;th=0:0.01:pi;polar(th,a*sin(b+n*th)) 3、绘制函数的曲面图 (1、)>> [x,y]=meshgrid(-1:0.01:1,-1:0.01:1);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);plot3(x,y,z,'y')

实验5 Matlab绘图操作实验报告

Tutorial 5 实验报告 实验名称:Matlab 绘图操作 实验目的: 1、 掌握绘制二维图形的常用函数; 2、 掌握绘制三维图形的常用函数; 3、 掌握绘制图形的辅助操作。 实验内容: 1. 设sin .cos x y x x ?? =+ ??+?? 23051,在x=0~2π区间取101点,绘制函数的曲线。 2. 已知: y x =21,cos()y x =22,y y y =?312,完成下列操作: (1) 在同一坐标系下用不同的颜色和线性绘制三条曲线; (2) 以子图形式绘制三条曲线; (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 3. 已知:ln(x y x x ≤=??+>??0102 ,在x -≤≤55区间绘制函数曲线。 4. 绘制极坐标曲线sin()a b n ρθ=+,并分析参数a 、b 、n 对曲线形状的影响。 5.在xy 平面内选择区域[][],,-?-8888, 绘制函数z =的三种三维曲面图。 6. 用plot 函数绘制下面分段函数的曲线。 ,(),,x x f x x x x ?+>? ==??+

8. 在同一坐标轴中绘制下列两条曲线。 (1).y x =-205 (2)sin()cos ,sin()sin x t t t y t t π=?≤≤? =?303 实验结果: 1. 2. (1)

(2)

(3)

Matlab求解微分方程(组)及偏微分方程(组)

第四讲 Matlab 求解微分方程(组) 理论介绍:Matlab 求解微分方程(组)命令 求解实例:Matlab 求解微分方程(组)实例 实际应用问题通过数学建模所归纳得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法:解析解法和数值解法. 一.相关函数、命令及简介 1.在Matlab 中,用大写字母D 表示导数,Dy 表示y 关于自变量的一阶导数,D2y 表示y 关于自变量的二阶导数,依此类推.函数dsolve 用来解决常微分方程(组)的求解问题,调用格式为: X=dsolve(‘eqn1’,’eqn2’,…) 函数dsolve 用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解. 注意,系统缺省的自变量为t 2.函数dsolve 求解的是常微分方程的精确解法,也称为常微分方程的符号解.但是,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰富的函数,我们将其统称为solver ,其一般格式为: [T,Y]=solver(odefun,tspan,y0) 说明:(1)solver 为命令ode45、ode23、ode113、ode15s 、ode23s 、ode23t 、ode23tb 、ode15i 之一. (2)odefun 是显示微分方程'(,)y f t y =在积分区间tspan 0[,]f t t =上从0t 到f t 用初始条件0y 求解. (3)如果要获得微分方程问题在其他指定时间点012,,, ,f t t t t 上的解,则令 tspan 012[,,,]f t t t t =(要求是单调的). (4)因为没有一种算法可以有效的解决所有的ODE 问题,为此,Matlab 提供

matlab实验报告

实验报告 2. The Branching statements 一、实验目的: 1.To grasp the use of the branching statements; 2.To grasp the top-down program design technique. 二、实验内容及要求: 1.实验内容: 1).编写 MATLAB 语句计算 y(t)的值 (Write the MATLAB program required to calculate y(t) from the equation) ???<+≥+-=0 530 53)(2 2t t t t t y 已知 t 从-5到 5 每隔0.5取一次值。运用循环和选择语句进行计算。 (for values of t between -5 and 5 in steps of 0.5. Use loops and branches to perform this calculation.) 2).用向量算法解决练习 1, 比较这两个方案的耗时。 (tic ,toc 的命令可以帮助你完成的时间计算,请使用'help'函数)。 Rewrite the program 1 using vectorization and compare the consuming time of these two programs. (tic, toc commands can help you to finish the time calculation, please use the …help ? function). 2.实验要求: 在报告中要体现top-down design technique, 对于 3 要写出完整的设计过程。 三、设计思路: 1.用循环和选择语句进行计算: 1).定义自变量t :t=-5:0.5:5; 2).用循环语句实现对自变量的遍历。 3).用选择语句实现对自变量的判断,选择。 4).将选择语句置入循环语句中,则实现在遍历中对数据的选择,从而实现程序的功能。 2. 用向量法实现: 1).定义自变量t :t=-5:0.5:5; 2).用 b=t>=0 语句,将t>=0得数据选择出,再通过向量运算y(b)=-3*t(b).^2 + 5; 得出结果。 3).用取反运算,选择出剩下的数据,在进行向量运算,得出结果。 四、实验程序和结果 1.实验程序 实验程序:创建m 文件:y_t.m

(完整版)实验七用matlab求解常微分方程

实验七 用matlab 求解常微分方程 一、实验目的: 1、熟悉常微分方程的求解方法,了解状态方程的概念; 2、能熟练使用dsolve 函数求常微分方程(组)的解析解; 3、能熟练应用ode45\ode15s 函数分别求常微分方程的非刚性、刚性的数值解; 4、掌握绘制相图的方法 二、预备知识: 1.微分方程的概念 未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程。常微分方程的一般形式为 0),,",',,()(=n y y y y t F Λ 如果未知函数是多元函数,成为偏微分方程。联系一些未知函数的一组微分方程组称为微分方程组。微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为 ) ()(')()(1)1(1)(t b y t a y t a y t a y n n n n =++++--Λ 若上式中的系数 n i t a i ,,2,1),(Λ=均与t 无关,称之为常系数。 2.常微分方程的解析解 有些微分方程可直接通过积分求解.例如,一解常系数常微分方程1+=y dt dy 可化为 dt y dy =+1,两边积分可得通解为 1-=t ce y .其中c 为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解. 线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解.一阶变系数线性微分方程总可用这一思路求得显式解。高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解,再用常数变异法求特解。 一阶常微分方程与高阶微分方程可以互化,已给一个n 阶方程 ),,",',()1()(-=n n y y y t f y Λ 设 ) 1(21,,',-===n n y y y y y y Λ,可将上式化为一阶方程组 ?????????====-),,,,(''''2113221n n n n y y y t f y y y y y y y ΛΛ 反过来,在许多情况下,一阶微分方程组也可化为高阶方程。所以一阶微分方程组与高阶常微分方程的理论与方法在许多方面是相通的,一阶常系数线性微分方程组也可用特征根法求解。 3.微分方程的数值解法 除常系数线性微分方程可用特征根法求解,少数特殊方程可用初等积分法求解外,大部分微分方程无限世界,应用中主要依靠数值解法。考虑一阶常微分方程初值问题

用Matlab件求常微分方程解(或通解)

用Matlab件求常微分方程解(或通解)

————————————————————————————————作者:————————————————————————————————日期:

《高等数学》实验报告 实验人员:系(班): 学号: 姓名: 实验地点:电教楼五号机房 实验名称:Matlab 高等数学实验 实验时间:2014-6-3 16:30--18:30 实验名称:用Matlab 软件求常微分方程的解(或通解) 实验目的:熟练掌握Matlab 软件求常微分方程的解(或通解) 实验内容:(给出实验程序与运行结果) 一、求微分方程的特解. 1、?? ???===+-10)0(,6)0(034'22y y y dx dy dx y d 程序:>> dsolve('D2y-4*Dy+3*y','y(0)=6,Dy(0)=10','x') ans = 4*exp(x)+2*exp(3*x) 吕梁学院《高等数学》实验报告

2、?? ???===++0)0(,2)0(044'22y y y dx dy dx y d 程序:>>dsolve('4*D2y+4*Dy+y','y(0)=2,Dy(0)=0','x') ans = 2*exp(-1/2*x)+exp(-1/2*x)*x 3、?? ???===++15)0(',0)0(029422y y y dx dy dx y d 程序:>>dsolve('D2y+4*Dy+29*y=0','y(0)=9,Dy(0)=15','x') ans = 33/5*exp(-2*x)*sin(5*x)+9*exp(-2*x)*cos(5*x) 4、?? ???===+-3)0(',0)0(013422y y y dx dy dx y d 程序:>>dsolve('D2y-4*dy+13*y=0','y(0)=0','Dy(0)=3','x') ans = 3/13*sin(13^(1/2)*x)*13^(1/2)-4/13*cos(13^(1/2)*x)*dy+4/13*dy 5、?? ???-===--5)0(',0)0(04322y y y dx dy dx y d 程序:>>dsolve('D2y-3*Dy-4*y','y(0)=0,Dy(0)=-5','x') ans = exp(-x)-exp(4*x)

MATLAB实验报告1(推荐文档)

学生实验报告

一、实验目的 熟悉MATLAB 软件的用户环境;了解MATLAB 软件的一般命令;掌握MATLAB 向量、数组、矩阵操作与运算函数;掌握MATLAB 软件的基本绘图命令;掌握MATLAB 语言的几种循环、条件和开关选择结构,及其编程规范。 通过该实验的学习,使学生能灵活应用MATLAB 软件解决一些简单问题,能借助MATLAB 软件的绘图功能,对函数的特性进行探讨,广泛联想,大胆猜想,发现进而证实其中的规律。 二、实验仪器、设备或软件: 电脑,MATLAB 软件 三、实验内容 1.MATLAB 软件的数组操作及运算练习; 2.直接使用MATLAB 软件进行作图练习; 3.用MATLAB 语言编写命令M 文件和函数M 文件。 四、实验步骤 1.在D 盘建立一个自己的文件夹; 2.开启软件平台——MATLAB ,将你建立的文件夹加入到MATLAB 的搜索路径中; 3.利用帮助了解函数max, min, sum, mean, sort, length ,rand, size 和diag 的功能和用法; 4.开启MATLAB 编辑窗口,键入你编写的M 文件(命令文件或函数文件); 5.保存文件(注意将文件存入你自己的文件夹)并运行; 6.若出现错误,修改、运行直到输出正确结果; 7.写出实验报告,并浅谈学习心得体会。 五、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→算法与编程→计算结果或图形→心得体会) 1. 已知矩阵??????????=321212113A , ???? ? ?????--=101012111B 要求:(1)屏幕输出A 与B ;(2)A 的转置A′;(3)求A+B 的值;(4)求A-B 的值;(5)求4A ;(6)求A×B ;(7)求A -1.

matlab求解常微分方程.docx

用matlab求解常微分方程 在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:r 二dsolve('eql,eq2,???字condl,cond2,?.?;V) 匕ql,eq2,???*为微分方程或微分方程组,,condl,cond2,.??;是初始条件或边界条件,P是独立变量,默认的独立变量是讥 函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。 dy _1 例1:求解常微分方程莎一石的MATLAB程序为: dsolve(* Dy=l/(x+y) 1r!x1), 注意,系统缺省的自变量为t,因此这里要把自变量写明。其中:Y=lambertw(X)表示函数关系Y*exp(Y)二X。 例2:求解常微分方程E'-y— 0的MATLAB程序为: Y2=dsolve(1y*D2y-Dy A2=01, 1x f) Y2=dsolve(!D2y*y-Dy A2=0 J )

我们看到有两个解,其中一个是常数0。 dx 心 ? —+ 5x + y = e dt 空_兀_3『= g2f 例3:求常微分方程组〔力 ' 通解的MATLAB 程序为: [X,Y]=dsolve(f Dx+5*x+y=exp(t),Dy-x-3*y=exp(2*t) 1, 111 ) [X,Y]=dsolve(1 Dx+2 *x-Dy=l0 * cos(t),Dx+Dy+2 *y=4 *exp(- 2*t) T ,f x(0)=2,y(0)=0f ,f t T ) 以上这些都是常微分方程的精确解法,也称为常微分方程的符号解。但是,我们知 道,有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析 解,此吋,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB 具有丰 富的函数,我们将其统称为solver,其一般格式为: i°cosr, 7 =2 例4:求常微分方程组 y = 0 z 通解的MATLAB 程序为:

Matlab程序设计实验报告

实验七Matlab 程序设计 实验目的: 1、掌握建立和执行M 文件的方法; 2、掌握实现选择结构的方法; 3、掌握实现循环结构的方法。 实验内容: 1. 编写用 5 次多项式拟合函数y=sin(x), x [0, 2 ]的脚本M 文件,要求绘图观察拟合的效果。 function shiyan1 x=0:0.5:2*pi y=sin(x) p=polyfit(x,y,5) x1=0:0.2:2*pi y1=polyval(p,x1) plot(x,y, 'b' ,x1,y1, '*r' x =

Columns 1 through 9 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 Columns 10 through 13 4.5000 5.0000 5.5000 6.0000 y = Columns 1 through 9 0 0.4794 0.8415 0.9975 0.9093 0.5985 0.1411 -0.3508 -0.7568 Columns 10 through 13 -0.9775 -0.9589 -0.7055 -0.2794 p = -0.0056 0.0881 -0.3967 0.2671 0.8902 0.0029 x1 = Columns 1 through 10 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 1.4000 1.6000 1.8000 Columns 11 through 20

2. 2.2000 2.4000 2.6000 2.8000 3.0000 3.2000 3.4000 3.6000 1.8001 Columns 21 through 30 4.0 4.2000 4.4000 4.6000 4.8000 5.0000 5.2000 5.4000 5.6000 5.8000 Columns 31 through 32 6.0 6.2000 y1 = Columns 1 through 10 0.29 0.1886 0.3786 0.5585 0.7172 0.8461 0.9391 0.9926 1.0048 0.9761 Columns 11 through 20 0.9083 0.8048 0.6701 0.5098 0.3301 0.1381 -0.0590 -0.2538 -0.4389 -0.6073 Columns 21 through 30 -0.7524 -0.8685 -0.9505 -0.9949 -0.9991 -0.9626 -0.8863 -0.7732 -0.6288 -0.4606 Columns 31 through 32

相关主题