matlab 二阶微分方程 求解
y=f(x)
a*y''+b*y'+c*y=0
y(0)=d, y'(0)=e,
a,b,c,d,e已知 求x在(200,400)之间的 (x,y)图像 最好能求出y的表达式
希望能把每句的含义标注下,谢谢各位啦!
1L 你没明白我的意思,我缺少的是matlab的程序,不是单纯的一道。
y''+(1+cos(x))*y=0 y(0)=0.01 y'(0)=0 如果是这样的方程怎么解呢?
dsolve求解时 会出现 empty sym 不能求出解析解 。。。 展开
>> syms a b c d e;
>> y=dsolve('a*D2y+b*Dy+c*y=0','y(0)=d','Dy(0)=e')
y =
(2*a*e + b*d + d*(b^2 - 4*a*c)^(1/2))/(2*exp((t*(b - (b^2 - 4*a*c)^(1/2)))/(2*a))*(b^2 - 4*a*c)^(1/2)) - (2*a*e + b*d - d*(b^2 - 4*a*c)^(1/2))/(2*exp((t*(b + (b^2 - 4*a*c)^(1/2)))/(2*a))*(b^2 - 4*a*c)^(1/2))
>> a=1;b=1;c=1;d=1;e=1;%若常数已知
>> t=1;%desolve中没指定自变量x,这里默认为t,带入任意一个x值
>> y=eval(y)
y =
1.1932 + 0.0000i
这是解方程的方法,画图也差不多,我在命令窗写的改麻烦,下面是我在editor写的。
syms a b c d e;
y=dsolve('a*D2y+b*Dy+c*y=0','y(0)=d','Dy(0)=e','x');
x=200:0.1:400;%取值范围,步长
a=1;b=1;c=1;d=1;e=1;%带入参数
y=eval(y);
plot(x,y)
你补充问题的方程解得也是一个空的,并报错,或许就是无解的,我也很疑问。
2024-04-02 广告
1、建立微分方程的自定义函数,odefun(容x,y)
2、当a=10、θ=π/6时,执行下列代码
theta=pi/6;
[x,y]= ode45(@odefun,[0,0.18],[0.5,theta])
plot(x,y),grid on
legend('y (x)','y’(x)')
xlabel('x'),ylabel('y (x),y’(x)')
figure(2)
plot(y(:,1),y(:,2)),grid on
xlabel('y (x)'),ylabel('y’(x)')
title('y (x)—y’(x)的相平面图');
扩展资料:
升阶法:
设y''+p(x)y'+q(x)y=f(x),当f(x)为多项式时,设f(x)=a0x^n+a1x^(n-1)+…+a(n-1)x+an,此时,方程两边同时对x求导n次,得
y'''+p(x)y''+q(x)y'=a0x^n+a1x^(n-1)+…+a(n-1)x+an……
y^(n+1)+py^(n)+qy^(n-1)=a0n!x+a1(n-1)!
y^(n+2)+py^(n+1)+qy^(n)=a0n!
令y^n=a0n!/q(q≠0),此时,y^(n+2)=y^(n+1)=0。由y^(n+1)与y^n通过倒数第二个方程可得y^(n-1),依次升阶,一直推到方程y''+p(x)y'+q(x)y=f(x),可得到方程的一个特解y(x)。
常微分方程部分有关λ的部分,又是其次方程,两步就出来了。
第一次补充回答也是最后一次补充回答:
开始以为abcde是常数,没想到不是。
dsolve后面的函数应该是一次的微分方程,你应该将函数标准化处理。令y'=y1,带到原方程中去形成两个一次的微分方程,注意初始条件也要变一下y'(0)=e变成y1(0)=e,然后再用dsolve函数求解,系数为非常数,可能这个函数解不了,可能需要手动编程,建议你去找本常微分的书看看,高数上可能没有讲过这种方程的求解。刚翻了下书,发现这问题还是比较烦的,你自己去研究吧 O(∩_∩)O~
另外用一个函数多看看帮助,matlab帮助写的很好的
建议你去图书馆找本书-翻到符号运算-常微分方程求解,然后照例题着输入
下面是我做的。。。
你做的时候把a,b,c,d,e输进去
y=dsolve('a*D2y+b*Dy+c*y=0','y(0)=d','Dy(0)=e')
y =
(2*a*e + b*d + d*(b^2 - 4*a*c)^(1/2))/(2*exp((t*(b - (b^2 - 4*a*c)^(1/2)))/(2*a))*(b^2 - 4*a*c)^(1/2)) - (2*a*e + b*d - d*(b^2 - 4*a*c)^(1/2))/(2*exp((t*(b + (b^2 - 4*a*c)^(1/2)))/(2*a))*(b^2 - 4*a*c)^(1/2))
暂时我也不知道如何ABCDE得方法
只能手动代入
>> y=dsolve('1*D2y-3*Dy-4*y=0','y(0)=0','Dy(0)=-5')
y =
1/exp(t) - exp(4*t)
下面是作图的
ezplot(y,[0,4]),为了使图形可见把范围所谓0到4
你在实际运用时候把中括号改为[200,400]
y=dsolve('D2y+(1+cos(t))*y=0','y(0)=0.01','Dy(0)=0') %因为默认的是t,所以我把X改成t了
Warning: Explicit solution could not be found.
无解,当然也有可能是因为MATLAB也不是全能的,或者我还没学到家,因为我也是这个星期才学的。。。
感觉MATLAB很简单的,如果只是解解微分方程的话找本书三两下就能搞定,或者找身边同学问下,用不了多少时间