Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

deval

计算微分方程解结构体

说明

示例

y = deval(sol,x)y = deval(x,sol) 可以计算 x 中包含的点处的微分方程问题的解 sol

示例

y = deval(___,idx) 只返回带有向量 idx 中所列索引的解分量。您可以使用前面列出的任一输入参数组合。

示例

[y,yp] = deval(___) 还会返回 yp,这是求解器生成的数值解的一阶导数。

示例

全部折叠

此示例使用 dde23 对 DDE 方程 y' = ddex1de(t,y,Z) 求解,然后绘制该解。

使用 dde23 对方程组求解。

sol = dde23(@ddex1de, [1 0.2], @ddex1hist, [0 5]);

在区间 [0 5] 中计算 100 个点处的解。

x = linspace(0,5);
y = deval(sol,x);

对解绘图。

plot(x,y)

Figure contains an axes. The axes contains 3 objects of type line.

此示例使用 ode45 对方程组 y' = vdp1(t,y) 求解,然后绘制该解的第一个分量。

使用 ode45 对方程组求解。

sol = ode45(@vdp1, [0 20], [2 0]);

在区间 [0 20] 中计算 100 个点处的解的第一个分量。

x = linspace(0,20,100);
y = deval(sol,x,1);

对解绘图。

plot(x,y)

Figure contains an axes. The axes contains an object of type line.

使用 ode23 对区间 [0,3] 内初始条件为 y0 = 0 的简单 ODE y' = t^2 求解。

sol = ode23(@(t,y) t^2, [0 3], 0);

计算在七个点的解。解结构体 sol 中包含一个插值函数,该函数由 deval 用来生成这些点的连续解。通过 deval 指定第二个输出参数还会返回指定点的插值函数的导数。

x = linspace(0,3,7);
[y,yp] = deval(sol,x)
y = 1×7

         0    0.0417    0.3333    1.1250    2.6667    5.2083    9.0000

yp = 1×7

         0    0.2500    1.0000    2.2500    4.0000    6.2500    9.0000

输入参数

全部折叠

解结构体,指定为由以下微分方程求解器之一返回的结构体。

  • 初始值问题求解器 - ode45ode23ode113ode15sode23sode23tode23tbode15i

  • 时滞微分方程求解器 - dde23ddesdddensd

  • 边界值问题求解器 - bvp4cbvp5c

示例: sol = ode45(@myode,tspan,y0)

数据类型: struct

求值点,指定为向量。x 指定要求解的值的点。x 的元素必须包含在原始积分区间 [sol.x(1) sol.x(end)] 内。对于每个索引 i,解 y(:,i)x(i) 相对应。

示例: 0:0.1:1

示例: [2 3 5 8]

数据类型: single | double

要返回的解分量,指定为向量。当您只对某些解分量感兴趣时,使用此输入。

示例: y = deval(sol,x,[2 3]) 只返回第二个和第三个解分量。

数据类型: single | double

输出参数

全部折叠

插值解,以向量或矩阵形式返回。y 中的行数等于返回的解分量的数量。

对于多边界值问题,通过 bvp4cbvp5c 获得的解在接口处可能不连续。对于交界点 xcdeval 函数返回 xc 左侧和右侧极限的平均值。要获得范围值,请将 x 的值设置为略大或略小于 xc

sol 生成的连续解的导数,以向量或矩阵形式返回。yp 的大小与 y 相同,表示由 y 中的每个解点处的 sol 使用的插值函数的斜率。

在 R2006a 之前推出