差分方程matlab解法

2024-05-13

1. 差分方程matlab解法

如何用matlab解差分方程?差分方程是指未知函数差分的方程,其一般形式为
F(t,yt,Δyt,Δy^2t,······,Δy^nt)=0
差分方程的通解是指含有相互独立的任意常数,且任意常数的个数等于方程的价数的解;
差分方程的特解是指不含有任意常数的解;
为了说明如何用matlab解差分方程问题,特举例:
例1:试用matlab求解差分方程,y(t+2)-5y(t+1)+6y(t)=0,其中y(0)=1,y(1)=0的解析解。
求解代码:
syms z n
u=(1/5)^n; %设置u为输入信号
U=ztrans(u); %z变换
y=diff_eq([1 -5 6],[0],[1 0],U);  %解析解。
y=simplify(y)
其运行结果,y(n)=3*2^n - 2*3^n
例2:试用matlab求解差分方程,y(t+2)+y(t+1)-6y(t)=5*2^t,y(0)=1,其中y(0)=1,y(1)=0的解析值。
求解代码:
syms z n t
u=5*2^n;
U=ztrans(u);
y=diff_eq([1 1 -6],[1],[1 0],U);
y=simplify(y)


差分方程matlab解法

2. 有限差分求解偏微分方程matlab

如何使用matlab,用有限差分求解偏微分方程?
求解思路:把偏微分方程离散化,采用合适的差分方法,将复杂的方程简化成简单的线性方程组,最后求解线性方程组,得到其数值解。
现以一维扩散方程为例,说明其计算过程。


第一步,根据条件,建立边界条件和初始条件,即
g0=@(t)zeros(size(t)); 
g1=g0; %边界条件
eta=@(x)sin(pi*x); %初始条件
第二步,设置网格数,即
n=101; %网格数
m=101; %网格数
第三步,设置步长,即
h=0.01;%步长
k=0.01;%步长
第四步,设置t和x的初始值,即
t0=0;%t的初始值
x0=0;%x的初始值
第五步,确定扩散系数,即
K=1/pi^2;
第六步,自定义Crank-Nicolson差分格式解函数
[t,x,U]=diffusion_sol1(h,k,t0,x0,n,m,eta,g0,g1,K);
第七步,绘制偏微分方程解的曲面,即
surf(t,x,U)
最后,运行程序得到一维扩散方程数值解的曲面图


3. 怎么用matlab求解这道差分方程?

怎么用matlab求解这道差分方程?根据我的理解其基本思路是:
1、根据差分方程式,写出迭代式,利用for循环语句和if判断语句来书写。即
for i=3:n    
    if (k(i)-1)<0 
        uk1=0;
    else
        uk1=k(i)-1;
    end
    if (k(i)-2)<0
        uk2=0;
    else
        uk2=k(i)-2;
    end
    y(i)=2*uk1-2*uk2+3*y(i-1)-2*y(i-2); %迭代求解 y(i+1)=(1-2*h*x)*y(i)+h*x*exp(-x.^2);
end; 
2、确定x的变化范围,在本例中,假设k=-5:0.1:5;
3、根据初始条件,写出y(1), y(2),y(3)的具体数值。由于题主没有给出,在本例中,假设y(1)=-0.5; y(2)=-0.1;y(3)=0.3;
4、最后按上述思路编程,利用plot函数得到k与y(k)的关系图。

怎么用matlab求解这道差分方程?

4. 怎么用matlab求差分

调用filter函数解差分方程。

1)yn=filter(B,A,xn)是计算输入向量xn的零状态响应输出信号yn,yn与xn长度相等,
其中B=[b0,b1,……bn], A=[a0,a1,……an]。其中a0=1。

2)yn=filter(B,A,xn,xi)是计算全响应的函数。xi是等效初始条件的输入序列,xi能由初始条件确定。此时需要调用filtic函数。xi=filtic(B,A,ys,xs)。其中ys,xs是初始条件向量。
其中ys=[y(-1),y(-2)……y(-N)],xs=[x(-1),x(-2),……x(-M)]
另外若xn为因果序列xs=0可缺省。

举个例子若y(n)-0.8y(n-1)=x(n),初始条件y(-1)=1。
a=0.8,ys=1;
xn=[1,zeros(1,30)];
B=1, A=[1,-a];
xi=filtic(B,A,ys);
yn=filter(B,A,xn,xi);
%以下是解出来的yn图像
n=0:length(yn)-1;
stem(n,yn,'.');

5. matlab利用递归求解差分方程

首先,这个不是matlab利用递归求解差分方程,而是递推;差分方程其实就是递推关系式。
然后这个循环:
for
i=N+1:N+length(n),
y(i)
=
-a1*y(i-N:i-1)'
+
b1*x(i-N:i-N+M)';
end
其实是因为:
y[n]
+
a1*y[n-1]
+
a2*y[n-2]...
+
an*y[n-N]
=
b0*x[n]
+
b1*x[n-1]
+
...
+
bm*x[n-M]
所以:
y[n]
=
-(a1*y[n-1]
+
a2*y[n-2]...
+
an*y[n-N]
)+
b0*x[n]
+
b1*x[n-1]
+
...
+
bm*x[n-M]
具体来说,就是:
我们已知了y1、y2、y3。。。yN,然后通过循环依次求得yN+1、yN+2等等。。。

matlab利用递归求解差分方程

6. 怎么利用有限差分法对模型进行求解

有限元法应该是在差分法基础上建立起来的。
有限元法:对物理模型进行离散,网格划分不用规则,就是各种单元可以混合使用,所以写不出方程也可以求解。
差分法:划分的网格是规则的,对方程进行离散化,就是用很多个差分代替微分,用线性方程组代替微分方程的一种方法。
学地质应该不用太区了解 基本原理,要注重分析的过程,和看懂分析结果才重要,地质毕竟也是实际的工程领域。那些理论就让物理专业,力学专业的研究去吧。
本人也了解不多,若不是正确答案清凉解。

7. MATLAB 差分方程求解

这个问题要过细想,a1=20,a4=5,a2=a3=a5=0.1
    s(t+1)=s(t)-a1*s(t)*i(t)-a2*a3*s(t)*i(t)/(s(t)+e(t)+i(t));
    e(t+1)=e(t)+a1*s(t)*i(t)-e(t-a4)-a2*a3*(e(t)-i(t))/(s(t)+e(t)+i(t));
    i(t+1)=i(t)+e(t-a4)-a2*i(t)^2/(s(t)+e(t)+i(t));
    j(t+1)=j(t)+a2*i(t);
    r(t+1)=r(t)+a5j(t);
关于初值,可以这么设
s=ones(1,50);
e=zeros(1,50);
i=zeros(1,50);
j=zeros(1,50);
r=zeros(1,50);

MATLAB 差分方程求解

8. MATLAB 波动方程有限差分方法

DX=[];
for x=0:0.001:1
f=1./cos(x).^2;
DX=[DX,f];
end
最新文章
热门文章
推荐阅读