質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1139閲覧

オイラー法 値が出力されない if文 数学 微分方程式

Etori

総合スコア3

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/16 09:18

前提・実現したいこと

課題でオイラー法のプログラムを組んでいて、x=0.1,0.2,....1.0の値のみを出力したい。

発生している問題・エラーメッセージ

if文の条件文をx==0.1 or 0.2 or....としたところうまくいかなかったので、いろんな値を入れていくとなぜかx==0.001~0.008まではうまく出力されるがx==0.009以降はエラー等はないが何も出力されない状態になった。

該当のソースコード

python3

1import math 2import numpy as np 3import sys 4sys.setrecursionlimit(10**3) 5def f(y): 6 return y 7 8def t(x): 9 return (math.e)**x 10dx = 0.001 11y = 1.0 12x = 0 13 14with open('euler.txt','w') as u: 15 while x < 1.0: 16 y += f(y)*dx 17 x += dx 18 error = abs(y-t(x)) 19 if x == 0.009: 20 print("xが" "{0:.3f}" "近似値は" "{1:.15f}" "真の値は" "{2:.15f}" "真の値との差は" "{3:.15f}". format(x,y,t(x),error), file=u)

試したこと

if文の条件文をx==0.1 or 0.2 or....としたところうまくいかなかったので、いろんな値を入れていくとなぜかx==0.001~0.008まではうまく出力されるがx==0.009以降はエラー等はないが何も出力されない状態になった。

補足情報(FW/ツールのバージョンなど)

if文の条件文でx==0.1 or 0.2 or....ではなくもっと良い方法などがあれば教えていただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Python に限った話ではないですが、浮動小数点の比較は注意が必要です。

いくつか、参考リンクを記載します。

2つの値が近似しているか判定: math.isclose()

Python3.5で追加された関数なのでそれより前のバージョンでは使えない。
以下のように、第一引数aと第二引数bに指定した値が厳密に等価でなくても近似値であればTrueを返す。

投稿2020/05/16 09:43

編集2020/05/16 09:47
Yasumichi

総合スコア1773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Etori

2020/05/17 10:14

説明ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問