在最大值中集成分段定义的函数
Integrating a piecewise defined function in maxima
假设我有以下功能:
f(x) := if x<=0 then 0 else if x<=1 then 1 else -1;
或任何其他分段定义的函数。
函数定义似乎有效:
(%i9) f(-11);
f(1/2);
f(2);
(%o7) 0
(%o8) 1
(%o9) -1
但是这里不计算积分。有没有可能在 Maxima 中获得积分值?如果不是,是否可以用最大值进行数值计算?
load(abs_integrate)
获取 abs_integrate 包,使 integrate
能够处理 unit_step
。您必须根据 unit_step
编写分段函数。例如:
(%i1) load (abs_integrate) $
(%i2) e : unit_step(t) - 2*unit_step(t - 1) $
(%i3) integrate (e, t, a, b);
abs(b) - b - 2 abs(b - 1) - abs(a) + a + 2 abs(a - 1)
(%o3) -----------------------------------------------------
2
对于数值积分,quad_qags
(和其他 quadpack 函数)可以处理 unit_step
和 if
表达式。 quad_qags
不需要 abs_integrate
.
假设我有以下功能:
f(x) := if x<=0 then 0 else if x<=1 then 1 else -1;
或任何其他分段定义的函数。
函数定义似乎有效:
(%i9) f(-11);
f(1/2);
f(2);
(%o7) 0
(%o8) 1
(%o9) -1
但是这里不计算积分。有没有可能在 Maxima 中获得积分值?如果不是,是否可以用最大值进行数值计算?
load(abs_integrate)
获取 abs_integrate 包,使 integrate
能够处理 unit_step
。您必须根据 unit_step
编写分段函数。例如:
(%i1) load (abs_integrate) $
(%i2) e : unit_step(t) - 2*unit_step(t - 1) $
(%i3) integrate (e, t, a, b);
abs(b) - b - 2 abs(b - 1) - abs(a) + a + 2 abs(a - 1)
(%o3) -----------------------------------------------------
2
对于数值积分,quad_qags
(和其他 quadpack 函数)可以处理 unit_step
和 if
表达式。 quad_qags
不需要 abs_integrate
.