今だけ人気マンガ100円レンタル特集♪

ExcelのVBAマクロで時間をtとおいて、exp(ti)=cost+isin(t)の実部と虚部を表示するプログラムを作成したいと思っています。

ソースは以下のようになっています。

Sub z()
Dim t As Double, tmax As Double
Dim dt As Double


Dim x As Double
Dim count As Integer
t = 0
tmax = 1
dt = 0.0001

count = 1

x = 0

While t < tmax
With Sheet1

.Cells(count, 1) = t '時刻t
.Cells(count, 2) = WorksheetFunction.ImReal(x) '実部
.Cells(count, 3) = WorksheetFunction.ImReal(x) '虚部
End With
count = count + 1 '書き込む行を更新
x = Exp(t * i)
t = t + dt '時刻を一ステップ更新

Wend
End Sub

これを実行すると、2列目にcos(t),3列目にsin(t)が表示されると思ったのですが、2列目には1が永遠に並び、3列目には0が並びます。複素数の設定をしていないのが原因なのか何か分からないのでもし表示される方法が分かられるかたがいらっしゃいましたらご教授お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

> Exp(t * i)


この式の意味は t という値と虚数単位との乗算を指数関数に代入したものではなく、t という変数と i という(未宣言の)変数との乗算を指数関数に代入したものです。
VBA では Excel が初期設定のままだと未宣言の変数があっても暗黙的にその変数を宣言します。
http://officetanaka.net/excel/vba/beginner/06.htm

検索してみたところ、VBA での複素数の設定法と演算に使用する関数のサマリーページが見つかりました。
http://homepage1.nifty.com/gfk/complex.htm
    • good
    • 0
この回答へのお礼

ありがとうございます
なんとか解決いたしました

お礼日時:2014/10/11 18:42

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelのVBAで複素数は扱えないのでしょうか?

ExcelのVBAで複素数は扱えないのでしょうか?
扱えない場合には
下記のFORTRAN77のコードの2行目は
VBAではどのように記述すれば良いのでしょうか?
DO 160 K=2,8192
C(K)=CMPLX(-1.,1./TAN(REAL(K-1)*PN))*C1*PN-(0.,1.)*C(K)/REAL(K-1)
160 CONTINUE
上記コードでC1=定数、PN=定数、C(K)=変数です。
ご教示を宜しくお願いします。

Aベストアンサー

計算方法自体はわかりませんが…

ご参考まで
http://tsuyu.cocolog-nifty.com/blog/2007/06/excel_3936.html
http://homepage1.nifty.com/gfk/complex.htm

VBA関連なら
http://www.geocities.jp/tomtomf/denki/AC4/ac4.htm

VBA用計算ライブラリを作っている人もいるらしい
http://sci.tea-nifty.com/blog/2008/10/excelvba-3b05.html


人気Q&Aランキング