2

max(a, b) を含む数式を単純化するために Maxima を使用しようとしています。
z = min(x1, x2)d = abs(x1 - x2)を定義したとすると、恒等式x1 * x2 = z*(z+d)x1 + x2 = 2*z + dが続きます。

たとえば、次の式を使用します。

(2*z^3+(−3*x2−3*x1)*z^2+6*x1*x2*z)/6

上記の ID を手動で適用すると、次のように単純化できます。

z^3 / 3 + (z^2 * d) / 2

マキシマでは、素朴に試しています

subst(min(x1, x2), v, ((6*v*x1−3*v^2)*x2−3*v^2*x1+2*v^3)/6), ratsimp

長い表情を演出します。

式の奥深くに埋め込まれたx1 * x2およびx1 + x2の出現を Maxima に見つけさせるにはどうすればよいでしょうか? たとえば、さまざまな形式のtellimpletletsimpを試しました。

let(x1*x2, z * (z+d))

また

let(K * x1*x2, K * z * (z + d), K, integer)

また

matchdeclare(R, true)
let(R * x1*x2 * z, R * z * (z+d))

Maxima に手動で到達できる素敵な短い式を生成させるにはどうすればよいでしょうか? もっと大きな式で作業する必要があります。

4

1 に答える 1

3

これは参考になるかも、

load("lrats");

    lratsubst([x1*x2=z*(z+d),x1+x2=2*z+d],
    (2*z^3+(−3*x2−3*x1)*z^2+6*x1*x2*z)/6)

(2*z^3+3*d*z^2)/6

また、身元をテストしたい場合は、次のことができます

z(x1,x2):=min(x1,x2)$
d(x1,x2):=abs(x1-x2)$

ここで、z(2,3)*(z(2,3)+d(2,3))=6 という数値を入力します。明らかに、これらは表現を単純化するのに役立ちません。

于 2014-12-10T05:38:29.330 に答える