pdeval
对 PDE 的数值解进行插值
说明
[
在新查询点 u
,dudx
] = pdeval(m
,xmesh
,usol
,xq
)xq
处对 pdepe
返回的数值解进行插值,并返回解 u
及其偏导数 dudx
的插值。重用此前调用 pdepe
时涉及的 m
、xmesh
和 usol
参量:
sol = pdepe(m,@pdefun,@pdeic,@pdebc,xmesh,tspan)
生成的数值解基于坐标对称性m
和空间网格xmesh
返回解值的三维矩阵sol
。当您调用pdeval
时,将对用于计算解的m
和xmesh
输入进行重用。输入向量
usol = sol(i,:,k)
是解的分量k
在时间tspan(i)
处的值。当只有一个解分量时,usol
是从解矩阵usol = sol(i,:)
中提取的一行。
示例
对 PDE 解进行插值
使用 pdepe
求解偏微分方程,然后使用 pdeval
计算其他点处的解。
求解 PDE
使用 pdepe
求解 pdex1
示例问题。您可以键入 edit pdex1
查看该问题的更多详细信息,或参阅 pdepe
了解 PDE 求解过程的详细信息。求解 pdex1
问题所需的函数作为局部函数包含在此示例的末尾。
m = 0; x = linspace(0,1,20); t = linspace(0,2,5); sol = pdepe(m,@pdex1pde,@pdex1ic,@pdex1bc,x,t);
对解进行插值
pdepe
生成的解 sol
使用 0 和 1 之间的 20 个等间距点确定 x
。创建一个查询点向量,这些查询点位于 pdepe
所用的各点之间。
xq = x; xq(1:end-1) = xq(1:end-1) + diff(xq)./2;
使用 pdeval
在查询点上对解进行插值。由于只有一个解分量,您可以从 sol
中提取一行对其执行运算,例如 sol(2,:)
。
[u,dudx] = pdeval(m,x,sol(2,:),xq);
绘制由 pdepe
计算的解,以及由 pdeval
计算的插值解及其偏导数。
plot(x,sol(2,:),'r*') hold on plot(xq,u,'-o') plot(xq,dudx,'.') hold off legend('PDEPE Solution', 'PDEVAL Interpolation', 'PDEVAL Partial Derivative')
局部函数
此处列出 PDE 求解器 pdepe
为计算解而调用的局部辅助函数。
function [c,f,s] = pdex1pde(x,t,u,DuDx) c = pi^2; f = DuDx; s = 0; end % ------------------------------------------------------ function u0 = pdex1ic(x) u0 = sin(pi*x); end % ------------------------------------------------------ function [pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t) pl = ul; ql = 0; pr = pi * exp(-t); qr = 1; end
输入参数
m
— pdepe
中使用的坐标对称性
0
| 1
| 2
xmesh
— pdepe
中使用的空间网格
向量
pdepe
中使用的空间网格,指定为向量 [x0 x1 ... xn]
,将在该向量包含的各点处计算数值解。请指定您最初调用 pdepe
时所用的空间网格。
数据类型: single
| double
usol
— 提取的解分量
向量
提取的解分量,指定为一个向量,其中包含 pdepe
在特定时间为一个解分量计算的值。
pdepe
以三维数组 sol
形式返回解,其中 sol(i,j,k)
是在时间 t(i)
和空间点 xmesh(j)
处计算的解 的第 k
个分量的逼近值。您可以使用命令 usol = sol(i,:,k)
创建输入 usol
,其中 sol(i,:,k)
是在时间 tspan(i)
上基于整个空间网格 xmesh
计算的解的分量 k
的值。当只有一个解分量时,usol
是从解矩阵 usol = sol(i,:)
中提取的一行。
示例: usol = sol(10,:,2)
提取在时间 tspan(10)
处计算的第二个解分量。
示例: usol = sol(5,:)
提取在时间 tspan(5)
处计算的解。
数据类型: single
| double
复数支持: 是
xq
— 查询点
标量 | 向量
查询点,指定为 x 坐标的标量或向量。xq
中指定的点必须位于 [min(xmesh) max(xmesh)]
区间内。
通常,xq
中指定的点位于 xmesh
中的各个值之间,以使 pdeval
能够在更精细的网格上计算 pdepe
生成的解。
示例: xq = linspace(0,1,100)
指定 0 和 1 之间的 100 个等间距查询点。
数据类型: single
| double
复数支持: 是
输出参量
u
— 插值解
向量
插值解,以与 xq
大小相同的向量形式返回。
dudx
— 插值解的偏导数
向量
插值解的偏导数,以与 xq
大小相同的向量形式返回。
提示
pdeval
计算偏导数 而不是通量 。虽然通量是连续的,但在物质界面处偏导数可能有跳跃。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)