跳轉到內容

BASIC 程式設計/規範 BASIC/最小 BASIC

來自華夏公益教科書

示例程式

[編輯 | 編輯原始碼]

最小 BASIC 的示例程式將出現在這裡。

數值積分

[編輯 | 編輯原始碼]

存在兩種情況,需要用數值方法計算定積分的值。其中一個是計算由一組實驗資料定義的曲線下的面積,另一個是計算已知數學函式的定積分,但沒有已知的積分。前者通常是科學和工程實驗工作中的響應函式的情況,而後者通常是物理、數學和工程實際研究的情況。

獨立於此,用於積分目的的數值方法的開發(屬於應用數學部門的領域)是基於它所產生的簡單想法,即如果 的實值(復值情況可以透過將其分離為實部和虛部來類似地處理)連續函式,定義在區間 中,它的定積分,

,

可以近似地計算為在區間 中的某些給定點上計算的乘積 的有限和。

在實驗資料的情況下,測量函式值的點集通常不是規律分佈的(即,點不是等間隔的),因此必須以以下形式計算定積分的值

,

可以近似地計算為

,

或者

.

在第一種情況下,對於單調遞增(遞減)函式,積分值被低估(高估),因為在每次評估中取的 在每個子區間內總是最低(最高),因此構成了積分值的絕對下界(上界),而在第二種情況下,對於單調遞減(遞增)函式,積分值被高估(低估),因為在每次評估中取的 在每個子區間內總是最高(最低),因此構成了積分值的絕對上界(下界)。

根據微積分中的中值定理,定積分的值也可以計算為

,

對於 中的某個值 ,其中 代表 中的平均值,因此,將一組實驗資料的定積分計算為

,

,

.

由於一些我們將在後面看到的理由,這等效於假設在不同點之間有一個分段線性插值函式,並且如此計算出的積分值對於線性函式是精確的(即,斜率以恆定速率變化的函式),儘管對於斜率以非恆定速率增長的函式(即,它的二階導數在所考慮的區間內嚴格為正),它被低估了,並且對於斜率以非恆定速率減小的函式(即,它的二階導數在所考慮的區間內嚴格為負),它被高估了。如此計算出的值構成比之前提出的上下界更好的近似值,並且在函式的二階導數(可以透過二階差分或中心差分從實驗資料中計算得到)在子區間之間改變符號的情況下,由於近似平均值的誤差抵消,該值預計接近實際值。

對於數學函式,我們擁有更多關於函式的資訊,因為不僅可以計算函式在任何給定點的值,還可以計算一階、二階和更高階導數,且具有任意精度。

讓我們詳細闡述一些數學結果,從簡單到更復雜的方法。

數值方法開發的主要主題,以及穩定性研究(即,如果一個方法收斂),是方法的收斂速度,它研究需要多少次評估以及近似誤差(對於非迭代方法),或者需要多少次迭代以及誤差在每次迭代中如何最小化(對於迭代方法)。

在穩定性研究中,正如我們之前看到的,函式在區間內定義的定積分的值,

,

可以近似地計算為在區間 中的某些給定點上計算的乘積 的有限和。

在極限 中,有限和趨於無窮積分,因此收斂性得到保證。

在收斂速度研究中,我們感興趣的是提高近似值的精度,同時保持子區間的數量,並且計算複雜度的增加很小。

通常使用的方法是在每個子區間內使用函式 的值進行多項式近似,使用子區間內幾個點的函式值提供的資訊。

讓我們考慮等間距點的例子(儘管這個限制很容易解除)

根據定義,

,

其中 表示子區間, 是每個子區間 中的任意數,其中 ,以及 ,並且 ,其中 ,以及 .

微積分中值定理告訴我們,如果

如果 上的定積分,則在 中存在一個值 ,使得

.

此外,根據定義,如果

上的定積分,那麼它也可以理解為由以下各個部分的貢獻組成:

其中 是任意值。

現在,對每個部分應用均值定理,得到結果

,

這個結果是精確的。

在每個子區間大小相等的情況下,即 ,則表示式簡化為

.

這樣,求初始定積分就簡化為求平均值

.

在第一次近似中,只有一個點,

,

其中 在每個子區間中的中間值,從而得到

.

在第二種近似中,只有兩個點,

,

其中 是每個子區間的開頭和結尾處的 值,這會導致

.

在第三種近似中,只有三個點,

,

其中 分別是每個子區間的開始、中間和結束處的 的值,這將導致

.

在第四個近似中,雖然仍然使用函式 在每個子區間的開始、中間和結束處進行評估,但可以使用以下結果:如果 是對 的估計,那麼它們的算術平均數 也是另一個估計,至少具有相同的精度,甚至可能更好。

因此,將第一個和第二個近似結果加起來,然後除以 2,

,

這導致了以下結果

.

將第一個和第三個近似結果加起來,然後除以 2,

,

這導致了以下結果

.

在實踐中,如果只在一個區間內進行三次評估,就不能做得更好,但即使在一個區間內,獲得的結果也足夠簡單和準確。

讓我們透過一個例子來說明這種情況。

假設我們想要計算函式 在區間 的定積分,我們知道它的精確值是 .

為了保持問題的簡單性,我們只用一個區間進行計算,即 .

因此,我們有

第一次近似

這等於相對誤差為

.

第二次近似

這等於相對誤差為

.

第三次近似

這等於相對誤差為

.

第四次近似,第一項和第二項(線性展開)

這等於相對誤差為

.

第四次近似,第一項和第三項(二次展開)

這等於相對誤差為

.

如果需要更高的精度,可以類似地引入 附近的展開式中的高階項,或者在之前考慮的其中一種方法中將積分步長減半。

讓我們考慮在展開式中考慮高階項的情況,即:

,

這導致了以下結果

.

讓我們透過一個例子來說明這種情況。

假設我們想要計算函式 在區間 的定積分,我們知道它的精確值是 .

為了簡化問題,我們用兩個區間進行計算,即 , , , 以及 .

應用二階展開

,

得到

,

這相當於相對誤差為

.

應用四階展開

,

得到

.

我們從差分學知道,任何函式都可以表示為多項式展開

在正向差分的情況下,或者

在反向差分的情況下,或者

在中心差分的情況下。

在第一近似中,

在向前差分的情況下,

在後向差分的情況下,

在中心差分的情況下。

因此,在用單個點對積分進行估算的情況下,如果函式在估算點的斜率值是正的,則使用前向(後向)差分,積分值總是被低估(高估);如果函式在估算點的斜率值是負的,則使用前向(後向)差分,積分值總是被低估(高估)。估算誤差與函式在估算點的斜率值成正比,並與積分步長的平方的一半成正比。在使用中心差分對積分進行估算的情況下,對於線性函式,積分值是精確的。

在第二階近似中,

在向前差分的情況下,