導航:首頁 > 源碼編譯 > 數值演算法的穩定性上機實驗

數值演算法的穩定性上機實驗

發布時間:2022-04-23 09:39:51

⑴ 數值計算方法實驗課題目(求定積分方面)

只會第一個牛頓萊布尼茲公式的做法:
4提出積分號,1/(1+X^2)的原函數為arctanX,故積分出來為4*arctanX 帶入上下限為4*arctan1-4*arctan0=π
其他的不會做了

演算法的數值穩定性和數學問題本身的穩定性的異同

演算法的穩定性主要是描述演算法的優劣,而數學問題的穩定性是討論一個東西的數學特性.

⑶ 求一篇數值分析實驗報告

數值分析實驗報告

姓名: 學號:

實驗1:

1. 實驗項目的性質和任務

通過上機實驗,對病態問題、線性方程組求解和函數的數值逼近方法有一個初步理解。

2.教學內容和要求

1)對高階多多項式

編程求下面方程的解

並繪圖演示方程的解與擾動量 的關系。(實驗2.6)

2)對 ,生成對應的Hilbert矩陣,計算矩陣的條件數;通過先確定解獲得常向量b的方法,確定方程組

最後,用矩陣分解方法求解方程組,並分析計算結果。(第三章,實驗題4)

3)對函數

的Chebyshev點

編程進行Lagrange插值,並分析插值結果。(第四章 實驗1)

項目涉及核心知識點

病態方程求解、矩陣分解和方程組求解、Lagrange插值。

重點與難點

演算法設計和matlab編程。

1)a.實驗方案:

先創建一個20*50的零矩陣X,然後利用Matlab中的roots()和poly()函數將50個不同的ess擾動值所產生的50個解向量分別存入X矩陣中。然後再將ess向量分別和X的20個行向量繪圖。即可直觀的看出充分小的擾動值會產生非常大的偏差。即證明了這個問題的病態性。

b.編寫程序:

>> X=zeros(20,50);

>> ve=zeros(1,21);

>> ess=linspace(0,0.00001,50);k=1;

>> while k<=50

ve(2)=ess(k);

X(1:20,k)=roots(poly(1:20)+ve);

k=k+1;

end

>> m=1;

>> while m<=20

figure(m),plot(ess,X(m,:));

m=m+1;

end

C.實驗結果分析和拓展

由上面的實驗結果可以看出一個充分小的擾動值可以讓方程的解產生非常大的偏差,而且這個偏差隨著ess的變大偏差也隨即變大。但可以看出在相對小的根處根比較穩定,也就是說這些根關於ess並不敏感,而在較大根處時,根很不穩定,即這些解關於ess的變化是敏感的。這就說明了這個問題本身就是一個病態問題,與演算法好壞無關。

若擾動在x^18處,只要把程序中的ve(2)改為ve(3)即可,其圖形和此類似。

d.實驗結論:

高次多項式擾動求方程解問題是一個病態問題。

2)a.實驗方案:

先創建一個20*20的零矩陣A,再通過給定解x和Hilbert矩陣求出列向量b,然後通過LU分解法求出方程HX=b的解X,然後將x-X』這一行向量存入A矩陣中,形成一循環,最後,如果Hilbert矩陣非病態的話,則可輸出一個20*20的對角矩陣。

b.編寫程序:

>> n=2;

>> A=zeros(20,20);

>> while n<=20

x=1:n;

H=hilb(n);

b=H*x';

[L U]=lu(H);

y=L\b;X=U\y;

A(n,1:n)=x-X';

n=n+1;

end

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 4.455948e-017.

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 7.948463e-017.

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 1.798429e-016.

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 7.626119e-018.

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 6.040620e-017.

Warning: Matrix is close to singular or badly scaled.

Results may be inaccurate. RCOND = 5.444860e-017.

>> A

A =

1.0e+003 *

Columns 1 through 10

0 0 0 0 0 0 0 0 0 0

-0.0000 0.0000 0 0 0 0 0 0 0 0

-0.0000 0.0000 -0.0000 0 0 0 0 0 0 0

-0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0 0

0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0 0 0

0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0 0 0 0

0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0 0

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0 0

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000

