tft每日頭條

 > 圖文

 > 線性遞推公式解法

線性遞推公式解法

圖文 更新时间:2024-07-26 08:06:07

線性遞推公式解法?牛頓 如上一節讨論的那樣,在日常生活和生産實踐中,許多求“最好”的問題往往可以歸結為求“最大”的問題,而大多數求“最大”的問題都可以借助“遞推”的計算方法也就是說,大多數求“最大”的問題都可以借助“模式”化的計算方法實踐證明,以牛頓( 1642~1727)命名的計算方法,以及在這個方法基礎上衍生出來的方法,是最為簡捷、最為實用的方法我們來分析這種方法,從中體會“遞推”的功效,下面我們就來說一說關于線性遞推公式解法?我們一起去了解并探讨一下這個問題吧!

線性遞推公式解法(具有遞推關系的運算---牛頓法)1

線性遞推公式解法

牛頓

如上一節讨論的那樣,在日常生活和生産實踐中,許多求“最好”的問題往往可以歸結為求“最大”的問題,而大多數求“最大”的問題都可以借助“遞推”的計算方法。也就是說,大多數求“最大”的問題都可以借助“模式”化的計算方法。實踐證明,以牛頓( 1642~1727)命名的計算方法,以及在這個方法基礎上衍生出來的方法,是最為簡捷、最為實用的方法。我們來分析這種方法,從中體會“遞推”的功效。

圖(1) 牛頓法求方程解示意圖

我們先讨論方程f(x)=0求解的問題。如圖(1) 所示,牛頓法在本質上是一種利用切線的方法,我們在《微積分的産生》中曾經讨論過,函數在某一點的切線斜率可以用導數表示,因此,牛頓法隻實用于可以求導的函數。下面我們來分析牛頓法的核心思想以及建立在牛頓法上的計算邏輯。

根據導數的定義我們知道,導數是平均變化率的極限,如果用f’(x)表示函數f(x)的導數,那麼函數在xo處的導數可以表示為:

f’(x0)=limx→x0[(f(x)-f(x0))/(x-x0)]

如果f(x) =0,則通過上式可以近似得到:

f(x0) f’(x0)[x-x0]=0

由上式又可以得到方程的解為:

x=x0-f(x0)/ f’(x0) (1)

這就是牛頓法的基本算式。因為等号的右邊都是基于給定的數,是可以具體計算出數值的,因此可以用這個具體計算出的數值作為下一步計算的點,構建下面的計算邏輯:

輸入f(x),a,n

1.計算f(a)

2.計算f’(a)

3.計算c=a-f(a)/ f’(a)

4.如果|c-a|≤10-n,到指令7。否則

5.令a=c

6.回到指令1

7.令x*=c。停止

輸出x*,f(x*)

其中,輸人中的a是一個最初給定的數,通常稱其為初始值,或者初值。可以看到,上述計算邏輯的核心就在于不斷地更新初值。還可以看到,這個計算邏輯是非常美妙的,把一個複雜的問題抽象得非常簡捷,耐人尋味,特别是這個算法收斂的速度非常快,用牛頓法再次計算方程x2 x-1=0 ,用x(n)表示第n次的計算結果,可以得到:

x(0)=1

x(1)=0. 61904761904763

x(2) =0. 61803444782168

x(3)=0. 61803398874999

x(4) =0. 61803998874989

x(5)=0. 61803998874989

可以看到,如果初值為1,第二次計算就到達了0. 618,這比用二分法速度要快得多。

現在,我們讨論求最大值的問題。關于最大值問題,内容是豐富多彩的,比如,我們研究炮彈的運行軌迹,那麼,根據研究的目的不同,最大值的含義也可以不同:最大值可以是炮彈最高的值,也可以是炮彈最遠的值,因為這些值都與炮彈發射後的時間t有關,所以研究的基礎是時間的函數f(t)。在通常情況下,可以構建時間t的參數方程:橫坐标為x(t),縱坐标為y(t);如果注意到炮彈的運行軌迹又與發射的角度有關,那麼,通過最大值可以研究炮彈以多大的角度可能發射的最遠,這時研究的基礎将是一個二元函數f(t,s),其中s為發射角度。在這樣的問題中,稱為達到研究目标而設定的函數為目标函數,可以利用牛頓法來求目标函數的最大值。

圖(2) 牛頓法求最大值示意圖

