当我运行我的代码,我继续这个错误:“以下错误发生转换从对称到双:无法将表达式转换为数组的两倍。”

15的观点(30天)
clc;
清晰;
关闭;
x = linspace (0, 1100);
solinit = bvpinit (x, [2 - 4]);
y = bvp4c (@ode2 @bc2 solinit);%ВЫЗЫВАЕМСОЛВЕРBVP4C:
y =德瓦尔(y、x);
情节(x, y (1:));
网格
传奇(“y (t)”);
包含(“t”);
函数dy = ode2 (~, y)% int y“+ y = 1 + ^ 1 _0 (y ' * x) dx; y (0) = 2, y (1) = 4;
dy = 0 (2, 1);%создаетнулевойвектор-столбец
dy (1) = y (2);
信谊y (x) x
dy (2) = 1 y (2) + int (x, y) (2) *“x”[0,1]);
结束
函数res = bc2 (ya,)
res =[丫(1)2
yb (1) 4);
结束
错误IDTboundary2 > ode2(16行)
dy (2) = 1 y (2) + int (y (2) * x, x, [0 1]);
错误bvparguments(第105行)
testODE =颂歌(x1, y1, odeExtras {:});
错误bvp4c(第130行)
bvparguments(公元前solver_name、颂歌,solinit选项,变长度输入宗量);
错误IDTboundary2(第6行)
y = bvp4c (@ode2 @bc2 solinit); %ВЫЗЫВАЕМСОЛВЕРbvp4c:

答案(1)

Torsten
Torsten 约9小时前
编辑:Torsten 约9小时前
所以你有一个恒定的源项
int ^ 1_0 (y ' * x) dx
在所有网格点——独立于位置的x在区间[0 1]吗?
然后使用
x = linspace (0, 1100);
solinit = bvpinit (x, [2 - 4]);
源= 0;
托尔= 1 e - 3;
错误= 1.0;
错误>托尔
索尔= bvp4c (@ (x, y) ode2 (x, y,源),@bc2, solinit);%ВЫЗЫВАЕМСОЛВЕРBVP4C:
source_new = trapz (sol.x sol.x。* sol.y (2:));
错误= abs (source_new -源);
源= source_new;
结束
情节(sol.x sol.y (1:));
网格
传奇(“y (t)”);
包含(“t”);
函数dy = ode2 (x, y,源)% int y“+ y = 1 + ^ 1 _0 (y ' * x) dx; y (0) = 2, y (1) = 4;
dy = 0 (2, 1);%создаетнулевойвектор-столбец
dy (1) = y (2);
dy (2) = 1 y(2) +源;
结束
函数res = bc2 (ya,)
res =[丫(1)2
yb (1) 4);
结束

类别

找到更多的在语言基础知识帮助中心文件交换

社区寻宝

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

开始狩猎!