-0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0001 -0.0003 0.0006 -0.0007 0.0005

0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0027 0.0096 -0.0223 0.0348 -0.0361

0.0000 -0.0000 0.0000 -0.0004 0.0030 -0.0098 0.0080 0.0593 -0.2570 0.5154

0.0000 -0.0000 0.0000 -0.0001 0.0005 -0.0029 0.0095 -0.0171 0.0086 0.0347

0.0000 -0.0000 0.0000 -0.0000 0.0003 -0.0016 0.0059 -0.0133 0.0145 0.0094

0.0000 -0.0000 0.0000 -0.0001 0.0009 -0.0042 0.0118 -0.0182 0.0082 0.0185

0.0000 0.0000 -0.0000 0.0002 -0.0027 0.0187 -0.0762 0.1806 -0.2249 0.0813

0.0000 0.0000 -0.0000 0.0001 -0.0017 0.0120 -0.0497 0.1224 -0.1699 0.1064

0.0000 -0.0000 0.0000 -0.0003 0.0028 -0.0137 0.0371 -0.0464 -0.0164 0.1243

Columns 11 through 20

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0

-0.0000 0 0 0 0 0 0 0 0 0

-0.0002 0.0000 0 0 0 0 0 0 0 0

0.0238 -0.0091 0.0015 0 0 0 0 0 0 0

-0.6091 0.4336 -0.1727 0.0296 0 0 0 0 0 0

-0.0944 0.1170 -0.0824 0.0318 -0.0053 0 0 0 0 0

-0.0624 0.1107 -0.1110 0.0674 -0.0232 0.0035 0 0 0 0

-0.0289 0.0059 0.0103 0.0082 -0.0263 0.0181 -0.0042 0 0 0

0.0524 0.1690 -0.3743 -0.1862 1.0944 -1.2171 0.6004 -0.1156 0 0

-0.0327 0.1652 -0.3051 -0.0485 0.7195 -0.9387 0.5714 -0.1699 0.0191 0

-0.1120 -0.0421 0.0883 0.0222 -0.0628 0.1013 -0.2902 0.3783 -0.2173 0.0469

C.實驗結果分析和拓展:

當Hilbert矩陣的階數比較小時,其解X和給定解x偏差不大;但當Hilbert矩陣的階數變大時,偏差就會變大。這就說明了Hilbert矩陣是一組病態矩陣,從Matlab運行中的Warning可以看出,其條件數相當大。

d.實驗結論:

Hilbert矩陣是一組病態矩陣,用它來做線性方程的系數矩陣時,往往會得出與精確解相差較大的解。

3)a.實驗方案:

在區間【-1,1】上取點,先按Chebyshev取點,即xk=cos((2k-1)pi/2/(n+1))取點,然後再進行拉格朗日插值,繪出圖和插值點。而後再進行均勻取點再拉格朗日插值。將兩種插值結果進行比較。

b.編程實現:

for a=1:10

b=a+1;

for c=1:b

X(c)=cos((2*c-1)*pi/2/(a+1));

Y(c)=1/(1+25*X(c)^2);

x=-1:0.05:1;

end

m=length(x);

for i=1:m

z=x(i);s=0;

for k=1:b

L=1;

for j=1:b

if j~=k

L=L*(z-X(j))/(X(k)-X(j));

end

end

s=s+L*Y(k);

end

y(i)=s;

end

figure(1)

plot(x,y,'r');

hold on;

figure(2)

plot(X,Y,'b*')

hold on

end

for a=2:2:10

b=a+1;

X=linspace(-1,1,b);

Y=1./(1+25*X.^2);

x=-1:0.05:1;

m=length(x);

for i=1:m

z=x(i);s=0;

for k=1:b

L=1;

for j=1:b

if j~=k

L=L*(z-X(j))/(X(k)-X(j));

end

end

s=s+L*Y(k);

end

y(i)=s;

end

figure(1)

plot(x,y,'r');

hold on;

figure(2)

plot(X,Y,'b*')

hold on

end

C.實驗結果分析及拓展:

