bvpinit
边界价值问题解决者的初始猜测
描述
使用初始网格solinit
= bvpinit(<一个href="#mw_f5c6bf94-7090-42c0-b204-ca5abdd4c7b4" class="intrnllnk">X
,,,,<一个href="#mw_1c665a1d-6f2b-438a-95eb-6c6a2cd19026" class="intrnllnk">yinit
)X
和初始解决方案猜测yinit
为边界价值问题的解决方案形成最初的猜测。然后您可以使用初始猜测solinit
作为输入之一BVP4C
或者BVP5C
解决边界价值问题。
在间隔上对解决方案形成初始猜测solinit
= bvpinit(<一个href="#mw_be18ab0b-450d-4db7-9e59-6221a3763c47" class="intrnllnk">溶胶
,[重新BNEW])[重新BNEW]
, 在哪里溶胶
是从BVP4C
或者BVP5C
。新间隔[重新BNEW]
必须大于以前的间隔溶胶
被定义为。先前的解决方案溶胶
被外推到新间隔。
指定边界值问题中未知值的参数的初始猜测向量。您可以将此语法与以前的任何一个输入参数组合一起使用。solinit
= bvpinit(___,,,,<一个href="#mw_259354c1-ada4-4d5e-9393-eeb56876de2f" class="intrnllnk">参数
)
例子
BVP解决方案的最初猜测
创建对BVP解决方案的初始猜测,用BVP4C
,然后将解决方案扩展到新域。
对解决BVP问题的解决方案形成一个很好的初始猜测也许是解决该问题的最困难的部分。BVP解万博 尤文图斯决方案不一定是唯一的,因此最初的猜测可能是求解器返回的许多解决方案中的决定因素。最初的猜测应满足边界条件,并且之间的行为应反映您对问题的一般期望(解决方案振荡是否是一个简单的线性函数,等等……)。
考虑微分方程
。
该方程受边界条件的约束
。
将方程式编码为一阶系统的函数是
功能dydx = bvpfun(x,y)dydx = [y(2)-y(1)];结尾
同样,编码边界条件的函数为
功能res = bcfun(ya,yb)res = [ya(1)yb(1)];结尾
您要么可以将所需的函数作为文件末尾的本地函数包含(如在此处完成),要么可以将其保存为单独的命名文件,并在MATLAB路径上的目录中保存。
使用功能句柄的初始猜测
您可以合理地期望方程的解决方案具有振荡性,因此正弦和余弦函数是对溶液的行为及其在固定边界点之间的衍生物的很好的初始猜测。
功能y =猜测(x)y = [sin(x)cos(x)];结尾
使用域中的10个均等网格点创建解决方案结构 和最初的猜测功能。
Xmesh = linspace(0,pi,10);solinit = bvpinit(xmesh,@猜测);
解决BVP
称呼BVP4C
使用ODE功能,边界条件和解决方案猜测。绘制结果。
sol = bvp4c(@bvpfun,@bcfun,solinit);情节(sol.x,sol.y,'-o')
本地功能
这里列出的是BVP求解器的本地辅助功能BVP4C
调用来计算解决方案。另外,您可以将这些功能保存在MATLAB路径上的目录中。
功能dydx = bvpfun(x,y)求解%方程dydx = [y(2)-y(1)];结尾%---------------------------------------------------------------功能res = bcfun(ya,yb)% 边界条件res = [ya(1)yb(1)];结尾%---------------------------------------------------------------功能y =猜测(x)%猜测解决方案行为y = [sin(x)cos(x)];结尾%---------------------------------------------------------------
用外推扩展BVP溶液
在初始间隔上求解BVP,然后使用每个解决方案作为下一个间隔的初始猜测进行迭代扩展间隔。
考虑方程式
。
作为一阶系统,方程成为两个方程式的系统
,,,,
。
该方程最初是在间隔上定义的 并受到边界条件的约束
,,,,
。
将方程式编码为一阶系统的函数是
功能dydx = bvpfun(x,y)dydx = [y(2)y(1)];结尾
同样,编码边界条件的函数为
功能res = bcfun(ya,yb)res = [ya(1)yb(1)-1];结尾
您要么可以将所需的函数作为文件末尾的本地函数包含(如在此处完成),要么可以将其保存为单独的命名文件,并在MATLAB路径上的目录中保存。
最初的猜测
使用指数函数作为解决方案的初始猜测。由于该方程有两个解决方案组件,请编写表单的初始猜测功能y =猜测(x)
返回向量。
功能y =猜测(x)y = [exp(x)exp(x)];结尾
五点的网格足以捕获猜测功能的行为。
Xmesh = linspace(0,3,5);solinit = bvpinit(xmesh,@猜测);
求解方程
在初始间隔中求解方程 并绘制结果 。
sol = bvp4c(@bvpfun,@bcfun,solinit);绘图(sol.x(1,:),sol.y(1,:),,,,'-o')
扩展间隔
现在,使用bvpinit
为了扩展集成间隔在循环中,解决和绘制每个新问题。在每次迭代中,使用先前的解决方案形成初始猜测溶胶
推断到新间隔[0 K]
。在每个新问题中,BVP4C
在新边界处执行边界条件[0 K]
。
抓住上为了k = 4:8 solinit = bvpinit(sol,[0 k]);sol = bvp4c(@bvpfun,@bcfun,solinit);绘图(sol.x(1,:),sol.y(1,:),,,,'-o')结尾
此示例显示了一个简化的版本延续,通过将问题分解为较小的间隔或更简单的问题来解决BVP的有用技术。有关此技术的更多示例,请参见:
本地功能
这里列出的是BVP求解器的本地辅助功能BVP4C
调用来计算解决方案。另外,您可以将这些功能保存在MATLAB路径上的目录中。
功能dydx = bvpfun(x,y)求解%方程dydx = [y(2)y(1)];结尾%---------------------------------------------------------------功能res = bcfun(ya,yb)% 边界条件res = [ya(1)yb(1)-1];结尾%---------------------------------------------------------------功能y =猜测(x)%猜测解决方案行为y = [exp(x)exp(x)];结尾%---------------------------------------------------------------
输入参数
X
-初始网格
向量
初始网格,指定为向量。在间隔上解决问题[一个,,,,b], 指定x(1)
作为一个和x(end)
作为b。条目X
必须按顺序越来越多(如果一个<b)或减少订单(如果一个>b)。求解器将此网格适应溶液(通过添加,卸下和移动网格点),因此猜测x = linspace(a,b,10)
通常就足够了。要处理困难的问题,请放置一些网格点,使解决方案迅速变化。
为了两点边界价值问题,条目
X
必须是唯一的。也就是说,如果一个<b,条目必须满足x(1)
<x(2)
<... <x(end)
。如果一个>b,条目必须满足x(1)
>x(2)
> ...>x(end)
。为了多点边界价值问题,您可以指定[一个,,,,b]除端点以外,边界条件适用于边界条件一个和b,通过重复他们的条目
X
。例如,考虑向量x = [0 0.5 1 1 1.5 2];
0
和2
和重复的条目1
。通常,重复的条目表示[一个,,,,b]。重复进入1
划分间隔[0 2]
分为两个区域:[0 1]
和[1 2]
。
例子:solinit = bvpinit(linspace(a,b,10),yinit)
数据类型:单身的
|双倍的
|int8
|INT16
|INT32
|INT64
|UINT8
|UINT16
|UINT32
|Uint64
|逻辑
复杂的数字支持:万博1manbetx是的
yinit
-解决方案的最初猜测
向量|功能
解决方案的初始猜测,指定为向量或函数。
向量- 对于解决方案的每个组件,
bvpinit
将向量的相应元素复制为在所有网格点上的常数猜测。那是,yinit(i)
是不断的猜测一世
TH组件yinit(i,:)
在所有网格点的解决方案X
。功能- 对于给定的网格点,猜测函数必须返回一个向量,其元素是解决方案的相应组件的猜测。该功能必须为形式
y =猜测(x)
X
是网格点和y
是一个矢量,其长度与解决方案中的组件数量相同。例如,如果yinit
是一个函数,然后在每个网格点bvpinit
呼叫y(:,j)=猜测(x(j))
对于多点边界价值问题,猜测功能必须为形式
y =猜测(x,k)
y
是解决方案的最初猜测X
在地区k
。该功能必须接受输入参数k
,为编写猜测功能而提供灵活性。但是,该功能不需要使用k
。
例子:solinit = bvpinit(x,)
例子:solinit = bvpinit(x,@猜测)
数据类型:单身的
|双倍的
|int8
|INT16
|INT32
|INT64
|UINT8
|UINT16
|UINT32
|Uint64
|逻辑
|char
|function_handle
复杂的数字支持:万博1manbetx是的
参数
-未知参数值的初始猜测
标量|向量
未知参数值的初始猜测,指定为标量或向量。
例子:solinit = bvpinit(x,yinit,[0 1 sqrt(2)])
指定三个未知参数的猜测向量。
例子:类型编辑MAT4BVP
查看具有未知参数的BVP的示例。
数据类型:单身的
|双倍的
|int8
|INT16
|INT32
|INT64
|UINT8
|UINT16
|UINT32
|Uint64
|逻辑
复杂的数字支持:万博1manbetx是的
溶胶
-先验解决方案
结构体
先验解决方案,指定为返回的解决方案结构BVP4C
或者BVP5C
。如果溶胶
包含参数,将它们复制到solinit
。
数据类型:结构
输出参数
solinit
- 解决方案的最初猜测
结构体
解决方案的最初猜测,返回为结构。将此结构用作第三个输入<一个href="//www.tianjin-qmedu.com/help/matlab/ref/bvp4c.html">BVP4C
或者<一个href="//www.tianjin-qmedu.com/help/matlab/ref/bvp5c.html">BVP5C
解决边界价值问题。
扩展功能
基于线程的环境
使用MATLAB®在后台运行代码背景池
或使用并行计算工具箱加速代码™螺纹池
。
此功能完全支持基于线程的环境。万博1manbetx有关更多信息,请参阅<一个href="//www.tianjin-qmedu.com/help/matlab/matlab_prog/run-functions-on-threads.html" class="a">在基于线程的环境中运行MATLAB功能。
版本历史记录
matlab命令
您单击了与此MATLAB命令相对应的链接:
通过在MATLAB命令窗口中输入该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您还可以从以下列表中选择一个网站:
如何获得最佳网站性能
选择中国网站(中文或英语)以获得最佳场地性能。其他Mathworks乡村网站未针对您所在的访问进行优化。
美洲
- AméricaLatina(Español)
- 加拿大(英语)
- 美国(英语)