如何解决“系统包含一个非线性方程”

5视图(30天)
今天
今天 2023年5月7日
评论道: 今天2023年5月7日
你好,当我运行下面的代码,我得到一个错误,因为y的二阶导数的平方(x)。有人能告诉我怎么解决这种类型的问题?
信谊y (x) x y
妈妈= 2;
r = 0.05;
m = 0.01;
p = 1;
s = 1;
t = 0.1;
一个= 0.25;
b = 0.25;
l = 0.5;
t0 = ((1 / (r + p * sm)) ^ (1 / (1-a-b))) + ((1 / (r + p * sm)) ^ (1 / (1-a-b))) * ((1 / (r + t * p * sm)) ^(1 /(1升)));
Dy = diff (y);
D2y = diff (y, 2);
莫= 1 / (r - ((p * Dy * x * *妈妈)/ y) - ((Dy * x *妈妈)/ y) + ((Dy * x *妈* m) / y) - ((Dy * x * (s ^ 2) *(妈妈^ 2))/ y) - ((D2y * (x ^ 2) * (s ^ 2) *(妈妈^ 2))/ (2 * y)));
mi = 1 / (r - (x (t * p * Dy * * *妈妈)/ y) - ((Dy * x *妈妈)/ y) + ((Dy * x *妈* m) / y) - ((Dy * x * (s ^ 2) *(妈妈^ 2))/ y) - ((D2y * (x ^ 2) * (s ^ 2) *(妈妈^ 2))/ (2 * y)));
ode = y - (1 / x) * (mo ^ (1 / (1-a-b)) +莫^ (1 / (1-a-b)) * mi ^(1 /(1升)));
(VF、潜艇)= odeToVectorField (ode);
错误使用mupadengine / feval_internal
系统包含一个非线性方程的差异(y (x) x, x)”。系统必须准线性:最高衍生品必须进入线性微分方程。

错误odeToVectorField > mupadOdeToVectorField(第171行)
T = feval_internal (symengine symobj:: odeToVectorField, sys, x, stringInput);

错误odeToVectorField(第119行)
索尔= mupadOdeToVectorField(变长度输入宗量);
odefcn = matlabFunction (VF),“var”,{x, Y});
bcfcn = @(是的,yb) [ya (1) t0; (1)];
xmesh = linspace (80150);
solinit = bvpinit (xmesh [0 0]);
索尔= bvp4c (odefcn bcfcn solinit);
情节(sol.x sol.y (:))

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年5月7日
编辑:沃尔特·罗伯森 2023年5月7日
信谊y (x) x y
妈妈= 2;
r = 0.05;
m = 0.01;
p = 1;
s = 1;
t = 0.1;
一个= 0.25;
b = 0.25;
l = 0.5;
t0 = ((1 / (r + p * sm)) ^ (1 / (1-a-b))) + ((1 / (r + p * sm)) ^ (1 / (1-a-b))) * ((1 / (r + t * p * sm)) ^(1 /(1升)));
Dy = diff (y);
D2y = diff (y, 2);
莫= 1 / (r - ((p * Dy * x * *妈妈)/ y) - ((Dy * x *妈妈)/ y) + ((Dy * x *妈* m) / y) - ((Dy * x * (s ^ 2) *(妈妈^ 2))/ y) - ((D2y * (x ^ 2) * (s ^ 2) *(妈妈^ 2))/ (2 * y)));
mi = 1 / (r - (x (t * p * Dy * * *妈妈)/ y) - ((Dy * x *妈妈)/ y) + ((Dy * x *妈* m) / y) - ((Dy * x * (s ^ 2) *(妈妈^ 2))/ y) - ((D2y * (x ^ 2) * (s ^ 2) *(妈妈^ 2))/ (2 * y)));
ode = y - (1 / x) * (mo ^ (1 / (1-a-b)) +莫^ (1 / (1-a-b)) * mi ^(1 /(1升)));
颂歌
ode (x) =
分母有d ^ 2 y / dx ^ 2,和这一项的平方,所以d ^ 2的平方y / dx ^ 2出现在方程。
sode =简化(扩大(ode (x)),“步骤”,50)
sode =
如果你看看 这是d ^ 2 y / dx ^ 2你可以看到它似乎第四权力扩展版本,所以比看起来的情况可能会更糟。
6个评论

登录置评。

类别

找到更多的在创建和连接矩阵帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!