均勻插值時,當n比較大時,就會出現多項式插值的Runge現象,即當插值節點的個數n增加時,Lagrange插值多項式對原來函數的近似並非越來越好。當進行非等距節點插值時,其近似效果明顯要比均勻插值是要好。原因是非均勻插值時,在遠離原點處的插值節點比較密集,所以其插值近似效果要比均勻插值時的效果要好。

d.實驗結論:

利用Chebyshev點進行非等距節點插值的對原函數的近似效果要比均勻節點插值的好。

⑷ 數值分析里的演算法穩定性和收斂性的區別是什麼

演算法的穩定性:穩定性是指演算法對於計算過程中的誤差(舍入誤差、截斷誤差等)不敏感,即穩定的演算法能得到原問題的相鄰問題的精確解.
演算法的收斂性:收斂這一概念和穩定性不是一個層次的,它只在部分演算法中出現,比如迭代求解.迭代中的收斂指經過有限步驟的迭代可以得到一個穩定的解(繼續迭代變化不大,小於機器精度,浮點數系統認為不變).但是這個解是不是原問題的解,要看問題的病態性了:如果問題是病態的,則很有可能不是准確的解.

⑸ 數值演算法與實現

!!!!!!!!!!!!!!!!1

⑹ (C語言版)數據結構演算法的錯誤修改,上機實驗操作的修改

Delete(head)此句有點問題。此句是否為預定義。
head應該是LinkList類型的吧。改成Delete(LinkList);

後加的程序中,Delete(LinkList *head)中head重復定義,則在程序內不必在定義head,去掉第二行LinkList *head試試。
程序內容我沒細看,只是看了看語法

⑺ 數值計算中穩定性是一個重要概念,什麼是穩定性

對一個問題的求解可以有多種不同的方法,難易迥異。在計算機科學中往往把要解決的問題轉化為數學模型來加以解決。由於機器字長的限制和存貯空間
的有限性,不同的模型由於誤差的存在,往往使計算的結果存在很大的差異。若執行的結果與精確解之間的誤差很大的話,勢必會影響與之相關的數據的精確度。這
就引出了我們的問題:數值穩定性。

定義1對於一個已經存在的演算法,若輸入數據的誤差在計算過程中迅速增長而得不到控制,則稱該演算法是不穩定的,否則是數值穩定的。

⑻ 在數值計算中實現演算法的數值穩定性的若干方法

拿華騰的交通卡系統做例子吧
先說數據結構:
程序裡面有很多用戶信息,這些信息是用結構體存放,是用鏈表的形式,還是用哈希表等等的方法進行排列,這個就是數據結構

演算法:
要從這些數據結構里找出一個結點,是用遍歷搜索呢還是用折半搜索之類的方法,叫做演算法。

LZ可以體會下。

⑼ 數值計算時不同階精度的演算法混合使用會不會更容易造成數值不穩定

1.精度不同的演算法,對初始數據的要求不同,有可能會由於初始數據的精度影響了整個演算法的精度

2.精度不同的演算法,有可能會穩定程度不同,混合使用時可能剛好會有放大誤差的效果

3.精度不同的演算法,有可能原理根本不同,所以不能混合使用

4.感覺上,基於迭代的演算法應該可以使用吧?

個人見解.......

閱讀全文

與數值演算法的穩定性上機實驗相關的資料

熱點內容
免費pdf工具 瀏覽:380
pdf加密一機一碼 瀏覽:600
怎麼把百度雲資源壓縮 瀏覽:456
不會數學英語如何編程 瀏覽:88
如何能知道網站伺服器地址 瀏覽:648
程序員月薪5萬難嗎 瀏覽:138
如何評價程序員 瀏覽:803
雲虛機和伺服器的區別 瀏覽:403
廣西柳州壓縮機廠 瀏覽:639
arm開發編譯器 瀏覽:833
51單片機的核心 瀏覽:746
看電視直播是哪個app 瀏覽:958
將c源程序編譯成目標文件 瀏覽:787
再要你命3000pdf 瀏覽:558
ai軟體解壓軟體怎麼解壓 瀏覽:520
文件夾怎樣設置序列號 瀏覽:963
javascriptgzip壓縮 瀏覽:248
易語言怎麼取出文件夾 瀏覽:819
蘋果xs手機加密app哪裡設置 瀏覽:605
超聲霧化器與壓縮霧化器 瀏覽:643