科學計算實踐大報告

2022-07-24 19:27:02 字數 3782 閱讀 9233

信計12 徐文豪 2110902039

1.上機題目1

1.1 問題重述

對如下積分方程:

用復化辛普森積分公式在區間[0,1]求其離散近似解,再用求出的離散近似解通過三次樣條插值得到連續近似解,並與如下真解做比較:

1.2 問題分析

將[0,1]分為個長度相等的自區間,令

將等式(1)中的積分項用復化辛普森公式展開後,結果如下:

等式(5)實際上是關於的隱函式,但如果我們分別令,則等式(5)即轉化為以為未知量的階方程組,由此可由列主元高斯消去法或共軛梯度法等接觸各,這樣就得到了在[0,1]上的離散近似解,再通過三次樣條插值,即可得到在[0,1]的連續近似解。

值得一提的是,當各求出來之後,等式(5)本身就是乙個在[0,1]之間的連續近似解,且效果應該比用三次樣條插值得到的更好,在結果分析中我將其命名為「辛普森表示式」。

1.3 結果分析

郵件附件中的是上機題目一的完整程式,令區間數n=4時結果如下:

從圖中我們可以看出,真實曲線、辛普森表示式曲線和三次樣條插值曲線幾乎完全重合,說明近似效果非常好。

為分析對近似效果的影響,我們取,結果如下:

從圖中我們可以看出,時近似效果不是很好,但時近似效果已經不錯了。

最後值得一提的是,從理論上將,隨著的增大,近似效果是越來越好的。但這並不意味著我們應該把取得很大,因為當等式(5)對應的方程階數變大時,求解所需的時間也增大了。於是這裡就存在乙個問題:

我們應該取等於多少才合適呢?

對這個問題,看影象當然是個選擇,不過它只能進行粗略的比較,如果我們要使解達到一定的精度,則應該先確定數值區間的間隔,再由此確定區間數,比如取時有。

對這個問題,可以以辛普森表示式曲線和準確解的無窮向量範數作為誤差衡量指標,得到當時對應的誤差分別為: 1.784512e-002,1.

335658e-004,3.640174e-006,3.690255e-010。

2.上機題目2-1

2.1 問題重述

分別用共軛梯度法和預條件共軛梯度法求解線性方程組,其中

2.2 問題分析

由於共軛梯度法解對稱正定方程組已經很成熟,因此用共軛梯度法求解是很容易的,對應的演算法流程圖如下:

共軛梯度法時求解大型線性方程組的常用方法,它的優點是程式設計簡單,且具有最多步收斂速度,但共軛梯度法的收斂速度是和係數矩陣的條件數密切相關的,若矩陣比較病態的話,則收斂會比較慢。這讓我們想到了對做一些變換使得所求解的矩陣比較良態。

預優共軛梯度法的思想是將方程轉換為

其中是對稱正定的,如果我們能選擇合適的使得比較良態,則對等式(6)使用共軛梯度法能取得較好的效果。

由於等式(6)的形式比較特殊,通過一定技巧可以簡化運算,定義稱為預優矩陣,得到與對等式(6)使用共軛梯度法的等價簡化演算法如下:

step 1:給定初始迭代向量,精度要求,最大迭代次數,令。

step 2:計算,。

step 3:更新。

step 4:若或,終止迭代。

step 5:令,計算

step 6:轉step4。

2.3 結果分析

郵件附件中的mathprac2_是上機題目2-1的完整程式,取誤差精度為,得到共軛梯度法的迭代次數、執行時間和近似解如下:

由於此時係數矩陣的對角元相差較大,可直接取其對角元素構造對角矩陣作為預優矩陣,即,預優共軛梯度法的迭代次數、執行時間和近似解如下:

從結果可以看出,此時預優共軛梯度法明顯優於普通共軛梯度法,計算係數矩陣的條件數得到: ,條件數明顯較大。

為驗證共軛梯度法的這個性質,在已經知道準確解是全1的情況下,取,計算係數矩陣的條件數得到:,這已經大得很離譜了。對此,首先,我們看一下普通共軛梯度法的計算效果:

從圖中可以看出,此時普通共軛梯度法已經達到了最大迭代次數,而且遠遠沒有收斂。

而預優共軛梯度法的計算效果如下:

從圖中得到,預優共軛梯度法迭代6步就收斂了,由此可以看出當係數矩陣很病態時使用預優共軛梯度法代替普通共軛梯度法的必要性。

3.上機題目2-2

3.1 問題重述

用預條件共軛梯度演算法求解線性方程組,其中

上式中為矩陣,為維向量,為矩陣,為單位矩陣,、為維向量,且

, 3.2問題分析

對這個問題,最直接的思路就是直接將係數矩陣和值向量直接匯入計算機進行計算,但矩陣實際上是乙個的矩陣,我們可以估計一下所需要的記憶體。由於要對進行乘法運算,因此中的元素應為雙精度型,也就說每個元素使用64位的記憶體,得到所需的記憶體為:

而我們普通計算機的記憶體才左右。因此要實現這種想法,一般只能用三種方法:(1)使用超級計算機。

