ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。 繰り返しの練習: ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
繰り返し動作とwhile文 ... 動作1 ... } while( 条件) { ~ である間繰り 動作1。 繰り返し終わり。 動作1。 繰り返し終わり。 「~」のところには条件(条件の書き方はifと同じ) while( 条件) { ... 動作1 ... }
繰り返しの例題(以前紹介) import java.util.*; タイルの個数n を入力する。 箱の一辺l を0 とおく。 public class R1Sample5 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("value N = "); int n = sc.nextInt(); int l = 0; while(l*l < n) { l = l + 1; } System.out.println("# of balls: " + n + " edge length: " + l); } タイルの個数n を入力する。 箱の一辺l を0 とおく。 l*l < n が成り立つ間 繰り返し: l + 1 をあらたにl とおく。 以上を繰り返す。 一辺の長さl を出力する。
定積分 x=aからx=bまでの、関数f(x)の積分値を求める。 f(x)はとりあえずよく知っている y = x × x でやってみよう。 区間aからbを 一定幅や一定個数の矩形で刻む
アルゴリズムを擬似コード表現 → プログラムに書く アルゴリズムを擬似コード表現 → プログラムに書く • dx ← (b−a)/n 。 //刻み幅dx s ← 0。 //面積の総和を累積する変数s x ← a。 x < b が成り立つ間繰り返し: y ← x× x 。 //関数f(x) の計算 s ← s + y×dx //矩形ひとつ分の面積 x ← x + dx。 //次の矩形へ 繰り返しおわり。 s を出力する。
x = k x=k+dx dx 刻み幅 k2
動いているところはこんな感じ % java R2Sample2 value a = 1 ←積分区間の始点入力 value b = 10 ←積分区間の終点入力 value n = 100 ←近似する矩形の数入力 integral: 337.5571499999994 ←y=x*xの区間1から10までの定積分値