1. 數值計算中穩定性是一個重要概念,什麼是穩定性
對一個問題的求解可以有多種不同的方法,難易迥異。在計算機科學中往往把要解決的問題轉化為數學模型來加以解決。由於機器字長的限制和存貯空間
的有限性,不同的模型由於誤差的存在,往往使計算的結果存在很大的差異。若執行的結果與精確解之間的誤差很大的話,勢必會影響與之相關的數據的精確度。這
就引出了我們的問題:數值穩定性。
定義1對於一個已經存在的演算法,若輸入數據的誤差在計算過程中迅速增長而得不到控制,則稱該演算法是不穩定的,否則是數值穩定的。
2. 數值計算的穩定性問題是什麼含義(遞推演算法)
對一個問題的求解可以有多種不同的方法,難易迥異。在計算機科學中往往把要解決的問題轉化為數學模型來加以解決。由於機器字長的限制和存貯空間
的有限性,不同的模型由於誤差的存在,往往使計算的結果存在很大的差異。若執行的結果與精確解之間的誤差很大的話,勢必會影響與之相關的數據的精確度。這
就引出了我們的問題:數值穩定性。
定義1對於一個已經存在的演算法,若輸入數據的誤差在計算過程中迅速增長而得不到控制,則稱該演算法是不穩定的,否則是數值穩定的。
3. 一、數值計算中,誤差是不可避免的。 減小運算誤差有哪些原則
減少運算誤差的原則有:
1、要避免除數絕對值遠遠小於被除數絕對值的除法
用絕對值小的數作除數進行除法運算時,舍入誤差會增大。如計算x/y時,若0<|y|ㄍ|x|,則可能對計算結果帶來嚴重影響,應盡量避免。
2、要避免兩相近數相減
在數值計算中兩個相近的數相減有效數字會嚴重損失,例如X=532.65,Y=532.52都是有五位有效數字,但X-Y=0.13隻有兩位有效數字。這說明必須盡量避免出現這類運算。最好是改變計算方法,防止這種現象產生。
3、要防止大數「吃掉」小數
在數值運算中參加運算的數有時數量級相差很大,而計算機位數有限,如不注意就會出現大數「吃掉」小數。
4、注意簡化計算步驟,減少運算次數,從而減少計算工作量
簡化計算步驟,減少運算次數不但可節省計算時間,而且還能減少舍入誤差。這是數值計算必須遵從的原則。
5、選用數值穩定性好的演算法
(3)數值演算法穩定性是指擴展閱讀:
在數值計算中,為解決求方程近似值的問題,通常對實際問題中遇到的誤差進行下列幾類的區分:
1、模型誤差
在建立數學模型過程中,要將復雜的現象抽象歸結為數學模型,往往要忽略一些次要因素的影響,對問題作一些簡化。因此數學模型和實際問題有一定的誤差,這種誤差稱為模型誤差。
2、測量誤差
在建模和具體運算過程中所用的數據往往是通過觀察和測量得到的,由於精度的限制,這些數據一般是近似的,即有誤差,這種誤差稱為測量誤差。
3、截斷誤差
由於實際運算只能完成有限項或有限步運算,因此要將有些需用極限或無窮過程進行的運算有限化,對無窮過程進行截斷,這樣產生的誤差成為截斷誤差。
4、舍入誤差
在數值計算過程中,由於計算工具的限制,我們往往對一些數進行四捨五入,只保留前幾位數作為該數的近似值,這種由舍入產生的誤差成為舍入誤差。
5、抽樣誤差
抽樣誤差:是指樣本指標和總體指標之間數量上的差別,例如抽樣平均數與總體平均數之差 、抽樣成數與總體成數之差(p-P)等。
4. 演算法的數值穩定性和數學問題本身的穩定性的異同
演算法的穩定性主要是描述演算法的優劣,而數學問題的穩定性是討論一個東西的數學特性.
5. 數據結構 如何判斷演算法是否穩定
如果是復雜度,就多次測試的樣本方差大小,如果小,則演算法復雜度穩定
如果是排序,就看排序前後相同大小的元素相對位置有無變化,如果沒有,則穩定,穩定的排序演算法有冒泡排序,歸並排序和插入排序,其他的常用排序比如快排基本都不是穩定排序
6. 數據結構裡面什麼是穩定的排序,什麼是不穩定的排序,怎麼看,什麼是穩定性
就是說在配需前後,各個關鍵字的相對位置不變。
舉個例子來說吧,假設在排序前數據排列如下:
排序前:5,6(1),1,4,3,6(2),(第一個6在第二個6之前)
排序後:1)如果排序後的結果是1,2,3,4,5,6(1),6(2)那麼就說此排序算 法是穩定的,即使穩 定的排序。
2)如果排序後的結果是1,2,3,4,5,6(2),6(1),即6(1)和6(2)相比較排序前
他們的相對順序改變了(第二個6排到第一個6之前了),那麼就說這次排序是不穩定的 排序
像快速排序、希爾排序等演算法都是不穩定排序演算法,冒泡排序、插入排序等演算法是穩定的排序演算法。
希望對你有幫助哦~~
7. 在數值計算中實現演算法的數值穩定性的若干方法
拿華騰的交通卡系統做例子吧
先說數據結構:
程序裡面有很多用戶信息,這些信息是用結構體存放,是用鏈表的形式,還是用哈希表等等的方法進行排列,這個就是數據結構
演算法:
要從這些數據結構里找出一個結點,是用遍歷搜索呢還是用折半搜索之類的方法,叫做演算法。
LZ可以體會下。
8. 數據結構的排序演算法中,哪些排序是穩定的,哪些排序是不穩定的
一、穩定排序演算法
1、冒泡排序
2、雞尾酒排序
3、插入排序
4、桶排序
5、計數排序
6、合並排序
7、基數排序
8、二叉排序樹排序
二、不穩定排序演算法
1、選擇排序
2、希爾排序
3、組合排序
4、堆排序
5、平滑排序
6、快速排序
排序(Sorting) 是計算機程序設計中的一種重要操作,它的功能是將一個數據元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列。
一個排序演算法是穩定的,就是當有兩個相等記錄的關鍵字R和S,且在原本的列表中R出現在S之前,在排序過的列表中R也將會是在S之前。
不穩定排序演算法可能會在相等的鍵值中改變紀錄的相對次序,但是穩定排序演算法從來不會如此。不穩定排序演算法可以被特別地實現為穩定。
做這件事情的一個方式是人工擴充鍵值的比較,如此在其他方面相同鍵值的兩個對象間之比較,就會被決定使用在原先數據次序中的條目,當作一個同分決賽。然而,要記住這種次序通常牽涉到額外的空間負擔。
(8)數值演算法穩定性是指擴展閱讀:
排序演算法的分類:
1、通過時間復雜度分類
計算的復雜度(最差、平均、和最好性能),依據列表(list)的大小(n)。
一般而言,好的性能是 O(nlogn),且壞的性能是 O(n^2)。對於一個排序理想的性能是 O(n)。
而僅使用一個抽象關鍵比較運算的排序演算法總平均上總是至少需要 O(nlogn)。
2、通過空間復雜度分類
存儲器使用量(空間復雜度)(以及其他電腦資源的使用)
3、通過穩定性分類
穩定的排序演算法會依照相等的關鍵(換言之就是值)維持紀錄的相對次序。