假设我有BVP
ny ^(n-1)-2 * phi * y''= 0,其中给出n和phi。 Y(0)= Y(5)= 4
为了使用BVP4c,我首先将其转换为一阶微分方程组
说y_1 = y和y_2 = y'
然后我们得到系统
y'_1 = y2, y'_2 =(nx ^(n-1))/(2 * phi)
我现在写一个matlab函数来做这个,即
function sol=bvpsolve(n,phi)
function dydx = odefun(x,y)
dydx = [y(2);(n*y(1)^(n-1))/(2*phi)]
end
function res = bcfun(ya,yb)
res = [ ya(1) -1.0; yb(1) -4.0]
end
solinit = bvpinit(linspace(0,5,4),[1 0]);
sol = bvp4c(@odefun,@bcfun,solinit);
end
然后我在终端中调用该函数,即
sol=bvpsolve(2,1);
然后我收到此错误
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in bvp4c>colloc_RHS (line 600)
Phi(1:nBCs) = Gbc(y(:,Lidx),y(:,Ridx),ExtraArgs{1:nExtraArgs});
Error in bvp4c (line 189)
[RHS,yp,Fmid,NF] = colloc_RHS(n,x,Y,ode,bc,npar,xyVectorized,mbcidx,nExtraArgs,ExtraArgs);
Error in bvpsolve (line 13)
sol = bvp4c(@odefun,@bcfun,solinit);
Error in hw4 (line 3)
sol=bvpsolve(2,1);
这似乎是匹配错误,即由于某种原因我没有匹配尺寸。我匹配了puphpet.com
中找到的文档基本上只是重做第一个例子的内容。有人可以轻易看到我出错的地方吗?
答案 0 :(得分:1)
你的行
"Aug 4th, 1948 2 PM"
看起来像2×2矩阵的构造,实际上你想要返回边界条件(你在问题陈述中说res = [ ya(1) -1.0; yb(1) -4.0]
?)
基本上,这是一个CAS在解释白空间含义时过多考虑自己的问题。只需删除空格
即可y(0)=4
或使格式更明确
res = [ ya(1)-1.0; yb(1)-4.0]
在这个例子中,他们使加号独立,这似乎也可以防止错误解释,
res = [ [ ya(1) - 1.0 ]; [ yb(1) - 4.0 ] ]