0

一部の式を関数に置き換えようとしましたが、一部の用語が変更されていません。入力:

b + 2 *a/。(b * m_ + a * n_):> chi [m、n]

2 a + b

しかし、1の代わりに3*bを入れた場合

3 * b + 2 *a/。(b * m_ + a * n_):> chi [m、n]

出力は正しい

chi [3、2]

1. * bと書くと、うまく機能します

(1. * b + 2 * a)/。(b * m_ + a * n_):> chi [m、n]

アウト

chi [1.、2]

この点を避けるためにどのような仮定をしなければなりませんか?はい、最も簡単な方法はパターンから1を削除することですが、この例では、問題を解決するためだけに物事を単純化しすぎました。私の場合は、そのような形式の約50の用語の合計を書く方法です

Sqrt [Pi] V(m * b ^ 2 + n * a ^ 2)^(-3/2)、

ここで、mとnは整数で、b、a、V定数です。

4

1 に答える 1

0

部分式bがパターンに一致しませんb*m_。これを確認するには、たとえばFullFormのと を調べます。Mathematica のパターンは、セマンティクスではなく、構文上の形式で一致します。あなたと私はそれが同じであることを知っているかもしれませんが、Mathematica は式をパターンに一致させるときにこれを適用しないか、少なくとも適用しません.b2*bbb*1

編集

いいえ、どちらも機能しません。Mathematica はパターンマッチングの前にそれ1*bを評価します。bのルール1.0*bは明らかに異なります。一致するパターンを記述する方法はいくつかありますが1*b、最も簡単なのは、 のような別のルールを記述すること{b,a*n_}->chi[1,n]です。

于 2013-02-03T08:49:17.463 に答える