0

Matlab初心者として、私はexp関数を少し試してきました。私が見つけたのは、次のことです:

a = 1.1
b = 5
test = exp (a+b)

望ましい(正しい)答えを生み出しました。(テスト = 445.8578)

ただし、 a を行列に置き換えると、完全に間違った結果が得られました。それで

a = [1.1 1.3 2.5 4.3]
b = 5
test = exp(a+b)

間違った結果を生成しました (テスト = 1.0e+04 *

0.0446 0.0545 0.1808 1.0938)

私はおそらく何かを見落としていますが、どこが間違っているのかわかりません。誰でも私を啓発できますか?

4

2 に答える 2

2

正しい結果が生成されます。

a = [1.1 1.3 2.5 4.3];
b = 5;
c = a + b

c = 
  6.1    6.3    7.5    9.3

次に、これらの各値の指数関数を計算します (少し丸めます)。

exp(6.1) =    445.86
exp(6.3) =    544.6
exp(7.5) =  1'808.0
exp(9.3) = 10'938

によって同じ結果が得られます

exp(c)

ans = 
    1.0e+04 *
     0.0446    0.0545    0.1808    1.0938

これは、印刷された各要素を で乗算する必要があることを意味します1.0e+04 = 10'000。これは正しい結果です。

これは MATLAB の標準出力形式であり、さまざまな値の大きさをすばやく確認できます。いくつかの異なる形式があります (詳細については、ドキュメントを参照してください)。興味深いかもしれませんshortG

format shortG
exp(c)
ans =
    445.86       544.57         1808        10938

これはまさにあなたが期待したものです。ご覧のとおり、これは単なる出力形式です。

于 2015-04-04T13:21:53.793 に答える
1

正しい答えを示しています。指数形式で表示しているだけです:1.0e+04 * 0.0446は と同じ445.8578です。

test(1)それを確認するために 評価を試すことができます。

于 2015-04-04T13:16:23.487 に答える