前提・実現したいこと
pythonを使って複素数計算をしようと考えています.しかし realを使って実部を取り出そうとしても,できない場合が発生したため質問しました.
使用言語はpythonでjupyterにコードを書いています.
発生している問題・エラーメッセージ
入力 import numpy as np import matplotlib.pyplot as plt x = np.arange(10**12, 10**12+10, 1) y = 10**12/(10**20-x**2+x*1j) y.real 出力 array([(1.0204473589108343e-08-1.0413128123080971e-16j), (1.0204473797370911e-08-1.0413128548133364e-16j), (1.0204474005633484e-08-1.0413128973185778e-16j), (1.0204474213896069e-08-1.0413129398238222e-16j), (1.020447442215866e-08-1.0413129823290688e-16j), (1.0204474630421262e-08-1.0413130248343182e-16j), (1.0204474838683871e-08-1.0413130673395702e-16j), (1.020447504694649e-08-1.0413131098448249e-16j), (1.0204475255209114e-08-1.041313152350082e-16j), (1.020447546347175e-08-1.0413131948553418e-16j)], dtype=object) 実部を取り出しているはずなのに,なぜjが含まれてしまっているのかわかりません. 質問のためにあえて簡単な値を入れています. *******以下「試したこと」の項目と重複しています.本来であればそちらに記入するべきですが,コードがうまくプレビューで反映されなかったため,こちらに記入しました. 式はいじらずに数値のみを変えて試してみたところ一応,実部を取り出すことはできました. 入力 import numpy as np import matplotlib.pyplot as plt x = np.arange(10**9, 10**9+10, 1) y = 10**12/(10**18-x**2+x*1j) y.real 出力 array([ 0. , -399.99999972, -235.29411738, -162.16216191, -123.07692282, -99.00990074, -82.75862044, -71.0659896 , -62.25680909, -55.38461513])
該当のソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3x = np.arange(10**12, 10**12+10, 1) 4y = 10**12/(10**20-x**2+x*1j) 5y.real
試したこと
式はいじらずに数値のみを変えて試してみたところ実部を取り出すことができました.
しかし今回,xに10の12乗のオーダーの値を代入したいので,良い解決方法などありましたら,ご教授いただきたいです.
補足情報(FW/ツールのバージョンなど)
python3 jupyter
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/07 06:42