• 締切済み

マクロでの複素関数の計算

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が並びます。複素数の設定をしていないのが原因なのか何か分からないのでもし表示される方法が分かられるかたがいらっしゃいましたらご教授お願いいたします。

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.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

inverter11
質問者

お礼

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

関連するQ&A