如圖(2)所示,一個連續函數如果存在最大值,那麼,這個函數在最大值點的切線必然與橫坐标平行,也就是說,這個函數在這一點的導數為0,這啟發我們可以利用牛頓法來求函數的最大值。一般情況下,函數的導數也是一個函數,我們稱其為一階導函數。如果用f’(x)表示目标函數f (x)的一階導數,則求最大值點等價于求方程

f’(x)=0

的解。回憶關于牛頓法的讨論,現在,在計算的過程中我們需要利用一階導函數的導數,稱其為二階導函數,表示為f’’(x),那麼參照(1)式可以得到求最大值的基礎算式:

x=x0-f’(x0)/ f’’(x0) (2)

類似地,通過基本算式(2)可以構建求最大值的計算邏輯,我們就不詳細讨論了,有興趣的讀者可以發現,隻需要對方程求解的計算邏輯作很小的修改就可以得到求最大值的計算邏輯。

下面,我們嘗試地讨論求二元函數最大值的計算邏輯,比如我們曾經讨論過的,炮彈的軌迹就可以是時間和角度的二元函數。求多元函數最大值的問題是非常困難的,也是現代數學研究中的熱門話題,人們創造了許多适于計算機的求最大值的計算方法。受輾轉數學歸納法論證模式的啟發,是否可以在二元函數的兩個變量之間構建一個輾轉交替的計算邏輯呢?

我們分析如下。

用f(x,y)表示一個二元函數,我們知道,對于任意固定x=a,函數f(a,y)就是變量y的一元函數;同樣,對于任意固定y=b,f(x,b)就是變量x的一元函數,因為已經論證了,通過牛頓法可以得到一元函數的最大值,為了讨論問題的方便,稱這種方法為NT算法,這樣,我們就可以構建一個利用NT算法的輾轉交替的計算邏輯:

輸入f(x,y),a,b,n

1.令m=0

2.令x(m)=a,y(m)=b

3.利用NT算法計算f(x(m),y),得到y0

4.利用NT算法計算f(x,y0),得到x0

5.如果|x0-xm| |y0-y(m)|≤10-n,到指令9。否則

6.令m=m 1

7.令x(m)=x0,y(m)=y0

8.回到指令3

9.停止

輸出x0,y0,f(x0,y0),m。

通過上面的輾轉交替的計算邏輯,我們将得到一個由二維向量構成的數列:

x(1),x(2),…

y(1),y(2),…

現在的問題是,這樣得到的二維向量的點列能收斂嗎?也就是說,這樣的輾轉運算最終必然會得到所需要的結果嗎?答案是肯定的,隻要函數f(x,y)滿足·些比較弱的條件,那麼上述點列必然收斂,當然,這個證明是相當繁瑣的。通過這個例子也可以看到,借助遞推關系所構建的汁算邏輯不僅可以作用于一個變量,也可以作用于幾個變量之間。

我們通過一些具體問題介紹了計算邏輯。我不知道在其他地方是否也提到過計算邏輯,因為在通常情況下,人們稱讨論計算原理的學科為計算方法,在這裡之所以稱其為計算邏輯,是因為我想強調的是,如果把計算方法中的核心思想歸納出來,是可以形成思維模式的,姑且稱其為計算邏輯。可以看到這個思維模式的基礎是:所涉及的計算方法都具有遞推性,就

這一點而言,計算邏輯在本質上與我們曾經分析過的三段論是一緻的,同時,通過上面的讨論也可以看到,計算邏輯的推理也是非常美妙的,是非常直觀的,其推理過程有時也是非常困難的;特别是,計算邏輯對書寫語句的前後順序要求非常嚴格,必須對邏輯過程有了整體構想之後才可以動筆書寫,而這一點對于邏輯訓練是非常重要的。通過計算邏輯得到的結果是必然的,因此計算邏輯屬于演繹推理的範疇。因此我想,在我們的數學教學中,特别是在高中數學的教學中,是否也應當讓學生們知道這種建立在計算基礎上的邏輯推理模式,這不僅對于學生将來使用、研究計算機很重要,同時,這将是一種很好的邏輯訓練,很可能這是一種面向未來的邏輯訓練,就創新思維而言,這種邏輯訓練的功能要遠遠超過平面幾何,并且,這種邏輯訓練要比平面幾何實用得多。

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved