Matlabでの複素数の実部・虚部成分の成分表示方法についての質問

このQ&Aのポイント
  • Matlabで複素数の実部・虚部成分を表示する方法についての質問です。
  • 具体的には、複素数fに任意の変数を使う場合、正しい結果を得る方法を知りたいです。
  • 実部成分と虚部成分を正しく表示する方法についてのアドバイスをお願いします。
回答を見る
  • ベストアンサー

Matlabによる複素数・・・

Matlabでの複素数の実部・虚部成分の成分表示方法についての質問です。 例えば、 f=3+3*i fr=real(f) fi=imag(f) とするとそれぞれ実部成分と虚部成分が求められますが、複素数fが以下の様に任意の変数(a)を使うとうまくいきません・・・ syms a; f=a^2+i fr=real(f) fi=imag(f) 結果:fr =1/2*a^2+1/2*conj(a)^2 fi =-1/2*i*(a^2+2*i-conj(a)^2) うまく"fr=a^2,fi=1"と結果を表示するためにはどうしたらいいのでしょうか・・・ 分かる方、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

syms a real; で出来るはずです。

georgia
質問者

お礼

ありがとうございました。Matlab初心者ですが、頑張ります・・・

その他の回答 (1)

回答No.1

>うまく"fr=a^2,fi=1"と結果を表示するためにはどうしたらいいのでしょうか・・・ a は 複素数 ですので、 >結果:fr =1/2*a^2+1/2*conj(a)^2 >fi =-1/2*i*(a^2+2*i-conj(a)^2) が正しいです。実数ならば fr=a^2,fi=1 となるでしょうが。

georgia
質問者

補足

aを実数として演算して fr=a^2,fi=1 と結果を導くにはどうすればいいのですか??

