24小时热门版块排行榜    

查看: 1103  |  回复: 3

li52

金虫 (小有名气)

[求助] Matlab求解二阶常微分方程边值问题

我用bvp4c求解了一个简单的二阶常微分方程边值问题
原方程,其中k是一个常数
边界条件
我想得到不同的k时的结果。需要从别的结果中提取k的值,数量较大,一个一个修改不太现实。
据我尝试,描述微分方程的function的参数只能是(x,y),不能再添加一个k。
怎样能整理成一个function,把k也当作参数呢?

附:k=1的时候,MATLAB计算过程

先转换成一阶微分方程组




求解过程:
1.magFun.m  描述微分方程
  function dy = magFun(x,y)
  k = 1;
  dy = zeros(2,1);
  dy(1) = y(2);
  dy(2) = -k*cos(y(1));
  end
2.magBC.m  描述边界条件
  function res = magBC( ya,yb )
  res = [ ya(1); yb(2) ];
  end
3.magSol.m  求解
  function magSol
  solinit = bvpinit(linspace(0,1,5),[1 0]);
  sol = bvp4c(@magFun,@magBC,solinit);
  x = linspace(0,1);
  y = deval(sol,x);
  plot(x,y(1,: ))
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li52

金虫 (小有名气)

2楼2016-10-21 15:29:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shan_yin

木虫 (正式写手)

可以在微分方程里面定义参数,只需要调用时申明变量即可。例如 @(x,y)function(x,y,k)

发自小木虫Android客户端
3楼2016-12-27 02:58:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hgq2016

木虫 (正式写手)

请问楼主你这个程序怎么修改的,你上面贴的这个程序报错运行不了,本人菜鸟也在学这个
既然选择了方向,就只顾风雨兼程~~~~
4楼2018-10-22 11:19:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 li52 的主题更新
信息提示
请填处理意见