我正在尝试对一个由三个微分方程组成的系统进行建模。这是一个液滴模型,参数化与弧长s 的关系。
方程为:
dx/ds=cos(theta)
dz/ds=sin(theta)
(theta)/ds=2*b+c*z-sin(theta)/x
初始条件是 x、z 和 theta 在 s=0 时都为 0。为了避免 d(theta)/ds 上的奇异性,我还有一个条件是,在s=0处,d(theta)/ds=b。我已经写了这段代码:
[s,x]=ode23(@(s,x)drpivp(s,x,p),sspan,x0);
%where p contains two parameters and x0 contains initial angle theta, x, z values.
%droplet ODE function:
function drpivp = drpivp(s,x,p);
%x(1)=theta
%x(2)=x
%x(3)=z
%b is curvature at apex
%c is capillarity constant
b=p(1);
c=p(2);
drpivp=[2/p(1)+p(2)*x(3)-sin(x(1))/x(2); cos(x(1)); sin(x(1))];
这产生了一个螺旋式的解决方案。它不是创建一个液滴配置文件,而是创建许多。当然,这里我没有正确初始化方程,因为我不确定如何在 s=0 处为 theta 使用不同的方程。
所以问题是:我如何包含 d(theta)/ds=b 而不是通常在 s=0 处的初始条件?这可以使用matlab上的内置求解器吗?
谢谢。