• ベストアンサー

perl 実数or複素数のみ出力する方法 and ゼロ割について

この度はよろしくお願いします。 まずperlでこのプログラムを実行させると use Math::Complex; $y = 3 + 4*i; $z = 10 + i; print $y * $z, "\n"; print $y / $z, "\n"; 実数と複素数を含んだ解が出てきます。 質問は解の中の実数、もしくは複素数のみを出力したい場合どのような事をすれば良いのでしょうか? それと、『ゼロ割』と言うものなんですが これはある数をゼロで割ると無限大に飛んでいくと言う事でよろしいのでしょうか?

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

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

print Re($z), "\n"; print Im($z), "\n"; 『ゼロ割』の解釈はそれでよいと思います。ゼロ除算で検索してください。 Perlの質問は、[技術者向] コンピューター>プログラミング>Perl の方がよいでしょう。

riba777
質問者

お礼

返信が遅れてしまい申し訳ありません。 言語には多くの用語があるんだなと実感しました。 ありがとうございました。

関連するQ&A

  • 絶対値 実数 複素数

    絶対値について教えて下さい。 実数における絶対値の定義は、 x≧0ならば、|x|=x x<0ならば、|x|=-x と定義されます。 実数における絶対値|x|が一価関数であり、逆関数は 二価関数であることは理解できます。 複素数における絶対値の定義は、 z=a+ibを考えると、 |z|=√zz^-=√a^2+b^2 と定義されます。 ここで、|z|は一価関数だと思うのですが、逆関数はどうなのでしょうか? |z|=√a^2+b^2を満たすa,bは無限に存在するから無限価関数となるのでしょうか? 以上、ご回答よろしくお願い致します。

  • 実数でもできる複素数積分

    (1+sinθ)/(5+4cosθ)を0から2πまで積分しなさいという問題なんですが、実数で積分するのは難しいのでこれを複素数を使って積分します。 留点がz=-1/2となってRes(-1/2)を求めてそれに2πiをかけて積分をしたんですが答えがπ(4/3-i)になりました。答えにiが出てきてしまいました。これは明らかに間違ってますよね?(1+sinθ)/(5+4cosθ)の積分は実数で表されるはずなんですが、どうしても計算がうまくいきません。 よろしくお願いいたします。

  • 4乗して実数になる複素数の問題(数学Ⅱ)

    aを実数として複素数z=a+iを考える。z^4が実数になるaの値とそのときのz^4の値は【a=0のとき1,a=-1,1のとき-4】である。 この問題でaの値は出せたのですが、何故aが1と-1のとき-4が出るのかが分かりません。 ちなみにこの問題の答えは【】の中の部分です。 回答宜しくお願いします

  • perl ハノイの塔の解に順番付けする方法

    プログラミング初心者です。 サブルーチンを用いて、ハノイの塔の解を求める課題で詰まっています。 解自体は求めることができたのですが、それぞれの解の順番(輪を移動させる順番)を一緒に表示させよという指示が出ており、この方法がわかりません。 表示順に上から番号を振るという考え方でよろしいのでしょうか。 まず考え方自体が違うようであれば、そこから指摘して頂きたいと思います。 よろしくお願いします。 ちなみに現状ではこのようになっております。 #!/usr/bin/perl sub hanoi { my ($no , $x , $y , $z) = @_; if( $no = $no){ hanoi ($no-1,$x,$z,$y); print "Move", $no ,"from" , "$x" , "to" , "$z" , "\n"; hanoi ($no-1,$y,$x,$z); } } print"入力された枚数のハノイの塔の解(順番付き)\n"; $data=<>*1; hanoi($data , "A" , "B" , "C");

  • <Perl>参照配列の出力に失敗する。

    <Perl>参照配列の出力に失敗する。 お世話になります。 配列の出力部で以下のエラーが出力されます。 Use of uninitialized value in print at test2.pl line 12. -----コーディングは以下の通りです。----- #!C:\perl use strict; use warnings; my @l = (); #----------- #GetDataへCSVファイル名と、格納用配列を渡す #----------- my $cnt = &GetData("test.csv", \@l); print "COUNT -> ".$cnt; for(my $i=0; $i < $cnt; $i++){ print $l[$i]; } ################################################################## # 概   要:指定したCSVファイルをオープンしCSVデータを配列に取得する。 # パラメータ:ファイル名, CSVデータ格納用配列 # 戻 り 値:データ取得件数 ################################################################## sub GetData { my ($f, @bf) = @_; my $rcnt = 0; print "FILE NAME -> ".$f."\n"; if ( open(FP, "<${f}") ){ print "FILE OPEN -> success.\n"; @bf = split(/,/, <FP>); close(FP); $rcnt = @bf; print "CSV GET COUNT -> ".$rcnt."\n"; } return $rcnt; } -----実行結果は以下の通りです。----- D:\>perl test.pl FILE NAME -> test.csv FILE OPEN -> success. CSV GET COUNT -> 5 Use of uninitialized value in print at test2.pl line 12. Use of uninitialized value in print at test2.pl line 12. Use of uninitialized value in print at test2.pl line 12. Use of uninitialized value in print at test2.pl line 12. COUNT -> 5 -----CSVファイルの内容は以下の通りです。(ファイル名:test.csv)----- あいうえお,かきくけこ,さしすせそ,たちつてと,なにぬねの 配列の要素数が取れているので、配列内にデータは格納されているとは思っています。 出力方法をどのように正せばよいがご教示お願い致します。

    • ベストアンサー
    • Perl
  • 複素数

    複素数について質問させて頂きます。 参考書には、 「複素数zが実数でない場合つまり、虚部が0でないときzは虚数である」という。 というように記載されていました。 私は複素数は常に虚数だと認識していましたがそうでない場合もあるのでしょうか? 複素数zが実数でない場合と記載されていたので複素数が実数の場合もあるのでは ないかと考えた次第です。 つまり、 z=x+iy (z:複素数、x,y:実数、i:虚数単位) において、y=0の場合でもzを複素数と呼ぶのですか? 上記の場合、zは虚数ではないですが複素数とは言えるのでしょうか? 複素数の定義は、 実数x,yと虚数単位iを用いてz=x+iyの形で表すことのできる数です。 (定義にy≠0は特に記載されていませんでした。) なので、z=x+iyにおいてy=0の場合は複素数とは言わないと考えています。 質問内容を整理しますと、 (1)複素数は常に虚数である (2)z=x+iyにおいて、y=0のときzは複素数ではない   複素数の定義にy≠0は必要なのでしょうか? 以上、ご回答よろしくお願い致します。

  • javaの課題。。

    Java課題です。お願いします。 複素数クラスを作り、二次方程式の虚数解を求めるプログラムを書け。 以下、本プログラムの仕様。 メソッドとして以下の四則演算を定義すること。 Complex plus(Complex c) Complex minus(Complex c) Complex mul(Complex c) Complex div(Complex c) また、複素数の平方根を計算するメソッド Complex sqrt() も定義すること。虚数部が 0 の場合(実数の場合)のみに対応すればよい。 実数の平方根はMath.sqrtを使ってよい。 二次方程式の解を求めるプログラムでは 3 つの係数(実数)を入力 させ、その数値から複素数オブジェクトを作って計算を行うこと。

  • perlの論理演算子の「and」と「&&」の違い

    perlの論理演算子の「and」と「&&」の違いは、 「弱い結合」と「強い結合」とかで説明されている のを見かけますが、これは、 「短絡評価」(左側が偽だと右側が実行されない)と 「短絡評価でない」(左側の真偽に関係なく右側が実行される) のと同じ意味になるのでしょうか。 例えば、 sub x {  print "sub x\n";  return 0; } sub y {  print "sub y\n";  return 1; } の2つのサブルーチンがある場合に、 (1) if(&x==1 and &y==1){    print '真',"\n";   } else {    print '偽',"\n";   } (2) if(&x==1 && &y==1){    print '真',"\n";   } else {    print '偽',"\n";   } を、実行した場合、サブルーチンyは、 (1)では実行されず、(2)では実行される という理解で正しいでしょうか。 (実際にはどちらも実行されていないようなのですが)

    • ベストアンサー
    • Perl
  • PerlからのCSV出力

    Perl初心者です。 PerlでOracleに接続し、結果をCSVを出力したいのですが 下記プログラムだとなにも出力されません。 Oracle10g OS:Linux *** #!/user/bin/perl # # # DBI モジュールの読み込み use DBI; #接続 my $hDb = DBI->connect("dbi:Oracle:dbname", "user/pass") or die "CONNECT ERROR $DBI::errstr"; #SELECT # $hSt = $hDb->prepare("SELECT ID,NAME FROM MASTER"); open(OUT, ">data.dat"); #実行 $nRes = $hSt->execute; #データの取得 while($raRes = $hSt->fetchrow_arrayref) { print OUT join(",", @$raRes), "\n"; } # ファイルクローズ close(OUT); $hSt->finish; $hDb->disconnect;

  • 3次方程式の根の複素数平面上の三角形

    次の問題はどう攻めたらよいのでしょうか。 「3次関数 f(z)=0 を満たす3つの解が複素数平面上で三角形を成すとき、 f'(z)=0 の2つの解を焦点とし、上の三角形の一辺の中点を通る楕円は他の辺の中点も通り、かつ三角形に内接することを示せ。」 3次方程式の解が3実数でないときは1個の実数と2個の共役な複素数なので、複素数平面上で三角形を成すときは実数軸を対称軸する2等辺三角形ということは分かります。また、3次関数のグラフは変曲点が2個所あるから f'(z)=0 の2つの解は実数で、複素数平面の実数軸上にあると思います。しかし、実軸上にある三角形の頂点および底辺の中点と、f'(z)=0 の解との複素数平面上での位置関係が分からないので、その先が進みません。どういうふうに考えを進めたらよいのでしょうか。よろしくお願いします。