數值分析思考題 鐘爾傑版 參考解答 第一章

2021-10-22 14:41:28 字數 2467 閱讀 9229

在數學中,演算法通常是按照一定 規則解決某一類問題的明確和有限的步驟。

計算誤差有截斷誤差和捨入誤差。由實際問題建立起來的數學模型,在很多情況下要得到準確解是困難的,通常要用數值方法求出它的近似解。例如常用有限過程逼近無限過程,用能計算的問題代替不能計算的問題。這種數學模型的精確解與由數值方法求出的近似解之間的誤差稱為截斷誤差,由於截斷誤差是數值方法固有的,故又稱為方法誤差。

例如:

用函式f(x)的泰勒(taylor)展開式的部分和sn(x)去近似代替f(x),其餘項rn,就是真值f(x)的截斷誤差:

sin ⁡x

=x−1

3!x3

+cos⁡ξ

5!x5

≈x−1

3!x3

,當 ∣x

∣比較小時 

sinx=x

−3!1

​x3+

5!cosξ​x

5≈x−

3!1​

x3,當

∣x∣比較小時

浮點數由尾數部和階碼部兩部分組成。在機器中表示乙個浮點數時,一是要給出尾數,用定點小數形式表示。尾數部分給出有效數字的位數,因而決定了浮點數的表示精度。二是要給出指數,用整數形式表示,常稱為階碼,階碼指明小數點在資料中的位置,因而決定了浮點數的表示範圍。浮點數也要有符號位。

有效數字位數與計算近似值x的誤差這兩個概念是通過末位數半個單位相聯絡的。由於計算機的機器數只能表示有限位浮點數,對於很多資料只能近似表示,近似採用「四捨五入」的原則進行。有效數字概念正是根據日常生活中的「四捨五入」原則抽象而來的。若近似值 x 的絕對誤差限是某一位上半個單位,該位到 x 的第一位非零數字一共有 n 位,則稱這一近似數具有 n 位有效數字。

秦九韶演算法是中國南宋時期的數學家秦九韶提出的一種多項式簡化演算法,在西方被稱作霍納演算法。

設給定n次多項式:

p (x

)=a0

xn+a

1xn−

1+⋯+

an−1

x+an

,a0≠

0p(x)=a_ x^+a_ x^+\cdots+a_ x+a_, a_ \neq 0

p(x)=a

0​xn

+a1​

xn−1

+⋯+a

n−1​

x+an

​,a0

​​=

0求x⋆

x^x⋆

處的值p(x

⋆)

\mathrm\left(x^\right)

p(x⋆

)採用p(x

)=(⋯

(a0x

+a1)

x+⋯+

an−1

)x+a

n\mathrm(\mathrm)=\left(\cdots\left(a_ x+a_\right) x+\cdots+a_\right) x+a_

p(x)=(

⋯(a0

​x+a

1​)x

+⋯+a

n−1​

)x+a

n​它可表示為:=a_}=b_ x^+a_ \quad i=1,2,3 \ldots n}\right.

=p\left(x^\right)

bn​=p(

x⋆),即為所求,此演算法成為秦九韶演算法。

秦九韶演算法有何優點

該演算法最大的優點在於將求n次多項式的值轉化為求n個一次多項式的值。在人工計算時,利用秦九韶演算法和其中的係數表可以大幅簡化運算;對於電腦程式演算法而言,加法比乘法的計算效率要高很多,因此該演算法仍有極大的意義,用於減少cpu運算時間。

「大數吃小數」現象是數值運算中常見的一種影響計算精度的現象,當以計算機計算乙個實數a與實數b≠0的代數和時,如果|b|相對於|a|小到一定程度,會出現a+b=a的現象,一般稱作數b被數a「吃掉」了。

「大數吃小數」現象乙個典型的例子就是計算n個實數的累加和∑n=

1nan

\sum_^ a_

∑n=1n​

an​,其中a1≫

ai

>0,

i=2,

3…,n

a_ \gg a_>0, i=2,3 \ldots, n

a1​≫ai

​>0,

i=2,

3…,n

,若以正常的順序累加,則自a2a_

a2​之後所有元素均被a1a_

a1​ 「吃掉」,累加結果為∑n=

1nan

=a

1\sum_^ a_=a_

∑n=1n​

an​=

a1​,其誤差為∑n=

2nan

\sum_^ a_

∑n=2n​

an​,如果n取值很大,那麼 ∑n=

2nan

\sum_^ a_

∑n=2n​

an​很可能是個較大的數,這樣數值計算就會有乙個較大的誤差。

討論 思考題

1 功能 編寫函式 float fun 利用以簡單迭代方法 xn 1 cos xn 求方程 cos x x 0 的乙個實根。迭代步驟如下 1 取x1 初值為0.0 2 x0 x1 把x1 的值賦給x0 3 x1 cos x0 求出乙個新的x1 4 若x0 x1 的絕對值小於 0.000001 執行步...

討論 思考題

1 功能 請編寫函式 void fun char s n char b 將 m行n列的二維陣列中的字元資料按列的順序依次放到乙個字串中。例如 二維陣列中的資料為 w w w w s s s s h h h h 則字串中的內容應是 wshwshwshwsh 2 功能 編寫函式 void fun cha...

趣味思考題

1.一間囚房裡關押著兩個犯人。每天監獄都會為這間囚房提供一罐湯,讓這兩個犯人自己來分。起初,這兩個人經常會發生爭執,因為他們總是有人認為對方的湯比自己的多。後來他們找到了乙個兩全其美的辦法 乙個人分湯,讓另乙個人先選。於是爭端就這麼解決了。可是,現在這間囚房裡又加進來乙個新犯人,現在是三個人來分湯。...