標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第555回]
●ND80ZVについてお問い合わせのメールをいただきました
ND80ZVの価格と発売開始時期についてのお問い合わせのメールをいただきました。
北海道のM様。
メールをお送りいただきありがとうございました。
今最後の追い込み中です。
価格、発売開始時期につきましては近日中にご案内できそうです。
決まりましたらホームページにてご案内いたします。
今しばらくお待ちいただきますようお願いいたします。
なお、メールにてお問い合わせいただきましたので、おおよその予定価格、予定時期につきましては、メールにてご返事をさしあげますが、本日はちょっと時間がありませんので、明日ご返事をさしあげます。
お待たせしてまことに申し訳ありませんが、それまでお待ちいただきますようお願いいたします。
今後ともよろしくお願いいたします。
有難うございました。
●指数関数EXP()
前回は常用対数LOG()と自然対数LN()について説明をいたしました。
自然対数ということになりますと、指数関数についてはどうなのか、ということになると思います。
ええ。
もちろん。
指数関数EXP()も使えますですよお。
EXP()はeを底とした指数exの関数です。
なおex以外の指数計算については、[第545回]で累乗(ベキ乗)の機能として説明をいたしました。
たとえば
a=xy
でしたらべき乗の記号 ^ を使って、
A=X^Y
のように使います。
さて、ではEXP()のサンプルプログラムです。
>list 10 FOR A=1 TO 10 20 PRINT A,EXP(A) 30 NEXT A >run 1 2.71828 2 7.38906 3 20.0855 4 54.5982 5 148.413 6 403.429 7 1096.63 8 2980.96 9 8103.09 10 22026.5
前回のサンプルプログラムと同様に、FOR NEXTを使って1〜10までのEXP()を計算させています。
つまりe1〜e10の計算です。
e≒2.71828ですから、Windowsの関数電卓を使って、たとえば2.71828[x^y]10[=]と操作すれば、EXP(10)を求めることができます。
なお、Windowsの関数電卓の[Exp]キーは指数関数exではありませんから、10[Exp]と操作してもEXP(10)を求めることはできません。
LOG()やLN()と同じようにEXP()もEXCELで計算させることができるようです。
でも、今回のEXP()についてはEXCELで比較しなくても、別の方法で、上で求めたEXP()の結果を確認することができます。
もうおわかりの方も多いと思います。
そうです。
前回説明をしました自然対数LN()を使えばよいのです。
a=LN(x)は、
a=logexですから
つまりx=eaということです。
したがって、上のサンプルプログラムで求めたxを、前回説明しました自然対数LN()に与えれば、元のaの値が返ってくるはずです。
そのようにプログラムを直して(追加して)試してみましょう。
>15e=exp(a) > 20 PRINT A,E,ln(e) >list 10 FOR A=1 TO 10 15 E=EXP(A) 20 PRINT A,E,LN(E) 30 NEXT A >ren >list 10 FOR A=1 TO 10 20 E=EXP(A) 30 PRINT A,E,LN(E) 40 NEXT A >run 1 2.71828 1 2 7.38906 2 3 20.0855 3 4 54.5982 4 5 148.413 5 6 403.429 6 7 1096.63 7 8 2980.96 8 9 8103.09 9 10 22026.5 10
EXP()の結果の値EをLN()に与えたところ、もとの値Aが得られました。
ということは、ここで計算したEXP()の値は正しい、ということです。
さて、では、同じことを、倍精度実数計算でもやってみましょう。
>list 10 FOR A#=1 TO 10 20 E#=EXP(A#) 30 PRINT A#,E#,LN(E#) 40 NEXT A# >run 1 2.718281828459045 0.9999999999999999 2 7.38905609893065 2 3 20.08553692318767 3 4 54.59815003314424 4 5 148.4131591025766 5 6 403.4287934927351 6 7 1096.633158428459 7 8 2980.957987041729 8 9 8103.083927575385 9 10 22026.46579480672 10
う。
また、ちょいと誤差が見えてしまいました。
少しばかり見苦しいので、ちょっと補正をすることにいたします。
>list 10 FOR A#=1 TO 10 20 E#=EXP(A#),L#=LN(E#) 30 IF A#=1 L#=L#+0.1D-15 40 PRINT A#,E#,L# 50 NEXT A# >run 1 2.718281828459045 1 2 7.38905609893065 2 3 20.08553692318767 3 4 54.59815003314424 4 5 148.4131591025766 5 6 403.4287934927351 6 7 1096.633158428459 7 8 2980.957987041729 8 9 8103.083927575385 9 10 22026.46579480672 10
これで、表示がすっきりしました。
2010.7.17upload
前へ
次へ
ホームページトップへ戻る