You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maple中提取sup算子内表达式的方法(HJB型PDE推导)

Maple提取HJB方程中sup算子内的表达式

需求背景

你在推导HJB型PDE时定义了如下方程:

eq1 := diff(U(t, q), t) + lambda*sup(h(delta)*(U(t, q - 1) - U(t, q)) + (1 - h(delta))*(U(t, q) - U(t, q))+delta, delta) = 0;

需要提取sup算子内的表达式,最终得到:

eq2:=h(delta)*(U(t, q - 1) - U(t, q)) + (1 - h(delta))*(U(t, q) - U(t, q))+delta

解决方案

在Maple中,sup是特殊函数,结构为sup(目标表达式, 变量),可以通过以下步骤提取内容:

  1. 定位方程中的sup项:
sup_term := select(type, lhs(eq1), specfunc(anything, sup));

这行代码会从方程左侧筛选出sup类型的项,结果为sup(h(delta)*(U(t, q - 1) - U(t, q)) + (1 - h(delta))*(U(t, q) - U(t, q))+delta, delta)

  1. 提取sup函数的第一个参数(即算子内的表达式):
eq2 := op(1, sup_term);

也可以用链式写法简化:

eq2 := op(1, select(type, lhs(eq1), specfunc(anything, sup)));

执行后eq2即为你需要的目标表达式。

原方法无效的原因

  • indets(eq1, function)仅会列出方程中所有函数(如diff、sup、h),无法直接定位sup的内部参数;
  • select(has,eq1,delta)返回的是包含delta的整个项(即lambda*sup(...)),而非sup算子内的具体表达式。

内容的提问来源于stack exchange,提问作者EdisonKIng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:42:12