最大值:如何使两个多项式的商成为多项式

maxima: how to make a quotient of two polynomials a polynomial

我正在尝试将两个多项式除以最大值:

f(x,y) = x*y;    
g(x,y) = x;

如何将它们的除法结果保存为新的多项式 h(x,y)?我试过这个:

h(x,y) := quotient(f(x,y),g(x,y));

它没有用,因为要求 h(0,0) 给了我 "division by zero" 错误。

我只需要 f 可以被 g 整除的情况的解决方案。

这里发生了几件事。 (1) 记住“:”是赋值运算符; “=”表示等式或等式,而“:=”是函数定义。对于 fg,可以使用“:”或“:=”获得可行的解决方案;我将在下面展示两者。

(2) “:=”中函数定义的右侧不计算(甚至简化),因此当您写 h(x, y) := quotient(...) 时,不计算商,并且h 的定义包含对 quotient 的调用。当您调用 h(0, 0) 时,您将使用 x = 0 和 y = 0 计算 quotient,这会产生一个数字而不是符号表达式。

我想你想要的是定义一个函数 h 使得 h(x, y)fgx 处计算的商和 y。如果是这样,这里有一个解决方案,对 fg.

使用“:”
f : x*y;
g : x;
define (h(x, y), quotient(f, g));

define 计算函数体(第二个参数),所以在定义函数之前进行商。

Maxima 最喜欢表达式,但也可以在这里将 fg 定义为函数。

f(x, y) := x*y;
g(x, y) := x;
define (h(x, y), quotient(f(x, y), g(x, y)));

我知道这个东西有点令人困惑,因为有不止一种方法可以做到。