「旧課程(-2012年度)高等学校数学B/数値計算とコンピューター」の版間の差分
削除された内容 追加された内容
→2分法: 【バグ・フィックス】Python版のループの終了条件に誤りがあり、機械イプシロンまで回っていた。結果的に hat could hardly be true (ありえへん)に必ず到達していた。 タグ: 2017年版ソースエディター |
→2分法: ラムダ式と範囲をパラメーター化。assertでleftが異常なのかrightが異常なのかの検査を分離。イプシロン判定を絶対値に変更。実行結果を追加。 タグ: 2017年版ソースエディター |
||
80 行
この方法は元々の範囲[a,b]の中点を取り、解が中点から見てどちらにあるかを判断し、範囲を狭めていく方法である。
;[[Python]]による[https://paiza.io/projects/mslsT2vksLfwnt8HqWmn-A?language=python3 コード例]:<syntaxhighlight lang="python">
def bisection(func, left, right):▼
<syntaxhighlight lang="python">▼
▲def bisection():
assert (type(right) == float),"The right side is not a real number."
▲ and type(right) == float),"That is not real numbers"
mid = (left +right)/2
while not (
mid = (right + left)/2
if (func(mid) < 0):
104 ⟶ 96行目:
return mid
print
print(bisection(lambda x: x*x-1, 0.0, 3.0))
</syntaxhighlight>
このコードはf(x)=x-1、または、f(x)=<math>x^2-1</math>のときに試された。結果はどちらもx=1.0となり、正しい値を返している。▼
0.9999999999417923
1.0000000000291038
[[Scheme]]によるコード例▼
</syntaxhighlight
▲:このコードは
:
▲;[[Scheme]]によるコード例:<syntaxhighlight lang="Scheme">
(define (bisection f a b) ;手順1。
(let ((e (expt 10 -10))
131 ⟶ 122行目:
;;1.0000000000291038
</syntaxhighlight>
:このコードも
==== 台形公式====
|