求解两个 ode 时输入参数不足错误

问题描述 投票:0回答:0

我想在 MATLAB 中为各种 x 值绘制 y。 Y 由 p 和 q 决定,它们是两个 ode。我正在使用下面的代码同时求解两个 odes,然后绘制 y,但我不断收到错误“输入参数不足”。你能告诉我哪里出了问题以及如何解决这个问题吗?谢谢。我已经包含了 p、q 和 y 的方程式图像。

Image

syms p Dp D2p q Dq D2q x  
r=0.05;
m=0.01;
z=1;
s=1;
t=0.1;
a=0.25;
b=0.25;
l=0.5;
c1=5;
t1=-1/c1;
ode = p-(1/x)*(1/(r-((z*Dp*x*s)/p)-((Dp*x)/p)*(x-c1-m+(s^2))-((D2p*(x^2)*(s^2))/(2*p))))^(1/(1-a-b));
D2ynum = solve(ode==0,D2p);
D2ynum = D2ynum(2);
f = matlabFunction(D2ynum);
ode1=q-(p * (x - c1) + t * z * Dq * x * s + Dq * x * (x - c1 - m + s^2) + 0.5 * D2q * x^2 * s^2 - x * Dq * s^2) / (r + t * z * s - m)
D2ynum1 = solve(ode1==0,D2q);
D2ynum1 = D2ynum1(1);
f1 = matlabFunction(D2ynum1);
odefcn = @(x,y)[y(2);f(y(2),x,y(1));y(4);f1(y(4),x,y(3))];
y(1) = p;
y(2) = Dp;
y(3) = q;
y(4) = Dq;
bcfcn = @(ya,yb,yc,yd)[ya(1)-1;yb(1);yc(2)-t1;yd(1)];
xmesh = linspace(c1,80,150);
solinit = bvpinit(xmesh, [1 1 0 0]);
sol = bvp4c(odefcn,bcfcn,solinit);
plot(sol.x,sol.x.*sol.y(1,:)+sol.y(3,:))
matlab ode nonlinear-equation
© www.soinside.com 2019 - 2024. All rights reserved.