MATLAB求差分方程模型

合集下载

实验二微分方程与差分方程模型Matlab求解

实验二微分方程与差分方程模型Matlab求解

实验二: 微分方程与差分方程模型Matlab 求解一、实验目的[1] 掌握解析、数值解法,并学会用图形观察解的形态和进展解的定性分析;[2] 熟悉MATLAB 软件关于微分方程求解的各种命令; [3] 通过范例学习建立微分方程方面的数学模型以及求解全过程;[4] 熟悉离散 Logistic 模型的求解与混沌的产生过程。

二、实验原理1. 微分方程模型与MATLAB 求解 解析解用MATLAB 命令dsolve(‘eqn1’,’eqn2’, ...) 求常微分方程〔组〕的解析解。

其中‘eqni'表示第i 个微分方程,Dny 表示y 的n 阶导数,默认的自变量为t 。

〔1〕 微分方程例1 求解一阶微分方程 21y dxdy+= (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(/2)2(/2)2/x y xy x y y y πππ'''++-=='=-原方程两边都除以2x ,得211(1)04y y y x x '''++-= 输入: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 求解 d f /d x =3f +4g ; d g /d x =-4f +3g 。

差分方程求解matlab代码

差分方程求解matlab代码

差分方程求解matlab代码
差分方程求解matlab代码的基本思路,是使用差分方程去求解一
组由初始条件和终止时间定义的数学问题。

差分方程有很多不同的形式,首先要先弄明白所要解决的差分方程是什么样的,然后再选择一
个解法来求解它。

下面我们就给出一段matlab代码来说明如何求解差
分方程:
首先,要定义一个变量t,它作为一个时间变量,表示第n步的时
间变量,比如:
t=0:0.01:1;
其次,要定义一个变量y,它代表初始条件下的y的值,比如:
y=2;
然后,要写出所求解的初值问题,用matlab中的函数ode45来求解,比如:
fun=@(t,y) 2*y+2;
最后,要调用matlab中的函数ode45来求解问题,比如:
output=ode45(fun,t,y);
以上就是用matlab代码来求解差分方程的大概过程,编写matlab
代码的时候,需要定义时间变量,初始条件,和需要求解的初值问题,然后再调用相应的函数来求解。

通过这种方法,就可以解决复杂的差
分方程,并得到其所对应的函数值。

Matlab中的差分方程求解

Matlab中的差分方程求解

Matlab中的差分方程求解差分方程是微分方程的离散形式,常常在计算机科学、物理学、经济学等领域中广泛应用。

而Matlab作为一种数值计算软件,提供了强大的工具和函数用于差分方程的求解和分析。

本文将介绍Matlab中差分方程求解的基本方法和常见应用。

一、差分方程的基本概念差分方程是一种通过递归关系描述变量之间关系的数学表达式。

与微分方程不同,差分方程是以离散时间点为基础的,适用于描述离散系统的动态行为。

一般来说,差分方程可以分为线性差分方程和非线性差分方程两类。

线性差分方程的一般形式为:y[n] = a*y[n-1] + b*y[n-2] + ... + c*x[n],其中y[n]为方程的解,x[n]为给定的输入,a、b、c为系数。

而非线性差分方程则没有这种简单的表达形式,通常需要通过迭代或数值方法求解。

二、在Matlab中,可以利用函数和工具箱来求解差分方程。

下面将介绍几种常见的求解方法。

1. 符号计算方法Matlab的符号计算工具箱提供了一系列用于求解差分方程的函数,例如dsolve()函数。

这些函数可以根据给定的差分方程自动进行符号运算,得到方程的解析解。

符号计算方法适用于简单的线性差分方程,对于复杂的非线性差分方程则很难求解。

2. 数值迭代方法对于非线性差分方程,常常采用数值迭代的方法来求解。

Matlab提供了多种迭代函数,例如fsolve()函数和fminsearch()函数。

这些函数可以根据给定的差分方程和初始值,通过迭代计算得到方程的数值解。

数值迭代方法适用于各种类型的差分方程,但需要注意选择合适的初始值和迭代算法以确保收敛。

3. 差分方程求解函数除了符号计算和数值迭代方法,Matlab还提供了一些专门用于求解差分方程的函数,例如ode23()函数和ode45()函数。

这些函数可以根据给定的差分方程和初始条件,通过数值方法求解方程的数值解。

相比于数值迭代方法,差分方程求解函数更加高效和稳定,适用于大规模的复杂差分方程。

用matlab解差分方程

用matlab解差分方程

• title('(a)'); xlabel('(n)');ylabel('(n)');%ep141.m: 调用filter解差分方程y(n)-ay(n-1)=x(n)
• a=0.8; ys=1;
%设差分方程系数a=0.8,初始状态:y(-1)=1
• xn=[1,zeros(1,30)] %x(n)=单位脉冲序列,长度N=31
• B=1; A=[1,-a]; %差分方程系数
• xi=filtic(B,A,ys); %由初始条件计算等效初始条件的输入序列xi
• yn=filter(B,A,xn,xi); %调用filter解差分方程,求系统输出信号y(n)
图形表现
批注本地保存成功开通会员云端永久保存去开通
用matlab解差分方程
本例子截取书上第19页,
matlab求解程序
• %ep141.m: 调用filter解差分方程y(n)-ay(n-1)=x(n)
• a=0.8; ys=1;
%设差分方程系数a=0.8,初始状态:y(-1)=1
• xn=[1,zeros(1,30)] %x(n)=单位脉冲序列,长度N=31
• B=1; A=[1,-a]; %差分方程系数
• xi=filtic(B,A,ys); %由初始条件计算等效初始条件的输入; %调用filter解差分方程,求系统输出信号y(n)
• n=0:length(yn)-1;
• subplot(3,2,1);stem(n,yn,'.')

用Matlab求解差分方程问题

用Matlab求解差分方程问题

• • • • • • •
K=(0:20)’; Y1=zwfz(100,21,0.18); Y2=zwfz(100,21,0.19); Y3=zwfz(100,21,0,20); Round([k,y1’,y2’,y3’]) Plot(k,y1,k,y2,’:’,k,y3,’o’), Gtext(‘b=0.18’),gtext(‘b=0.19’),gtext(‘b=0.20’)
>> plot(k,y2,'r') >> plot(k,y2,'y') >> plot(k,y2,'y',k,y1,':')
• 人工孵化是挽救濒危物种的措施之一, 如果每年孵化5只鹤放入保护区,观察在 中等自然条件下沙丘鹤的数量如何变化
Xk+1=aXk +5 ,a=1+r
如果我们想考察每年孵化多少只比较合 适,可以令
• • • • • •
function x=czqc(n) A=[0.6,0.2,0.1;0.3,0.7,0.3;0.1,0.1,0.6]; x(:,1)=[200,200,200]'; for k=1:n x(:,k+1)=A*x(:,k); end
如果直接看10年或者20年发展趋势,可以直接在命令窗 口(commond window)作,而不是必须编一个函数
1,2
5 2 10 b
植物能一直繁殖下去的条件是b>0.191
线性常系数差分方程组
• 汽车租赁公司的运营
• 一家汽车租赁公司在3个相邻的城市运营,为方便顾客起见公司承 诺,在一个城市租赁的汽车可以在任意一个城市归还。根据经验
估计和市场调查,一个租赁期内在A市租赁的汽车

matlab用z变换求解差分方程

matlab用z变换求解差分方程

matlab用z变换求解差分方程
在matlab中,可以使用z变换来求解差分方程。

z变换是一种将离散信号转换为复变量函数的方法,其在数字信号处理中有着广泛应用。

通过将差分方程转换为z域的方程,可以方便地求解。

在matlab中,可以使用ztrans函数来进行z变换的计算。

该函数需要输入一个差分方程,返回其在z域中的表示。

然后,可以使用iztrans函数来进行逆z变换,将z域的结果转换为时间域的结果。

在使用z变换求解差分方程时,需要注意选择合适的初始条件,以及确保差分方程是稳定的。

此外,还需要注意处理z变换中的极点和零点,以避免求解出现错误。

总之,使用matlab求解差分方程可以借助z变换的方法,通过简单的函数调用来实现。

需要注意的是,在实际应用中需要考虑各种因素,以保证求解的准确性和可靠性。

- 1 -。

用Matlab求解差分方程问题

用Matlab求解差分方程问题

一阶线性常系数差分方程的解、平衡点及其稳定性
xk 1 axk b
• 自然环境下,b=0 • 人工孵化条件下
xk ak x0
xk ak x0 b(1 a
k
ak 1 )
1 ak a x0 b 1 a
• 令xk=xk+1=x得
x
差分方程的平衡点 • k→∞时,xk→x,称平衡点是稳定的
• 以k=0时x0=M代入,递推n次可得n年后本息为
xn 1 r M
n
• 污水处理厂每天可将处理池的污水浓度 降低一个固定比例q,问多长时间才能将 污水浓度降低一半? • 记第k天的污水浓度为ck,则第k+1天的污 水浓度为 ck+1=(1-q)ck,k=0,1,2,· · · · 从k=0开始递推n次得
• 用矩阵表示
x1 (k 1) 0.6 0.2 0.1 x1 ( k ) x ( k 1) 0.3 0.7 0.3 x ( k ) 2 2 x (k 1) 0.1 0.1 0.6 x ( k ) 3 3
一阶线性常系数差分方程的解平衡点及其稳定性?自然环境下b0?人工孵化条件下0kkxax?101kkkxaxbaa???????1kkxaxb????令xkxk1x得差分方程的平衡点?k时xkx称平衡点是稳定的011kkaaxba????1bxa??高阶线性常系数差分方程??如果第k1时段变量xk1不仅取决于第k时段变量xk决于第k时段变量xk而且与以前时段变量有关就要用高阶差分方程来描述而且与以前时一年生植物的繁殖?一年生植物春季发芽夏天开花秋季产种没有腐烂风干被人为掠取的那些种子可以活过冬天其中一部分能在第2年春季发芽然后开花产种其中的另一部分虽未能发芽但如又能活过个冬天则其中过一个冬天则其中一部分可在第三年春季发芽然后开花产种如此继续一年生植物只能活1年而近似的认为种子最多可以活过两个冬天试建立数学模型研究这种植物数量变化的规律及它能一直繁殖下去的条件

差分方程模型matlab

差分方程模型matlab

差分方程模型matlab差分方程模型在数学和工程领域中具有重要的应用。

它是描述动态系统行为的一种数学模型,通常由一系列离散时刻的状态变量和状态转移方程组成。

MATLAB作为一种功能强大的数值计算软件,为差分方程模型的建模和求解提供了便捷的工具和环境。

本文将介绍差分方程模型在MATLAB中的使用方法和应用场景。

首先,我们将探讨差分方程模型的基本原理和概念,然后详细介绍在MATLAB中的建模步骤和求解技巧。

最后,我们会给出一些在实际问题中使用差分方程模型的案例,并展示其在系统分析、控制和优化等方面的优势。

差分方程模型是描述离散系统行为的数学模型,常用于描述在给定时间步长下变量之间的关系。

它与连续时间的微分方程模型相对应,但在很多情况下,离散系统更符合实际情况。

差分方程模型可以描述许多系统,例如电路、金融市场、人口增长等。

在MATLAB中建立差分方程模型需要以下步骤:1. 定义变量:首先需要确定模型涉及的状态变量,然后在MATLAB 中声明这些变量。

可以使用向量或矩阵表示多个变量。

2. 构建状态转移方程:差分方程模型通过状态转移方程描述系统变量在不同时间步长之间的变化规律。

在MATLAB中,可以使用循环或矩阵运算构建状态转移方程。

3. 设定初值条件:差分方程模型通常需要给定初始条件,即在 t=0 时刻各个变量的值。

在MATLAB中,可以使用向量或矩阵存储初始条件。

4. 求解差分方程:在MATLAB中可以使用函数或求解器来求解差分方程模型。

常用的函数包括 `solve`、`ode45`、`ode15s`等,它们可以根据模型的具体特点选择合适的求解方法。

在实际应用中,差分方程模型在系统分析、控制和优化等方面具有广泛的应用。

例如,在系统分析中,可以通过建立差分方程模型来预测系统的行为和变化趋势。

在控制问题中,差分方程模型可以描述系统动态行为,从而设计和优化控制策略。

在优化问题中,差分方程模型可以作为约束条件或目标函数进行求解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
பைடு நூலகம்
function Xn=sqh(n,r,X0) Xn=(1+r)^n*X0; end 单击工具栏中的保存按钮,文件名sqh3.m 保存以后在指令窗口调用sqh3函数,输入: >>Xn=sqh3(20,0.0194,100) 输出同上。
Matlab实现
Xk+1 =(1+r)Xk
function x=sqh(n,r) x(1)=100; for k=1:n x(k+1)=(1+r)*x(k); end 单击工具栏中的保存按钮,文件名sqh4.m 保存以后在指令窗口调用sqh4函数,输入: >>xn=sqh4(20,0.0194) 输出同上。
结果分析:Xk+pXk-1 + qXk-2=0 (1)
x1+px0=0
k
(2)
• 对高阶差分方程可以寻求形如 xk 2 p q 0 的解。代入(1)式得 称为差分方程的特征方程。差分方程的特征根:
1,2
p
p 2 4q 2
k 1 1
方程(1)的解可以表为 xk c C1,C2 由初始条件x0,x1确定。
141.3199 144.0615 146.8563
利用plot 绘图观察数量变化趋势
>>k=0:20; >>y1= sqh4(20,0.0194); >>plot(k,y1) 得到Figure1 在Edit菜单下Copy Figure,可以将图 粘贴到Word文档。
150 145 140 135 130 125 120 115 110 105 100
xn = Columns 1 through 6 100.0000 101.9400 103.9176 105.9336 107.9888 110.0837 Columns 7 through 12 112.2194 114.3964 116.6157 118.8780 121.1843 123.5353 Columns 13 through 18 125.9318 128.3749 130.8654 133.4042 135.9922 138.6305 Columns 19 through 21
记一棵植物春季产种的平均数为c,种子能活过一个冬 天的(1岁种子)比例为b,活过一个冬天没有发芽又活过一 个冬天的(2岁种子)比例仍为b,1岁种子发芽率a1,2岁 种子发芽率a2。
• 设c,a1,a2固定,b是变量,考察能一直繁殖的条件
• 记第k年植物数量为Xk,显然Xk与Xk-1,Xk-2有 关,由Xk-1决定的部分是 a1bcXk-1,由Xk-2决 定的部分是 a2b(1-a1)bcXk-2 Xk= a1bcXk-1 + a2b(1-a1)bcXk-2
3.建立M函数文件 格式: function 输出变量=函数名称(输入变量) 例如:输入 function Xn=sqh(n,r) X0=100; Xn=(1+r)^n*X0; end 单击工具栏中的保存按钮,文件名sqh2.m 保存以后在指令窗口调用sqh2函数,输入: >>Xn=sqh2(20,0.0194) 输出同上。
作图观察5年以后数量的变化趋势:在指令窗口输入 >> y1=qczl(5); 300 >> k=0:5; 280 >> plot(k,y1)
260 240 220 200 180 160 140 120
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
练习: 1. 若最初600辆汽车平均分配在三个城市, 作图观察30年以后数量的变化趋势 2. 若最开始600辆汽车都在A市,变化时间 充分长以后,各城市汽车数量的变化情况 如何?
x1 (k 1) 0.6 x1 (k ) 0.2 x2 (k ) 0.1x3 ( k ) x2 (k 1) 0.3 x1 ( k ) 0.7 x2 ( k ) 0.3 x3 ( k ) x (k 1) 0.1x ( k ) 0.1x ( k ) 0.6 x ( k ) 1 2 3 3
输出: ans = 179.9324 299.9895 120.0781
2. 建立M文件 function x=qczl(n) A=[0.6,0.2,0.1;0.3,0.7,0.3;0.1,0.1,0.6]; x(:,1)=[200,200,200]'; for k=1:n x(:,k+1)=A*x(:,k); end
Xk= a1bcXk-1 + a2b(1-a1)bcXk-2
• 实际上,就是Xk= pXk-1 + qXk-2 我们需 要知道x0,a1,a2,c, 考察b不同时,种子繁 殖的情况。在这里假设 • X0=100,a1=0.5,a2=0.25,c=10,b=0.18~0.20 • 这样可以用matlab计算了
0
2
4
6
8
10
12
14
16
18
20
在同一坐标系下画图
>> k=0:20; %一个行向量 >> y1= sqh4(20, 0.0194); >> y2= sqh4(20, -0.0324); >> y3= sqh4(20, -0.0382); >> plot(k,y1,k,y2,':',k,y3,'r')
1. 可以看到时间充分长以后3个城市汽车 数量趋于180,300,120 2. 若最开始600辆汽车都在A市,可以看 到变化时间充分长以后,各城市汽车数 量趋于稳定,与初始值无关
利用线性规划知识;找到凸集,因为所谓的最优解,一般都在凸集
600
500
400
300
200
100
0
0
5
10
15
20
25
30
c2
k 2
1,2 1, xk 0(k )
1,2 1, xk ( k )
• 本例中,用待定系数的方法可以求出 b=0.18时,c1=95.64, c2=4.36 , (1, 2 ) (0.9430, 0.0430) k k 这样 x 95.64(0.9430) 4.36(0.0430)
>> k=0:20; >> y1=zwfz(100,21,0.18); >> y2=zwfz(100,21,0.19); >> y3=zwfz(100,21,0.20); >> plot(k,y1,k,y2,':',k,y3,'r')
250
200
150
100
50
0
0
2
4
6
8
10
12
14
16
18
20
Xk= a1bcXk-1 + a2b(1-a1)bcXk-2
假设 X0=100,a1=0.5,a2=0.25,c=10,b=0.18~0.20 简化为 Xk= pXk-1 + qXk-2 • • • • • • • • function x=zwfz(x0,n,b) c=10;a1=0.5;a2=0.25; p=a1*b*c;q=a2*b*(1-a1)*b*c; x(1)=x0; x(2)=p*x(1); for k=3:n x(k)=p*x(k-1)+q*x(k-2); end
0.1 A 0.6 0.7 0.3 B C
A
0.2
B
0.1
C
0.6 C
假设在 每个租 赁期开 始能把 汽车都 租出去, 并都在 租赁期 末归还
A
B 0.1
0.3
模型及其求解
• 记第k个租赁期末公司在ABC市的汽车数量 分别为x1(k),x2(k),x3(k)(也是第k+1个租赁 期开始各个城市租出去的汽车数量),很 容易写出第k+1个租赁期末公司在ABC市的 汽车数量为(k=0,1,2,3· · · )
当a=3, a=4时,如图
100 99.5 99 98.5 98 97.5 97 96.5 96
0
2
4
6
8
10
12
14
16
18
20
112
110
108
106
104
102
100
0
2
4
6
8
10
12
14
16
18
20
高阶线性常系数差分方程 ——一年生植物的繁殖
• 一年生植物春季发芽,夏天开花,秋季产种, 没有腐烂,风干,被人为掠取的那些种子可以 活过冬天,其中一部分能在第2年春季发芽, 然后开花,产种,其中的另一部分虽未能发芽, 但如又能活过一个冬天,则其中一部分可在第 三年春季发芽,然后开花,产种,如此继续, 一年生植物只能活1年,而近似的认为,种子 最多可以活过两个冬天,试建立数学模型研究 这种植物数量变化的规律,及它能一直繁殖下 去的条件。
• 用矩阵表示
x1 (k 1) 0.6 0.2 0.1 x1 ( k ) x ( k 1) 0.3 0.7 0.3 x ( k ) 2 2 x (k 1) 0.1 0.1 0.6 x (k ) 3 3
k
5 实际上, 1,2
10 2
b
插入的数 的大小, 其必须满 足一个递 减趋势, 增长值为 负
植物能一直繁殖下去的条件是b>0.191
线性常系数差分方程组
• 汽车租赁公司的运营
相关文档
最新文档