0

次の問題があります。

y=5;
syms x;
z = 1:5;
solve(exp(x*max(z))/sum(exp(x*z))-y,x)

私が得る出力は次のとおりです。

z = 1:5;

Warning: The solutions are parametrized by the symbols:
z1 = {0.08428351324821874240165938567037 -
2.5448937468890335808057943875982*I, 0.027288262408886135481488159484547
- 1.2999621981120554573735787663938*I,
0.08428351324821874240165938567037 +
2.5448937468890335808057943875982*I, 0.027288262408886135481488159484547
+ 1.2999621981120554573735787663938*I}

> In solve at 94
ans =
z1

ただし、数値解が必要です。誰でも初心者に優しいアプローチを推奨できますか?

ありがとう!(質問を言い換えるのを手伝ってくれてありがとう@horchler)

4

2 に答える 2

0

ベクトルは数値ですが、それxはシンボリック変数だと思いますか? zしたがって、次のようなものです。

syms x y;
z = 1:5;
solve(exp(x*max(z))/sum(exp(x*z))==y,x)

返す

Warning: The solutions are parametrized by the symbols:
z1 = RootOf(y*z^4 - z^4 + y*z^3 + y*z^2 + y*z + y, z)

> In solve at 180 

ans =

    log(z1)

solve明示的なものではなく、解決策を提供します。これは、ある多項式の根である解がいくつかあることを示しています。持つ要素が多いほどz(および の特定の値に応じてz)、多項式の次数が高くなります。二次方程式と三次方程式の根は簡単に見つかります。四次 (定数係数) も因数分解できます。一部の 5 次式も同様ですが、高次の場合、根の既知の解析解はほとんどありません。解を得るには、おそらく数値手法を使用する必要があります。

編集:あなたの方程式では、置換を試すことができます: let xp = exp(x)。その後、お使いのバージョンの のsolve方が簡単かもしれません。そう:

syms xp;
y = 5;
z = 1:5;
log(solve(xp^max(z)/sum(xp.^z)==y,xp))

返す

ans =

    0.027288262408886135481488159484547 - 1.2999621981120554573735787663938*i
    0.027288262408886135481488159484547 + 1.2999621981120554573735787663938*i
    0.08428351324821874240165938567037 - 2.5448937468890335808057943875982*i
    0.08428351324821874240165938567037 + 2.5448937468890335808057943875982*i
于 2013-07-14T19:28:47.880 に答える