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

2024-05-19 00:21

1. 怎么用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求解这道差分方程?

2. 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等等。。。

3. 怎么用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,'.');

怎么用matlab求差分

4. 怎么用matlab画如下差分方程的图

用matlab画差分方程的图形,可以用循环语句来实现。
m=20; %可以自行设定
x=ones(1,4*m);  %假设x(n)=1
k=0.3122;C=150.0247;KC=exp(-4*k)*C;
for n=1:m; 
x(4*n)=KC*x(n);
end
n=1:4*m;
plot(n,x)
xlabel('n'),ylabel('x(n)')
运行结果

5. 差分方程求解

上述微分方程的重点应该首先集中在其次方程的解——通解上。
思路:解微分方程的步骤为:
1、首先确定其次方程的通解
2、确定非齐次方程的特解
其中通解为最难求的部分,因为他是一个多值函数的解,而特解就是一个固定的值。
例子:对于按上述过程解方程方程
sin(x)=1/2
首先化为齐次方程sin(x)=0;解得通解x=kπ,k=整数(齐次方程就是等号右边化为零)
然后特解应该等于多少呢,我们知道,其实随便带入一个具体的特解x的具体值就好。
       你可以带入x=π/6或x=7π/6等等数值,其实是随心所欲的。然后通解加上特解就是具的解了!
总结:上图的方法仅仅告诉你如何快速的求解这个数值的,主要应该集中精力在对通解的求解上面,特解根据通解的形式可以猜测具体数值的。也可以通过上面的所谓的总结来直接套用公式。
ps:如果还是不是很理解的话,可以看看高等数学里面关于齐次微分方程的解的形式,你会发现它与所谓的通解的公式有很大的相似性。理解了齐次方程的解的形式,再来看所谓通解的规律就很清楚了。
呃,如果你是考研的同学,问题应该是第二幅图,请先看高数的齐次微分方程部分;如果是高考同学的话,问题在第一幅图,其实直接理解为数列的求解就好,不需要考虑这么多的。

差分方程求解

6. 有限差分求解偏微分方程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)
最后,运行程序得到一维扩散方程数值解的曲面图


7. 求解差分方程

这个方程对应的齐次差分方程为:Yx+1=5Yx
所以有Yx=C5^(x-1)
设Yx=b0+b1x
Yx+1=b0+b1(x+1) 所以Yx+1-5Yx=b1+b0-5b0+b1x-5b1x=(b1-4b0)-4b1x=3x+1
解得b1=-3/4  b0=-7/16
所以通解为Yx=C5^(x-1)-3/4x-7/16
希望能够帮到你!

求解差分方程

8. matlab分怎么解方程

x=solve('-pi*0.11*0.11*480000*(0.14*0.09/(0.14*0.09+0.045*1.05-0.045*cos(x)-0.045*0.05*cos(2*x)))^1.2=-101000*pi*0.11*0.11')
就可以了
得出两个实数解
x =
 
                                       1.2217096986774274046650233415025
                                      -1.2217096986774274046650233415025