3

以下のコードですべてゼロが返される理由を理解しようとしています。

a = 7.0e16;
e = 100000;
r = 8.3140;
t = 253:2:325;

k = a.*exp(-e./t.*r);

kゼロのみで構成される 1x37 配列として返されます。

数値が大きすぎるか小さすぎるためですか?

4

1 に答える 1

4

アンダーフローが発生しています。exp でゼロになり、後で大きな数を掛けても手遅れです。これは物理方程式のように見えます - この場合、掛けるのではなく r で割ります。試す

exp(log(a)-e./(t*r))

それはうまくいくはずです

編集 - 指数に log(a) を乗算するのではなく、加算する必要があります...

于 2013-01-21T21:43:56.257 に答える