「旧課程(-2012年度)高等学校数学B/数値計算とコンピューター」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎台形公式: サポートが終了して久しいpython2向けのコードだったので、python3様に書き直した。
タグ: 2017年版ソースエディター
153 行
<!-- 後者のSchemeコードはPython版に準じましたが、解説修正した方が良いですね。 -->
 
;[https://paiza.io/projects/vw83J0TttHB6fdeiEF35dg?language=python3 trapezoid.py]:<syntaxhighlight lang="python"python3>
from math import sqrt,pi
 
def trapezoid_formula():
def func(x):
return sqrt(1-x**2x)
sum = 0.0
a = 0.0
b = 1.0
assert (type (sum) == float and
type (a) == float and
type (b) == float), "not a real number"
N = 20
dx = (b - a) / N
for i in range(N):
#Section of trapezoid ... .
sum += (func(a + dx * i) + func(a + dx * (i + 1)) ) * dx / 2
return sum
 
print (trapezoid_formula())
print (pi/4)
</syntaxhighlight>
 
;実行結果:<syntaxhighlight lang=text>
#ok that work well
;;0.7821162199387454
#the result reads
;;0.7853981633974483
#0.782116219939 for trapezoid_formula()
#0.785398163397 for pi/4
</syntaxhighlight>
実際の<math>\pi</math>の値と近い値が得られていることが分かる。
 
[[Scheme]]によるプログラム例
;[https://paiza.io/projects/YAGiEEO9bJtET0tSvA9_2A?language=scheme trapezoid.scm]:<syntaxhighlight lang="Scheme">
(define (trapezoid_formula f a b)
(let ((n 20))
194 ⟶ 193行目:
(f (+ a (* dx (+ i 1)))))
(/ dx 2)))))))))
;; 0 1)
;;>(print (trapezoid_formula (lambda (x)
;; (sqrt (- 1 (expt x 2))))
0 1) )
 
(print (atan 1.0))
;;;実行例
</syntaxhighlight>
;;> (trapezoid_formula (lambda (x)
;実行結果:<syntaxhighlight lang=text>
;; (sqrt (- 1 (expt x 2))))
0.7821162199387455
;; 0 1)
0.7853981633974483
;;0.7821162199387454
;;> (/ pi 4)
;;0.7853981633974483
</syntaxhighlight>
こちらも実際の<math>\pi</math>の値と近い値が得られていることが分かる。