问题解决的颂歌

40视图(30天)
德拉
德拉 2023年5月17日19:59
回答: Torsten 2023年5月17日20:39
你好,
当我运行下面的代码,我得到一个错误,因为y的初始条件依赖于Dy。我看到这种情况下(边界条件取决于一阶导数)的一些论文,但我不知道如何解决它。有人能帮助我吗?
信谊y Dy D2y x y
y0 = (5 + Dy * 2) / 0.49;
ode = y - (1 / (Dy / y + (D2y * x) / y)) ^ 2;
ode1 =解决(ode = = 0, D2y)
ode1 =
ode2 = matlabFunction (ode1 (1),“var”,{x, y Dy})
ode2 =function_handle与价值:
@ (x, in2) (in2 (: 1)。* (sqrt (1.0. / in2 (: 1)) in2 (:, 2)。/ in2 (: 1))) / x
odefcn = @ (x, y) [y (2); ode2 (x, y [y (1), (2))));
bcfcn = @(是的,yb) [ya (1) y0; (2) 1];
xmesh = linspace (1 e - 3、4、10);
solinit = bvpinit (xmesh [1]);
索尔= bvp4c (odefcn bcfcn solinit);
无法执行任务,因为价值类型的“符号”不可自由兑换“双”。

错误bvp4c > colloc_RHS(第543行)
φ(1:nbc) = Gbc (y (:, Lidx), y (:, Ridx) ExtraArgs {1: nExtraArgs});

错误bvp4c(第182行)
(RHS, yp, Fmid, NF) = colloc_RHS (n, x, Y,颂歌,公元前npar, xyVectorized, mbcidx, nExtraArgs, ExtraArgs);

引起的:
错误使用symengine
不能包含符号变量的表达式转换成数组的两倍。“潜艇”函数首先适用于替代变量的值。
情节(sol.x sol.x。* sol.y (1,:))

接受的答案

Torsten
Torsten 2023年5月17日20:39
使用
bcfcn = @(是的,yb)[丫(1)-(5 +丫(2)* 2)/ 0.49;yb (2) 1];
而不是
bcfcn = @(是的,yb) [ya (1) y0; (2) 1];
在您的代码中。

更多的答案(0)

类别

找到更多的在常微分方程帮助中心文件交换

社区寻宝

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

开始狩猎!