(2)使用平行計算。(3)使用虛擬記憶體(即將資料先存在磁碟中然後從記憶體中一點一點呼叫)。

如果係數矩陣不是稀疏矩陣且沒有規律,那我們只能用這三種方法做了。但在這題中明顯稀疏且很有規律,例如當時,矩陣如下:

這時再使用以上三種方法就代價太高了,此時我們可以對進行壓縮儲存。通常使用的壓縮儲存演算法有兩種:(1)壓縮行儲存。(2)非零位置儲存。

兩種演算法均將對的儲存轉換為對三個向量的儲存。壓縮行存非零元素,非零元素所在列,每一行第乙個非零元素在的下標。非零位置儲存存非零元素,非零元素所在列,非零元素所在行。

設矩陣的階數為,係數率(含非零元素比率)為,則壓縮行儲存演算法要存個元素,而非零位置儲存需要存個元素,由於係數矩陣的都比較小,因此兩者相差不是很大,又因為非零位置儲存程式設計簡單易懂,所以類似於matlab等軟體處理稀疏矩陣時很多使用的是非零元素儲存。

對這道題,為了熟悉壓縮行儲存,我程式中使用了它作為壓縮演算法。

3.3 結果分析

郵件附件中的mathprac2_是問題2-2的完整程式,設定精度要求,如果和之前一樣以對角元素構造預優矩陣使用預優共軛梯度法,則迭代次數,程式執行時間。

為了比較預優共軛梯度法的效果,在程式中直接使用普通共軛梯度法,得到迭代次數為,。

兩者的結果影象如下:

從圖中可以看出,兩者都收斂到了相同的正確結果。但與此同時,我們發現此時的預優共軛梯度法收斂反而不如普通共軛梯度法快。這是在意料之中的,因為使用對角元作為預優矩陣是在的對角元相差較大時效果比較好,而這裡的係數矩陣均為4,因此這種預優矩陣選法在這裡不太適合。

那這裡就有個問題,我們是滿意共軛梯度法的效果然後結束,還是繼續費心尋找好的預優矩陣呢?

我覺得一種可行的策略是估計其條件數,若其條件數較小時,則說明共軛梯度法能取得較好的效果,773的迭代步長只是問題的規模造成的,若條件數很大,則需要繼續尋找合適的預優矩陣。

由於的矩陣我們無法直接估計其條件數,因此我們可以分析當比較小的情形,分析條件數的增長速度,然後對時的情形進行估計,結果如下表所示:

從中我們發現,當變成原來的兩倍,差不多變成原來的四倍,由於這些都具有相同的形狀,因此我們有理由相信這種關係是穩定的。

在這種假設下,我們可以根據的條件數估計時有,這個等級的條件數相對於的而言是很小的,也就是說此時很良態。因此可以認為用普通共軛梯度法就可以得到比較好的收斂速度了,沒必要再去使用預優共軛梯度法。

4.上機題目3-1

4.1.問題重述

用差分法求解如下二階常微分方程邊值問題()

4.2.問題分析

對一般的線性常微分邊值問題

令,,則可得到對應的差分方程組

解方程組(10)可得差分解。

明顯方程組(8)屬於方程組(9)的型別,因此通過構造與方程組(10)對應的方程得到係數矩陣和值向量即可得到方程組(8)的差分解。

4.3 結果分析

實際上方程(8)是乙個簡單的可分離變數的常微分方程,因此可以比較容易求出其準確解:

郵件附件中的mathprac3_是上機題目3-1的完整程式,當時,得到準確解與近似解的比較圖如下:

從結果可以看出,近似解幾乎完全和準確解重合,且執行時間只有0.6924秒,因此可以**對一般二階線性常微分問題,差分法能夠取得很好的效果。

電腦科學與技術社會實踐報告

光陰似箭,歲月如梭。一晃3周的實習生活已經過去了。實習,是終點也是起點。它將我們在學校中學習的知識與實際相結合。讓我們提前了解到將來工作時遇到的諸多問題,因而可以預見性的明白我們要往什麼方面努力。在實習期間,我能嚴格要求自己,虛心學習,不懂就問。自覺遵守單位制定的規章制度。從身邊的一點一滴做起,心態...

資料庫大報告

目錄第1章需求分析 2 1.1系統需求分析 2 1.2系統資料流圖 2 1.3系統資料字典 3 第2章概念結構設計 7 2.1區域性e r圖設計 7 2.2總體e r圖設計 9 第3章邏輯結構設計圖 15 3.1由e r圖向關係模式的轉換 15 3.2生成pdm模型物 16 隨著現代社會的不斷發展,...

建築工程五大報告五大報告內容

一 新五大報告內容填寫 一 五大報告 工程竣工報告 工程質量評估報告 設計檔案質量檢查報告 勘察檔案質量檢查報告 工程竣工驗收報告 的編制是根據 房屋建築工程和市政基礎設施工程竣工驗收暫行規定 建建 2000 142號文作為制定依據。工程竣工報告 施工單位在工程完工後對工程質量進行了檢查,確認工程質...