1

x1 x2 m1 と m2 を解くために mupad で numeric::fsolve を使用しています。使用されるコマンドは次のとおりです。

Scase2:=numeric::fsolve([m1,g2,eqn1,eqn2],m1=0,m2=0..infinity,x1=-3.14..3.14,x2=-3.14..3.14],RestrictedSearch,MultiSolutions)

返される答えは次のとおりです。

[m1 = 0.0, m2 = -8.678897929, x1 = 3.38742203*10^(-17), x2 = 2.77006362], [m1 = 0.0, m2 = 19705.59085, x1 = -1486.62367, x2 = 157.7356704], [m1 = 0.0, m2 = -6151.321562, x1 = -6.594711892*10^(-18), x2 = 78.32275445], [m1 = 0.0, m2 = -2334.614422, x1 = -1.047226205*10^(-13), x2 = -48.81668048], [m1 = 0.0, m2 = 38.00363756, x1 = -70.90099452, x2 = 11.28424375], [m1 = 0.0, m2 = -3017.254857, x1 = -5.285351078*10^(-17), x2 = 55.38965896], [m1 = 0.0, m2 = -14353.49312, x1 = -3.299575199*10^(-16), x2 = 119.665553], [m1 = 0.0, m2 = 4746.862416, x1 = 216.8709045, x2 = 69.03215292], [m1 = 0.0, m2 = -337.6953647, x1 = 4.231726504*10^(-19), x2 = 18.53286231], [m1 = 0.0, m2 = 59888.45924, x1 = 769.621396, x2 = -244.978099], [m1 = 0.0, m2 = -754.4068652, x1 = 7.46136118*10^(-19), x2 = 26.99119714], [m1 = 0.0, m2 = -72400.20717, x1 = -1.43883627*10^(-12), x2 = -269.417393], [m1 = 0.0, m2 = -2953.978962, x1 = -3.936403445*10^(-22), x2 = -54.84860971], [m1 = 0.0, m2 = -0.6449920855, x1 = -2.627245131*10^(-15), x2 = -0.5757632436], [m1 = 0.0, m2 = -1646.776257, x1 = 3.55576955*10^(-15), x2 = -40.34209161], [m1 = 0.0, m2 = -52.36064061, x1 = -5.846045816*10^(-13), x2 = -6.937973456], [m1 = 0.0, m2 = 31302.17624, x1 = 707.7689947, x2 = 225.2898681], [m1 = 0.0, m2 = -6184.407888, x1 = 400.9347135, x2 = 127.621483], [m1 = 0.0, m2 = -30523.06702, x1 = 6.438047089*10^(-17), x2 = -175.083226], [m1 = 0.0, m2 = -212.5775725, x1 = 8.213227391*10^(-19), x2 = -14.08916721]

ただし、ソルバーによって返される回答には、指定された範囲外のソリューションが含まれています。まあ、手動で許容できる解決策を見つけることができます。これを行うためのより良い方法はありますか? ソルバーが許容範囲外の解を返すのはなぜですか?

4

1 に答える 1

1

ソルバーは文書化されているとおりに動作しています。RestrictedSearch の文書を確認してください。

検索範囲外の解が内部で見つかる場合があることに注意してください。これらは、オプション MultiSolutions でアクセスできます。例 7 を参照してください。

于 2015-01-23T09:50:47.677 に答える