Programming Assignment #7

考慮一個 n 次項的實數多項式 P(x)=cnxn+cn-1xn-1+¼+c2x2+c1x+c0,其中最高項的係數 cn 不能為 0,及 X 軸上的兩個點  (a, 0) (b, 0)a<b。下圖藍色部份為多項 P(x) 在 (a, 0) (b, 0) 之間與 X 軸所圍成的區域,它的面積 At 即是定積分 (definite integral)

此區域的面積可用近似值的方法計算,即將 (a, 0) (b, 0) 之間的線段平均分成 T=2t 個區間,0£t假設 (p1,0), (p2,0), ¼(pT,0) 為每個區間的中點,則此區域面積的近似值為計算下列的 Riemann sum

計算 A0, A1, ¼, At-1, At 直到 |At-At-1|<e, (e 為一個很小的誤差值,假設 e 為 0.000001),則 At 為藍色區域的面積。寫一個 C 語言的程式以執行下列的步驟:

  1. 宣告一個整數 n (0 £ n < 10) 代表多項式 P(x) 的最高項次,和一個 10 個元素的浮點數陣列 coeff 以儲存 P(x) 的係數

  2. 讀入多項式的最高項次 n 的值。

  3. 宣告兩個實數 a 和 b;讀入 a 和 b 的值,a<b 且 0<b-a£5,定義區間 [a, b]。

  4. 讀入 P(x) 的係數 cn, cn-1, ¼, c2x, c1, 和 c0 (或使用亂數產生 -1 和 1 之間的係數)。

  5. 出多項式 P(x), 和區間 (a, b)。

  6. 計算 P(x) 在 (a, 0) (b, 0) 之間與 X 軸所圍成的區域面積;在每一次迴圈結束時,出該次迴圈的區間數、區間大小、和面積的近似值 。

  7. 最後總區間數和面積。

程式執行範例:

Enter the degree of polynomial P(x): 5

Enter two real numbers a and b such that 0<b-a<=5:
-2 2

Polynomial P(x):
0.441 X^5 - 0.0400 X^4 + 0.1370 X^3 - 0.0550 X^2 + 0.5400 X + 0.8950

Interval [a, b]: [-2.0000, 2.0000]

Number of intervals: 1, interval size: 4.000000, area: 3.580000
Number of intervals: 2, interval size: 2.000000, area: 4.472000
Number of intervals: 4, interval size: 1.000000, area: 10.999938
Number of intervals: 8, interval size: 0.500000, area: 12.948621
Number of intervals: 16, interval size: 0.250000, area: 13.469297
Number of intervals: 32, interval size: 0.125000, area: 13.632246
Number of intervals: 64, interval size: 0.062500, area: 13.666489
Number of intervals: 128, interval size: 0.031250, area: 13.675144
Number of intervals: 256, interval size: 0.015625, area: 13.677839
Number of intervals: 512, interval size: 0.007813, area: 13.678373
Number of intervals: 1024, interval size: 0.003906, area: 13.678506
Number of intervals: 2048, interval size: 0.001953, area: 13.678540
Number of intervals: 4096, interval size: 0.000977, area: 13.678548
Number of intervals: 8192, interval size: 0.000488, area: 13.678551
Number of intervals: 16384, interval size: 0.000244, area: 13.678551

The number of intervals: 16384

Area of polynomial P(x) between (-2.0000, 0.0) and (2.0000, 0.0): 13.678551