使用ode45求解微分方程组时的一个小问题
matlab吧
全部回复
仅看楼主
level 11
KarmaSteins 楼主
需要求解如下的微分方程组:
现在需要求解这个微分方程组的数值解,我知道的解微分方程的函数只有ode45那个系列的,前三个式子已经写好,最后一个式子在程序中不知道应该怎么写,因为它是个二阶导,写的时候得先降成一阶,但它变量里除了Omegac还有a(1)和a(2)。求问各位大佬,这个应该怎么写呀,或者是要用其它求解微分方程组的函数?还有什么函数能用呀?
function da = ProbabilityAmplitude(t,a)
Omegac0 = 8e7;
DeltaP = 0.5*Omegac0;
DeltaC = 0.5*Omegac0;
lambda = -0.5*Omegac0/(10+1);
epsilon0 = 8.85e-12;
h = 6.626e-34;
h_bar = h/(2*pi);
N = 1e20;
xi12 = 1e-29;
load dat n;
da = zeros(3,1);
da(1) = 0.5*1i*conj(Omegac).*a(2);
da(2) = -1i*DeltaC*a(2)+0.5*1i*Omegac*a(1)-1i*lambda*sqrt(n+1)*a(3);
da(3) = -1i*(DeltaC+DeltaP)*a(3)-1i*lambda*sqrt(n+1)*a(2);
2022年07月26日 03点07分 1
level 13
应将二阶偏导数求出来,再接着按ode45函数的要求写
2022年07月26日 04点07分 2
大佬能详细说说么,因为这个式子里有Omegac,a(1)和a(2),重新定义一个它们的一阶导后,也写不成ode45要求的那种形式呀,跪谢大佬~
2022年07月27日 03点07分
@KarmaSteins 应该可以写
2022年07月27日 07点07分
@lhmhz 学渣还是写不出来[泪][泪]
2022年07月27日 09点07分
如需要请私信给我
2022年07月28日 15点07分
level 3
把最后一个式子展开,然后二阶导数重新设一个变量换成一阶导数
2022年07月26日 09点07分 3
大佬能详细说说么,因为这个式子里有Omegac,a(1)和a(2),重新定义一个它们的一阶导后,也写不成ode45要求的那种形式呀,跪谢大佬~
2022年07月27日 03点07分
大佬,把二阶导数重设变量,写成一阶导数后,要怎么写成ode45要求的形式我还是有问题,能麻烦您看一下我在5楼发的两张图么?
2022年07月31日 03点07分
level 11
KarmaSteins 楼主
求问各位大佬,最后一个方程能不能先进行两次积分,得到ct+b的形式?但这里这里c和b是完全不确定的量,那编程的时候只要随便赋一个值就可以了么?
2022年07月29日 03点07分 4
不需要那么做,楼上已经回答很详细。 引入中间变量,把二阶导数问题变成两次一阶导数
2022年07月29日 12点07分
@Mat之道℃ 大佬,能麻烦您看一下我下面那层楼发的两张图么?
2022年07月31日 03点07分
level 11
KarmaSteins 楼主
2022年07月31日 03点07分 5
使用 odeset 的 Mass 选项指定质量矩阵,可以解决
2022年07月31日 04点07分
level 7
2022年07月31日 04点07分 6
十分感谢大佬!!
2022年08月01日 04点08分
level 3
随便写了写,大致就这样,就是换元降阶,至于你的星号是复共轭的意思吗,包含这么个操作的方程组我倒是没有解过[呵呵]
2022年08月01日 02点08分 7
似乎有符号打错了,不过应该不太影响[滑稽]
2022年08月01日 03点08分
@ycbww 十分感谢大佬~~~
2022年08月01日 04点08分
@KarmaSteins 星号是复共轭
2022年08月01日 04点08分
1