2

以下の記号式は、ある問題の答えです。

syms x y;
F = (6006059164170857*x^4)/36028797018963968 ...
    - (3741993627723215*x^3*y)/144115188075855872 ...
    - (3786059161694655*x^3)/576460752303423488 ...
    + (2057823154876729*x^2*y^2)/9007199254740992 ...
    + (7804706423002791*x^2*y)/36028797018963968 ...
    - (1579656551431947*x^2)/4503599627370496 ...
    - (5176864966130107*x*y^3)/576460752303423488 ...
    - (3350671128443929*x*y^2)/288230376151711744 ...
    - (2340405747630269*x*y)/72057594037927936 ...
    - (3122104315900301*x)/1152921504606846976 ...
    + (1757149312773205*y^4)/36028797018963968 ...
    - (5692299995057083*y^3)/576460752303423488 ...
    + (4054023049400589*y^2)/144115188075855872 ...
    - (434917661837037*y)/2251799813685248 ...
    - 2254148116991025/18014398509481984;

ご覧のとおり、読むには長すぎます。読みやすくするにはどうすれば短くできますか?

4

2 に答える 2

1

シンボリック方程式を最適な方法で作成しなかったため、最初は thin のような long integer になってしまった可能性があります。の出力を比較します

sym(exp(pi))

exp(sym(pi))

一般に、シンボリック方程式に複雑な方法で変換される数値定数がある場合 (たとえば、それらの指数を取る場合)、それらを明示的に定義する必要があります。関数に渡される前に定数がシンボリック変数に乗算または加算される場合、これは必要ない場合があります。

simpleさらに、 関数と関数を使用して、simplifyより適切なバージョンの式を試すことができます。あなたの場合:

G = simple(F)

戻り値

(192193893253467424*x^4 - 29935949021785720*x^3*y ...
- 7572118323389310*x^3 + 263401363824221312*x^2*y^2 ...
+ 249750605536089312*x^2*y - 404392077166578432*x^2 ...
- 10353729932260214*x*y^3 - 13402684513775716*x*y^2 ...
- 37446491962084304*x*y - 3122104315900301*x ...
+ 56228778008742560*y^4 - 11384599990114166*y^3 ...
+ 32432184395204712*y^2 - 222677842860562944*y ...
- 144265479487425600)/1152921504606846976

これは少し短いです (上記で提案したことを実行すると、かなり便利になる場合があります)。必要に応じて、そこから @pm89 の優れた提案に移動できます。

于 2013-07-13T17:58:10.617 に答える