喫茶XRAYトップページ

[スレッド全体
]

[9125] Re7:Delphiで複素数計算返信 削除
2015/8/25 (火) 09:24:59 taki
C言語のコードの省略してある部分にヒントがありました。
denominator=numerator=0.0+I*0.0;

福士さんに教えてもらった"I"は数学の虚数単位iのことなので、
"+I*"より左の0.0が実数(Real)の値で、"+I*"より右の0.0が虚数
(Imaginary)の値のようです。

問題は、"+I*"じゃなくて"-I*"だということですね。

RealもImaginaryも実数を格納するから、やはり
0.0 +I* (-N2pi * n); の意味になるのかな?

今回参考にしたC言語のソースでは1.1+I*2.2の様式みたいですが、
1.1+2.2*Iのように記述する様式もあるみたいですね。

後は、カットアンドトライですか。道は険しい。


[9128] Re8:Delphiで複素数計算返信 削除
2015/8/25 (火) 16:55:02 taki
// ------------------------------------

  rad := (27 / 180) * pi;  // 27度

  a.Real := rad;
  a.Imaginary := rad;

  kaku := VarComplexAngle(a);   // 偏角は?

  kaku := kaku / pi * 180;
  label1.Caption := floattostr(kaku);   // 常に結果は45

  label2.Caption := floattostr(VarComplexAbs(a));
  // rad := ( 27 / 180) * pi; の時は 0.6664...
  // rad := (127 / 180) * pi; の時は 3.134..   半径が変わる

// ------------------------------------

  rad := (127 / 180) * pi;

  a.Real := rad;            // 127
  a.Imaginary := rad;       // 127

  b := VarComplexExp(a);    // b = e^a

  kaku := VarComplexAngle(b);   // 偏角は?
  kaku := kaku / pi * 180;
  label3.Caption := floattostr(kaku);    // 127度
  label4.Caption := floattostr(VarComplexAbs(b));    // 9.1757...

// ------------------------------------

  rad := (127 / 180) * pi;  // 2.21656...

  a.Real := rad;            // 127
  a.Imaginary := -rad;      // -127

  b := VarComplexExp(a);    // b = e^a

  kaku := VarComplexAngle(b);   // 偏角は?
  kaku := kaku / pi * 180;
  label5.Caption := floattostr(kaku);    // -127度
  label6.Caption := floattostr(VarComplexAbs(b));     // 9.1757...

// ------------------------------------

色々と試してみました。

> 問題は、"+I*"じゃなくて"-I*"だということですね。

どうやら、右回りになりそうです。
 
> RealもImaginaryも実数を格納するから、やはり
> 0.0 +I* (-N2pi * n); の意味になるのかな?


Realが0なら、Imaginaryがどんな値をとっても・・・ですよね。


[9131] Re9:Delphiで複素数計算返信 削除
2015/8/25 (火) 20:06:05 taki
// ------------------------------------

  rad := (127 / 180) * pi;

  a.Real := 0.0;            // 0.0
  a.Imaginary := rad;       // 127

  b := VarComplexExp(a);    // b = e^a

  kaku := VarComplexAngle(b);   // 偏角は?
  kaku := kaku / pi * 180;
  label3.Caption := floattostr(kaku);    // 127度
  label4.Caption := floattostr(VarComplexAbs(b));    // 1.0

// ------------------------------------

  rad := (127 / 180) * pi;  // 2.21656...

  a.Real := 0.0;            // 0.0
  a.Imaginary := -rad;      // -127

  b := VarComplexExp(a);    // b = e^a

  kaku := VarComplexAngle(b);   // 偏角は?
  kaku := kaku / pi * 180;
  label5.Caption := floattostr(kaku);    // -127度
  label6.Caption := floattostr(VarComplexAbs(b));     // 1.0

// ------------------------------------

> Realが0なら、Imaginaryがどんな値をとっても・・・ですよね。

すみません。Realが0でも意味がありました。
しかも、長さは1.0になりました。


[9132] そういうことか。返信 削除
2015/8/25 (火) 23:08:18 taki
  rad := (127 / 180) * pi;

  a.Real := 0.0;            // 0.0
  a.Imaginary := rad;       // 127

  b := VarComplexExp(a);    // b = e^a

  kaku := VarComplexAngle(b);   // 偏角は?
  kaku := kaku / pi * 180;
  label3.Caption := floattostr(kaku);    // 127度
  label4.Caption := floattostr(VarComplexAbs(b));    // 1.0

// 改めて確認すると
  label5.Caption := floattostr(b.Real);          // -0.601815..
  label6.Caption := floattostr(b.Imaginary);     //  0.798635..


[9133] Re:そういうことか。返信 削除
2015/8/26 (水) 19:02:47 Mr.XRAY
▼ takiさん

着々と進んでいるよですね.
なんにもお役に立てなくてスミマセン.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82