スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Ruby][アルゴリズム入門]数値積分

第二章「数値計算」 目次

総合目次

2-1 乱数
2-2 数値積分
2-3 テイラー展開
2-4 非線形方程式の解法
2-5 補間
2-6 多桁計算
2-7 長いπ
2-8 連立方程式の解法
2-9 線形計画法
2-10 最小2乗法

台形則による定積分

関数f(x)の定積分∫f(x)dxを台形則により求める。

# encoding: cp932

# 被積分関数
def func (x)
  return Math.sqrt(4- x * x)
end

print "積分区間 A?"
a = gets.chomp.to_i
print "積分区間 B?"
b = gets.chomp.to_i

N = 50.0
H = (b - a) / N
x = a
s = 0
1.upto(N - 1) do |i|
  x += H
  s += func(x)
end

sum = H * ((func(a) + func(b)) / 2 + s)
puts "  /#{b}"
puts "  |  sqrt(4-x^2) = #{sum}"
puts "  /#{a}"


シンプソン則による定積分

関数f(x)の定積分∫f(x)dxをシンプソン則により求める。

# encoding: cp932

# 被積分関数
def func (x)
  return Math.sqrt(4- x * x)
end

print "積分区間 A?"
a = gets.chomp.to_i
print "積分区間 B?"
b = gets.chomp.to_i

N = 50.0
H = (b - a) /(2 * N)
x = a
o = 0
e = 0
1.upto((N - 1) * 2) do |i|
  x += H
  if i % 2 == 0
    o += func(x)
  else
    e += func(x)
  end
end

sum = H * (func(a) + func(b) + 4 *(o + func(b - H)) + 2 * e) / 3
puts "  /#{b}"
puts "  |  sqrt(4-x^2) = #{sum}"
puts "  /#{a}"


テーマ : プログラミング - ジャンル : コンピュータ

コメント
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。