主要内容

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解决方案的初始猜测,用BVP4C,然后将解决方案扩展到新域。

对解决BVP问题的解决方案形成一个很好的初始猜测也许是解决该问题的最困难的部分。BVP解万博 尤文图斯决方案不一定是唯一的,因此最初的猜测可能是求解器返回的许多解决方案中的决定因素。最初的猜测应满足边界条件,并且之间的行为应反映您对问题的一般期望(解决方案振荡是否是一个简单的线性函数,等等……)。

考虑微分方程

y ' ' = - y

该方程受边界条件的约束

y (( 0 = y (( π = 0

将方程式编码为一阶系统的函数是

功能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个均等网格点创建解决方案结构 [[ 0 ,,,, π 这是给予的 和最初的猜测功能。

Xmesh = linspace(0,pi,10);solinit = bvpinit(xmesh,@猜测);

解决BVP

称呼BVP4C使用ODE功能,边界条件和解决方案猜测。绘制结果。

sol = bvp4c(@bvpfun,@bcfun,solinit);情节(sol.x,sol.y,'-o'

图包含一个轴对象。轴对象包含2个类型行的对象。

本地功能

这里列出的是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,然后使用每个解决方案作为下一个间隔的初始猜测进行迭代扩展间隔。

考虑方程式

y ' ' = y

作为一阶系统,方程成为两个方程式的系统

y 1 ' = y 2 ,,,,

y 2 ' = y 1

该方程最初是在间隔上定义的 [[ 0 ,,,, 3 这是给予的 并受到边界条件的约束

y (( 0 = 0 ,,,,

y (( 3 = 1

将方程式编码为一阶系统的函数是

功能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,@猜测);

求解方程

在初始间隔中求解方程 [[ 0 ,,,, 3 这是给予的 并绘制结果 y 1

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'结尾

图包含一个轴对象。轴对象包含6个类型行的对象。

此示例显示了一个简化的版本延续,通过将问题分解为较小的间隔或更简单的问题来解决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)];结尾%---------------------------------------------------------------

输入参数

全部收缩

初始网格,指定为向量。在间隔上解决问题[一个,,,,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];
    对于此网格,边界条件适用于三个点:端点02和重复的条目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是的

解决方案的初始猜测,指定为向量或函数。

  • 向量- 对于解决方案的每个组件,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

数据类型:结构

输出参数

全部收缩

解决方案的最初猜测,返回为结构。将此结构用作第三个输入<一个href="//www.tianjin-qmedu.com/help/matlab/ref/bvp4c.html">BVP4C或者<一个href="//www.tianjin-qmedu.com/help/matlab/ref/bvp5c.html">BVP5C解决边界价值问题。

扩展功能

版本历史记录

在R2006a之前引入