函数 > 求解和最优化 > 微分方程求解器 > 偏微分方程求解器
偏微分方程求解器
numol(x_endpts, xpts, t_endpts, tpts, num_pde, num_pae, pde_func, pinit, bc_func)
返回包含一维偏微分方程 (PDE) pde_func 的解的 [xpts x tpts] 矩阵。只有一个解时,每列表示一维空间上的一个解。对于方程组,每个函数的解都是水平添加的,因此矩阵始终为 xpts 行和 tpts * (num_pde + num_pae) 列。使用线性数值方法进行求解。
自变量
x_endpts, t_endpts 为二维列矢量,指定积分区域的实数端点。
xpts, tpts 为积分区域内点 (在这些点处逼近解) 的整数个数。
num_pde, num_pae 分别为偏微分方程和偏代数方程 (PAE) 的整数个数。num_pde 必须至少为 1,num_pae 可以为 0 或更大的值。
pde_func 是长度为 (num_pde + num_pae) 的 xtuuxuxx 的矢量函数。它包含 PDE/PAE 的右侧部分,假设左侧部分均为 ut。假设解 u 为函数矢量。
如果您正在使用 PDE 方程组,pde_func 的每行上的每个 u 都是由使用索引操作符的下标定义的,另外也可以使用文字下标运算符。例如,u[0 指方程组中的第一个函数,而 ux[1 指方程组中第二个函数的一阶导数。
pinit 是长度为 (num_pde + num_pae) 的 x 的矢量函数,包含方程组中每个函数的初始条件。
bc_funcnum_pde * 3 的矩阵,包含如下形式的行:
对于 Dirichlet 边界条件
[bc_left(t)
bc_right(t)
"D"]
对于 Neumann 边界条件
[bc_left(t)
bc_right(t)
"N"]
当相应行的 PDE 包含二阶偏导数时,左右条件均不可或缺。
如果特定 PDE 中只含一阶偏导数,则应将其中某个边界条件函数替换为 "NA",且每行的最后一项始终为 "D."
如果方程组中的特定方程不含偏导数,则会忽略矩阵中的这一行,并以 ("NA" "NA" "D") 形式对其进行填充。
要了解有关使用 numol 求解偏微分方程的详细信息,请观看此视频:
附加信息
允许使用代数约束,例如,对于所有 x 满足 0 = u2(x) + v2(x) − w(x)
所需边界函数的个数与每个 PDE 的空间导数的阶数相匹配,从而确保了解的唯一性。
使用 numol 只能求解双曲线和抛物线型 PDE。对于椭圆方程,如泊松方程,请使用 relaxmultigrid
这对您有帮助吗?