如何求解这个复杂的方程式?

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

我正在尝试使用以下代码绘制以下方程的解,但它不起作用。任何帮助将不胜感激。

y= [[p*[c-x]+t*p*q' *x*s+q' *x*[x-c-m-s^2]+0.5*q'' *x^2*s^2-c*q' * s^2]/r+t*p*s-m]+[1/r-[[p' xs*p]/p]-[[p' *x]/p]*[x-c-m-s^2]+[[0.5*p'' *x^2*s^2]/p]]^[1/[1-a-b]] 

在哪里

p=(1/x)*[1/r-[[p' xs*p]/p]-[[p' *x]/p]*[x-c-m-s^2]+[[0.5*p'' *x^2*s^2]/p]]^[1/(1-a-b)]

q=[p*(x-c)+t*p*x*s*q'+q' *(x-c-m-s^2)+0.5*q'' x^2 * s^2-x*q' *s^2]/(r+t* p*s-m)

我使用的代码是:

syms y Dy D2y x Y 
r=0.05;
m=0.01;
p=1;
s=1;
t=0.1;
a=0.25;
b=0.25;
l=0.5;
c1=5;
t1=-1/c1;
ode = y-(1/x)*(1/(r-((p*Dy*x*s)/y)-((Dy*x)/y)*(x-c1-m+(s^2))-((D2y*(x^2)*(s^2))/(2*y))))^(1/(1-a-b));
D2ynum = solve(ode==0,D2y);
D2ynum = D2ynum(2);
f = matlabFunction(D2ynum);
odefcn = @(x,y)[y(2);f(y(2),x,y(1))];
bcfcn = @(ya,yb)[ya(1)-1;yb(1)];
xmesh = linspace(c1,80,150);
solinit = bvpinit(xmesh, [1 1]);
sol = bvp4c(odefcn,bcfcn,solinit);
Dy1 = diff(y1);
D2y1 = diff(y1,2);
ode = y1-((sol.y(1,:)*(x-c1)+t*p*x*s*Dy1+Dy1*x*(-m+(s^2)+(x-c1))+D2y1*(x^2)*(s^2)*0.5-x*Dy1*(s^2))/(r+t*p*s-m));
[VF,Subs] = odeToVectorField(ode1);
odefcn1 = matlabFunction(VF, 'Vars',{x,Y});
bcfcn1 = @(ya,yb)[ya(2)-t1;yb(1)];
solinit1 = bvpinit(xmesh, [c1 c1]);
sol1 = bvp4c(odefcn1,bcfcn1,solinit1);
plot(sol.x,sol.y(1,:)+sol1.y1(1,:))

matlab-figure ode
1个回答
0
投票

在数学和句法上它有几个问题肯定是导致错误的部分原因,例如不正确的变量名和不正确的方程式。这些是我可以发现的一些问题,也许还有更多:

  1. y
    提供的等式有括号和符号,它们不是 清楚的或定义明确的。很难遵循某些优先顺序 方程式中的运算。
  2. 不正确的变量名: 在原始代码中,有一些变量,如
    y1
    ,没有在任何地方定义。这在调用
    diff(y1)
    diff(y1, 2)
    时导致错误,我相信它是为了引用相同的符号变量
    y
    ,如果是这样用
    y
    替换它。

我对 Matlab 了解不多,但我希望这能解决部分问题。

© www.soinside.com 2019 - 2024. All rights reserved.