関連するQ&A

  • 平面ベクトルと複素数の関係について

    複素数の実部と虚部を平面上の(x,y)と対応づける事をよくしますよね? これには、どのような利点があるのでしょうか? ※複数あると思うので、具体例を列挙していただけると助かります。 また、ベクトルの成分同士(平面ベクトルで言えばxとy)は 次元が違いますからxとyが干渉し合う事はありません。 (yはどこまでいってもどこまで) でも複素数の実部と虚部には i*i = -1 という実部と虚部を繋ぐ関係式があるので 実部と虚部は完全に独立した存在ではないと思うのです。 (もちろん積さえ考えなければ、実部と虚部は独立しているというのは理解できます。。) よって、ベクトルと複素数は似て非なるものではないかとおもうのですが。。 それに関連して、あるサイト上で以下のような記述を発見しました。 「 まずはa→=(1,3),b→=(2,2)のように,ベクトルを成分で表します。これを複素数だと思って, a=1+3i,b=2+2i と読み替えてください。この2つの複素数の掛け算は,   (1+3i)(2+2i)=2+2i+6i-6=-4+8i となります。これを再びベクトルとして読み替えると(-4,8)となりますが・・・ 実はこれがベクトルの積の計算方法なのです。   a→×b→=(1,3)×(2,2)=(-4,8) というのが正解です。 」 たとえば、i*i= -2 という風に定義していたとしたらこの計算結果は変わってきますよね? なのでこのように複素数とベクトルを同一視するのはおかしいと思うのですが。。 ベクトルと複素数に関して、理解を深めたいので解説してください。 お願いします!

  • FORTRAN 複素数 (実部を取り出す方法)

    fortran77で複素数の実部を取り出したいのですが、 関数が存在するかわかりません。どなたか、ご存知の方、 教えてください。虚部は出せました。 FORTRAN77(SALFORD FTN77)を使っています。 確か、fortran90なら real(○+□i)だったと思います。

  • C言語:2つの複素数(分数)の四則演算

    下記のプログラムを組んでみて、発展として分数の形で複素数の四則演算のプログラムを作りたいのですが、どうにもややこしく、困っています。 よろしければ御指導よろしくお願いします。 /* 複素数を表す構造体 2つの複素数の四則演算 */ #include <stdio.h> #include <stdlib.h> typedef struct { double real; /* 実数部分 */ double imag; /* 虚数部分 */ }COMPLEX; /* 二つの複素数の和を返す */ COMPLEX comp_add(COMPLEX x, COMPLEX y) { COMPLEX tmp; tmp.real = x.real + y.real; /* 実数部分の和 */ tmp.imag = x.imag + y.imag; /* 虚数部分の和 */ return (tmp); } /* 二つの複素数の差を返す */ COMPLEX comp_sub(COMPLEX x, COMPLEX y) { COMPLEX tmp; tmp.real = x.real - y.real; /* 実数部分の差 */ tmp.imag = x.imag - y.imag; /* 虚数部分の差 */ return (tmp); } /* 二つの複素数の積を返す */ COMPLEX comp_mul(COMPLEX x, COMPLEX y) { COMPLEX tmp; tmp.real = (x.real * y.real) - (x.imag * y.imag); tmp.imag = (x.real * y.imag) + (y.real * x.imag); return (tmp); } /* 二つの複素数の商を返す */ COMPLEX comp_div(COMPLEX x, COMPLEX y) { COMPLEX tmp; tmp.real =(x.real*y.real+x.imag*y.imag)/(y.real*y.real+y.imag*y.imag); tmp.imag = (x.imag*y.real-x.real*y.imag)/(y.real*y.real+y.imag*y.imag); return (tmp); } int main( int argc, char **argv ) { COMPLEX a, b, c; a.real = strtod( argv[1], NULL ); a.imag = strtod( argv[2], NULL ); b.real = strtod( argv[3], NULL ); b.imag = strtod( argv[4], NULL ); c = comp_add(a, b); /* 複素数の和を c に代入 */ printf( "(%f+j%f)*(%f+j%f)=(%3.1lf+j%3.1lf)\n", a.real,a.imag,b.real,b.imag,c.real,c.imag ); c = comp_sub(a, b); /* 複素数の差を c に代入 */ printf( "(%f+j%f)*(%f+j%f)=(%3.1lf+j%3.1lf)\n", a.real,a.imag,b.real,b.imag,c.real,c.imag ); c = comp_mul(a, b); /* 複素数の積を c に代入 */ printf( "(%f+j%f)+(%f+j%f)=(%3.1lf+j%3.1lf)\n", a.real,a.imag,b.real,b.imag,c.real,c.imag ); c = comp_div(a, b); /* 複素数の商を c に代入 */ printf( "(%f+j%f)+(%f+j%f)=(%3.1lf+j%3.1lf)\n", a.real,a.imag,b.real,b.imag,c.real,c.imag ); return( 0 ); }

  • 実部と虚部が共に正有理数であるような複素数の全体

    実部と虚部が共に正有理数であるような複素数の全体をA、 実部と虚部が共に自然数となる複素数同士の比として表せる複素数の全体をBとおく時、 A=Bとなるのでしょうか?

  • 複素数と実数が混在するように見える式について

    時系列解析で、自己相関係数のフーリエ変換がパワースペクトルになるというウィナーキンチンの関係というものがあります。その式では複素数が含まれているので、実数を入力として複素数が含まれている式で計算された出力結果は普通は複素数ということになります。しかし、自己相関係数は実数の系列で、パワースペクトルも実数になると思います(実部と虚部の2乗和なので)。実数に複素数を絡ませて変換して出てきたものが実数になるということになってしまいます。ここが理解できないのですが、どのように考えていくのでしょうか。絶対に虚部がゼロになるから、ということなのでしょうか。 一般にFFTによるスペクトル変換では実数列は複素数の実部にあてて変換する(例えば虚部はゼロにしておくとか)ので複素数から複素数を入出力するということで理解できます。 実際にプログラムでの処理を考えているので概念的な説明だけでは実装することできません。 なお、私は常に標準的なFFTでフーリエ変換しているので複素数での入出力ということなので実数となる系列では先に進めないという感じなのですが。もし出力が実数ということになったとき実部がそれ、虚部がそれ、実部と虚部の2乗和がそれ、というのならわかるのですが。 よろしくお願いします。

  • 複素数の問題についての質問です

    複素数の問題についての質問です 次の問題の実部、虚部を答える問題(1)の確認、修正(2)の 考え方についての回答をお願いします。 (1) log(2i) (2) (1/√2 + i/√2)^15 (1)log(2i) = a + biとする e^(2i) = cos2 + isin2 a = cos2 , b = sin2

  • 複素数の基本事項について2つ質問があります

    【質問1】 Wikipedia の複素数の定義の5行目「実部と虚部はそれぞれ~」で用いられている記号の書き方がわかりません。実部,虚部を"Rz","Iz"のように書いているのですが,書き方がわかりません。印字ではなく,手書きで書く場合はどうするとよいのですか。 http://ja.wikipedia.org/wiki/%E8%A4%87%E7%B4%A0%E6%95%B0#.E5.AE.9A.E7.BE.A9 【質問2】 i^2+1=0,i=sqrt(-1) を満たす i を虚数単位とし,表記することが一般のように思いますが, i^2+1=0 を実係数2次方程式のように解を求めると,i=±sqrt(-1) となるのではないかと思います。 ± のうち,正のものだけを用いることが多いのはなぜですか。

  • 複素数の絶対値

    2005年度の大学の過去問をやっていたらこんな公式が出てきました。 「複素数zの実部をa、虚部をbとすると、zの絶対値は、√(a^2+b^2)」 これはなぜこうなるのでしょうか理由を教えて下さい。 また、私は現在高3ですが教科書を見直してみましたがこの公式は載っていませんでした。 もしかしてこの公式は高校の新課程では外されてしまったのですか? よろしくお願いします。

  • C++標準ライブラリィーのcomplex.hについて

    realとかimagで、各々入力するのではなく 実部と虚部とを一括して代入する書式は無いのでしょうか? p olarを使うと、余計な演算をさせているような感じがします。

  • mupad 複素数の計算

    mupadを使って、1/(1-I*a)の虚部を求めようとして、 Im(%)としましたが、虚部を括りだすことが出来ませんでした。 mupadを使って複素数の分数計算を行うには何かテクニックみたいなものがあるのでしょうか?