Q&A
解決済
2回答
4756閲覧
総合スコア12
Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。
プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。
Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
0グッド
0クリップ
投稿2020/07/02 06:37
0
pythonで複素数の積算をすると a=2+1j abs(a)**2=5.000000000000001 のようになり、完全な5にならないのですが、なぜでしょうか。 おそらく誤差に起因すると思うのですが、具体的どこの誤差に起因しているのでしょうか。
また、これを解決するにはどういう計算の書き方をすれば良いでしょうか。
2点お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答2件
ベストアンサー
abs(a)は数学的には√5ですがこれは有限桁の小数で表せません。 プログラム的には有限桁の小数で持とうとするのでこの時点で誤差があります。
abs(a)
絶対値は実部の2乗と虚部の2乗を足して1/2乗したものですので 絶対値の2乗は実部の2乗と虚部の2乗を足したものです。
投稿2020/07/02 06:42
総合スコア13553
回答へのコメント
2020/07/03 07:08
absだと途中で平方根計算が入って無駄があります。 絶対値の二乗は実部の二乗+虚部の二乗なので、自分で書いた方が早いと思います。
python1a=2+1j 2a_abs_pow = a.real**2+a.imag**2 3print('{:.20f}'.format(a_abs_pow))
python
1a=2+1j 2a_abs_pow = a.real**2+a.imag**2 3print('{:.20f}'.format(a_abs_pow))
text15.00000000000000000000
text
15.00000000000000000000
とりあえず表示上はうまく行っているようです。
投稿2020/07/02 14:51
総合スコア698
2020/07/03 07:02
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
複素数の絶対値の二乗について
2020/07/03 07:08