[已答复] bvp4c代码里bvpinit运行问题

[复制链接]
柳六六 发表于 2022-8-11 16:11:08
微分方程
function dydx = bvpfun(x,y)
% y'=y(2),y''=y(3),y'''=y(4),y''''=y(5);
global EI G K b q M Q
dydx=zeros(4,1);
dydx=[y(2)
      y(3)
      y(4)
      (b*q-K*y+G*b*y(3))/EI];
end


边界条件
function res = bcfun(ya,yb)
global EI G K b q M Q
res = [ ya
        ya(2)
        yb(3)+M/EI
        yb(4)+Q/EI];
end


求解文件
global EI G K b q M Q
       EI=7.9*10^8;
       G=4.33*10^8;
       K=4.68*10^6;
       q=56.27;
       b=0.58;
       M=132.68;
       Q=86.06;
solinit = bvpinit(linspace(0,6.7,20),[0.001 0.002 0.003 0.004]);
sol = bvp4c(@bvpfun,@bcfun,solinit);
x = linspace(0,6.7,20);
y = deval(sol,x);
plot(y(1,:),x)


错误
错误使用 bvparguments (第 108 行)
调用 BVP4C(ODEFUN,BCFUN,SOLINIT)时出错:
  导函数 ODEFUN 应返回一个长度为 4 的列向量。

出错 bvp4c (第 122 行)
    bvparguments(solver_name,ode,bc,solinit,options,varargin);

出错 main (第 10 行)
sol = bvp4c(@bvpfun,@bcfun,solinit);


换过多个版本,目前是win10 64  r2021b,都是一样的错误


4 条回复


20141303 发表于 2022-8-11 16:32:49
仅供参考

  1. global EI G K b q M Q
  2. EI=7.9*10^8;
  3. G=4.33*10^8;
  4. K=4.68*10^6;
  5. q=56.27;
  6. b=0.58;
  7. M=132.68;
  8. Q=86.06;
  9. solinit = bvpinit(linspace(0,6.7,20),[0.001 0.002 0.003 0.004]);
  10. sol = bvp4c(@bvpfun,@bcfun,solinit);
  11. x = linspace(0,6.7,20);
  12. y = deval(sol,x);
  13. plot(y(1,:),x)
  14. function dydx = bvpfun(x,y)
  15. % y'=y(2),y''=y(3),y'''=y(4),y''''=y(5);
  16. global EI G K b q M Q
  17. dydx=zeros(4,1);
  18. dydx=[y(2)
  19.     y(3)
  20.     y(4)
  21.     (b*q-K*y(1)+G*b*y(3))/EI];
  22. end

  23. function res = bcfun(ya,yb)
  24. global EI G K b q M Q
  25. res = [ ya(1)
  26.     ya(2)
  27.     yb(3)+M/EI
  28.     yb(4)+Q/EI];
  29. end
复制代码

柳六六 发表于 2022-8-11 16:38:42

嗯?没看出来哪改过啊

20141303 发表于 2022-8-11 16:41:11
仅供参考,可以运行了,修改处在两个自定义函数里了

柳六六 发表于 2022-8-11 16:42:23

好的,谢谢,可以出结果了:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表