level 1
CheyneZ
楼主
Mathematica 12.0.0.0,Mac版

一个三元微分方程组用DAE求解,Vt、v 和 Lambda 是待求变量 ![[开心]](/static/emoticons/u5f00u5fc3.png)
三个初值条件 Vt[0]==0,v[0]==383.431,\[Lambda][0]==0.0291924 确定是没有错的。
但让他求解的时候总是报错
,说找不到能满足残差函数的初始条件。
我怀疑是 t=0 处为 Vt 的一阶倒数的奇点(因此手算的时候也求不出 Vt ’ [0] 等于多少 ),想问问怎么让它在计算的时候避开这个奇点呢?
同时,这个方程还有2个终值条件 Vt [Inf] == 1.8 * 10^(-7),v [Inf] == 0;
但软件说 NDSolve只能求解初值问题??
调试的时候参考了官方教学文档,然鹅还是没有解决:
https://reference.wolfram.com/language/tutorial/NDSolveDAE.html
最后想问的是求解这种方程的Method用什么好?之前试过 "Collocation","Shooting","QR",都没有解决问题(我其实还不明白这几种method的原理 TaT
)
==============源代码如下==================
Clear[Vt,v,\[Lambda],t,dae];
Clear[Derivative];
Clear["Global`*"];
d= 250*10^(-6);
Pm = 2*10^5;
M = 0.029;
\[Rho] = 2.33;
R = 8.31;
L = 1*10^(-2);
T = 293;
\[Nu] = 7.73 * 10^(-6);
DAE={
((\[Rho]*R*T/(M*Pm))-1)*v[t]*(Vt'[t])^2+v[t]*Vt''[t]*Vt[t]==v'[t]*Vt'[t]*Vt[t],
Vt'[t]==((\[Pi]*d^2)/4)*(Pm*v[t]/(Pm-0.5*\[Lambda][t]*\[Rho]*L*(v[t]^2)/d)),(\[Lambda][t])^(-0.5)==Log[10,(d^2*(v[t])^2*\[Lambda][t])/(2.51^2*\[Nu]^2)]
};
a=NDSolve[{DAE,Vt[0]==0,v[0]==383.431,\[Lambda][0]==0.0291924},{Vt,v,\[Lambda]},{t,0,10}]
2019年11月28日 10点11分
1

一个三元微分方程组用DAE求解,Vt、v 和 Lambda 是待求变量 三个初值条件 Vt[0]==0,v[0]==383.431,\[Lambda][0]==0.0291924 确定是没有错的。
但让他求解的时候总是报错
我怀疑是 t=0 处为 Vt 的一阶倒数的奇点(因此手算的时候也求不出 Vt ’ [0] 等于多少 ),想问问怎么让它在计算的时候避开这个奇点呢?
同时,这个方程还有2个终值条件 Vt [Inf] == 1.8 * 10^(-7),v [Inf] == 0;
但软件说 NDSolve只能求解初值问题??
调试的时候参考了官方教学文档,然鹅还是没有解决:
https://reference.wolfram.com/language/tutorial/NDSolveDAE.html
最后想问的是求解这种方程的Method用什么好?之前试过 "Collocation","Shooting","QR",都没有解决问题(我其实还不明白这几种method的原理 TaT
==============源代码如下==================
Clear[Vt,v,\[Lambda],t,dae];
Clear[Derivative];
Clear["Global`*"];
d= 250*10^(-6);
Pm = 2*10^5;
M = 0.029;
\[Rho] = 2.33;
R = 8.31;
L = 1*10^(-2);
T = 293;
\[Nu] = 7.73 * 10^(-6);
DAE={
((\[Rho]*R*T/(M*Pm))-1)*v[t]*(Vt'[t])^2+v[t]*Vt''[t]*Vt[t]==v'[t]*Vt'[t]*Vt[t],
Vt'[t]==((\[Pi]*d^2)/4)*(Pm*v[t]/(Pm-0.5*\[Lambda][t]*\[Rho]*L*(v[t]^2)/d)),(\[Lambda][t])^(-0.5)==Log[10,(d^2*(v[t])^2*\[Lambda][t])/(2.51^2*\[Nu]^2)]
};
a=NDSolve[{DAE,Vt[0]==0,v[0]==383.431,\[Lambda][0]==0.0291924},{Vt,v,\[Lambda]},{t,0,10}]
