Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 边界未知的Bvp4c_Matlab_Differential Equations - Fatal编程技术网

Matlab 边界未知的Bvp4c

Matlab 边界未知的Bvp4c,matlab,differential-equations,Matlab,Differential Equations,我有一个描述悬链线下垂的BVP,其中右边界未知(公元前8年和公元前9年)。 有人知道如何用函数bvp4c在Matlab中建模吗? 谢谢。与链接帖子中相同的方法适用,如果您有一个函数右侧(t,x)和边界条件(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 及 这些应允许在固

我有一个描述悬链线下垂的BVP,其中右边界未知(公元前8年和公元前9年)。 有人知道如何用函数bvp4c在Matlab中建模吗?
谢谢。

与链接帖子中相同的方法适用,如果您有一个函数
右侧(t,x)
边界条件(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


这些应允许在固定间隔´[0,1]´内调用BVP解算器。

边值问题解算器
bvp4c
需要边界。。。你需要一个不同的解决方案我从LutzL那里找到了一个建议[但我不明白如何在Matlab中实现它可能重复:。您的问题应该包含一个,关于您的方程/模型的更多细节,您尝试了什么,以及一些与链接问题不同的细节。很遗憾,我无法对该主题发表评论,因此我不知道如何询问更多信息。我只想了解如何在matlab中实现Python代码中fun1中操作的变量的更改。感谢您的回复。是不是
T=y(end)
应该是另一种方式吗?不,它是附加的最后一个组件。它很小,是一个导数为零的常数。但它必须是一个组件,以便BVP解算器可以更改它,解算器将不知道全局变量,也不可访问。如果要实现自己的特定BVP解算器,则不需要额外的component,但通用解算器没有特定的功能。我的意思是,如果调用应该以另一种方式编写,将T作为变量向量的最后一个元素,即
y(end)=T
。不,
y
是输入,它被认为是不可变的。所构造的是作为输出的导数向量
doty
y(结束)
包含通过初始条件设置的常数
T
。此初始条件设置是通用BVP解算器中更改常数(沿特定解决方案)的唯一机制亲爱的@LutzL,通过你的方法,我现在面临一个问题:我的方程描述了流体被挤压,因此一个边界不断移动,而另一个边界不断提供新的流体。我想将移动边界表示为离散时间步数的集合,并提供当前的初始猜测时间,上一次迭代的解决方案。我的问题是如何在左边界包含新挤出的流体,考虑到使用包装策略,我的模拟间隔始终为1。谢谢
function bc = wrapper_bc(ya,yb)
  bc = boundary_conditions(ya(1:end-1), yb(1:end-1))
end