2017-11-18 13 views
0

私は財務データに関する調査のログ復帰シリーズを計算しています。matlabの計算式

対数の法則では、log(p_t/p_t-1)log(p_t) - log(p_t-1)と同じです。好奇心のうち

私は同じであるべき二つの異なるシリーズを計算...

r = log(price(2:end)) - log(price(1:(end - 1)));

r1 = log(price(2:end))./price(1:(end - 1));

私がチェックすることを決めた:

r1 == r

とI を入手するTON 0 tアレイ。

これには何らかの理由がありますか?これらの2つは完全に同等でなければなりません。私は奇妙な浮動小数点のものはここで問題になるとは思わないでしょう、そして、もしそれらが問題であれば、両方のベクトルを等しくします。

ここでは何が起こっていますか?

+0

おそらく、数値精度の制限があります。 –

+4

[24.0000がMATLABで24.0000にならない理由](https://stackoverflow.com/questions/686439/why-is-24-0000-not-equal-to-24-0000-in-matlab ) –

+0

浮動小数点値の場合、等価性検査では公差を実装する必要があります:eq = abs(a-b)<= eps(max(abs(a)、abs(b))); –

答えて

0

2番目の式でカッコが間違っていますが、浮動小数点の違いが表示されます。

r = log(price(2:end)) - log(price(1:(end - 1))); 

r1 = log(price(2:end)./price(1:(end - 1)));