【问题标题】:Bvp4c with unknown boundary边界未知的 Bvp4c
【发布时间】:2018-07-18 11:13:15
【问题描述】:

我有一个描述悬链线下垂的 BVP,其中右边界未知(8 DE 和 9 BC)。 有人知道如何在 Matlab 中使用函数 bvp4c 对此进行建模吗? 谢谢。

【问题讨论】:

  • Boundary Value Problem solver bvp4c 需要边界...您需要不同的求解器.
  • 我从 LutzL [stackoverflow.com/questions/42936333/… 找到了一个建议,但我不明白如何在 Matlab 中实现它
  • 可能重复:stackoverflow.com/questions/42936333/…。您的问题应包含minimal reproducible example、有关您的方程式/模型的更多详细信息、您尝试过的内容以及使其与链接问题不同的一些细节。
  • 很遗憾,我无法就该主题发表评论,因此我不知道如何询问更多信息。我只想知道如何在matlab中实现Python代码中fun1中操作的变量变化。

标签: matlab differential-equations


【解决方案1】:

应用与链接帖子中相同的方法,如果您有函数 right_side(t,x)boundary_conditions(xa,xb),那么您需要处理间隔长度的附加组件的包装函数,

function doty = wrapper_rhs(s,y)
  T = y(end)
  doty = T*right_side(t0+s*T, y(1:end-1))
  doty(end+1)=0
end

function bc = wrapper_bc(ya,yb)
  bc = boundary_conditions(ya(1:end-1), yb(1:end-1))
end

这些应该允许在固定间隔“[0,1]”内调用 BVP 求解器。

【讨论】:

  • 感谢您的回复。难道T = y(end) 应该反过来?
  • 不,它是附加的最后一个组件。它是微不足道的,是导数为零的常数。但它必须是一个组件,以便 BVP 求解器可以更改它,全局变量将不为求解器所知和访问。如果您要实现自己的特定 BVP 求解器,则不需要额外的组件,但通用求解器没有特定功能。
  • 我的意思是如果调用应该以相反的方式编写以将 T 作为变量向量的最后一个元素,即y(end) = T
  • 不,y 是输入,它被认为是不可变的。构造的是作为输出的导数向量dotyy(end) 包含通过初始条件设置的常量 T。这种初始条件设置是通用 BVP 求解器中更改常数(沿特定解)参数的唯一机制。
  • 亲爱的@LutzL,用你的方法,现在我面临一个问题:我的方程描述了被挤出的流体,因此一个边界不断移动,而另一个边界不断提供新的流体。我想将移动边界表示为离散时间步长的集合,并提供当前时间的初始猜测,即前一次迭代的解决方案。我的问题是如何在左边界包含新挤出的流体,考虑到您的包装策略,我的模拟间隔始终为 1。谢谢
猜你喜欢
  • 2021-08-27
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
相关资源
最近更新 更多