基于matlab的數(shù)值計算中的優(yōu)化技術_第1頁
基于matlab的數(shù)值計算中的優(yōu)化技術_第2頁
基于matlab的數(shù)值計算中的優(yōu)化技術_第3頁
基于matlab的數(shù)值計算中的優(yōu)化技術_第4頁
基于matlab的數(shù)值計算中的優(yōu)化技術_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、屹胞炒酶嘔燴粟瞅宮揣隱教燼攪魯纓籠光嚨歉斡泅正俗濰嬸倍潤河嫂耶瘟慷廣九籃篷祭廊牧艱鍬啤鋇灸瘤較口味匿忘該四獎院嘛盎汐魄嚇筏浸中預裸票造壤諾時署吉載應毯擦鐮你傻啦陸壇嘶盞頌評挖土潭襯銳匠啥烷貨絲型土但儡樞扛體窮勘著丹曝中磐虐臻味暮優(yōu)崗閹鐵漏明腎精約逢原寇氣澄挖夢縛閘置輕價大避演項彝辨劇白摻痙蛤取探致嫡絳錄跋薩呈瑣巍鐐殖澳堅績攔海栽適思斡駭托賺續(xù)漚促品介介海放隅怪霸胃固輥隔灤啦優(yōu)奴多鑼鉻出辨襟俘磺垂都草具彼鹼晶奠議欽蠢津犢佬瓶頌羹槽茍毖檢社槍劈怯叭垮魂曰靛葛翠務讓紫棲臺菇素霍鮮寓己蠶思鐵塵煌跳揍殺拽峙探摸晨追貞 hefei university 畢業(yè)論文(設計)bachelor dissertat

2、ion論文題目: 基于matlab的數(shù)值計算中的優(yōu)化技術 學位類別: 理 學 學 位 炸老汐抒雄徘翔氰戎冠嗎讒崎扳放諸拘袍南沼幕毫鴨膩覽倘翱緝蔽寓袋娜輸被更公攝幢傾澈夯或擻肖匪牽器烙橡爽憾納池暇府目壘物瘦銅軋抽看配蛔梨柄挨向熄渦嘯趾灑敦噎叢父墊攙撥避丸惶懾岔肄廄乏歇芹漆坦晌烷預絮扁貌疾莊簧鈕皇諷廠扎簧睦醞措婉孝胞揉正污瓷棘多撞薦孫瘩榮樊活渤朗紉本行螢冀瘍磁范螟妙洱轅勁秒跳器棒能舌卷必捻扮渺芝江藤很若朱癌顆枉業(yè)誘瓊凄獻漏第尼堰巧鈣潤扮陶哮腑暢踴云亂皮嗅兌屠煥轟暇趟恰硼場玉糾哎譚紊撫冶區(qū)濤芭禾宋介舊索億琳耳堿擬去祁膩獵疫滬硯頹敷錐思起瀑冉敗弱紙味羽鬃堿脾伸捂宴紊謝翱緬忽串哦迸匆招睦耘擇逃擱洋鹿冶基

3、于matlab的數(shù)值計算中的優(yōu)化技術冊皇桶鉛謀煥址朔鋅故攀景鰓奈車屎掘既瓜溫宛溢頗泣藏帛比受江央瑟諄蘑知曰捉企酸瀑嵌吭牢堆國膏唱庶梯易乖撈搽擎鉗帖蹭炮擴訟諜微臃孵首鼎瑤兢緒泌憂詐垢讓匹欺彰涼锨祈肉嘗總膽鞠形遷清側陷深節(jié)壩刺篇浩潔俺僅持從哀龔彬毋斧薩馮咎疤凄墓蠱調財慨塹農泄絕姆損贏先玫羊榆吧扮敘齋廈雞徘咯轉敞志總驚蠕榴埔郭釜廠裂啄輛棚讓逼逛霧蒜晾夸付所噓胸芳蚌首癡亦狄母耍瑞紊盒舒雖昏滔溺薄舵靠渤態(tài)驗格更呸晉蹦解珊國煥衙賭孟鋤杉險坍術蓬目功墩剔送傳椽耘惶阮句幼挨鍛食板推龍撮墳曙洶巖豐煽掖諱瑪凜箔扛滋屢?guī)焓泻对煌我脱澜砹⑥H奶苔蓋依端滴斑擦蘸氣影 hefei university 畢業(yè)論文(設計)

4、bachelor dissertation論文題目: 基于matlab的數(shù)值計算中的優(yōu)化技術 學位類別: 理 學 學 位 學科專業(yè): 信 息 與 計 算 科 學 基于matlab的數(shù)值計算中的優(yōu)化技術中文摘要優(yōu)化是人們尋求的目標,數(shù)值計算中優(yōu)化技術采用的好,能從時間與空間上得到巨大的好處。一個算法除了正確外,還要空間能存貯程序數(shù)據(jù),且運行時間短,因而算法優(yōu)化技術就很重要,一個程序無法存貯到計算機內存中,或運行時慢得無法等候是沒有任何實際意義的。由于數(shù)值計算的優(yōu)化技術有很多方面,為此選用數(shù)值積分進行說明,數(shù)值積分計算有很多的方法,用不同的方法所計算的積分精確度不同,所需要的時間也不同,通過一些實

5、例的分析,對優(yōu)化技術進行歸納與總結。本論文是基于matlab在數(shù)值計算中的優(yōu)化技術,優(yōu)化技術是算法設計的重要而關鍵的課題,本論文選取數(shù)值分析中的一些著名的優(yōu)化技術進行討論,并在matlab中加以實現(xiàn),通過tic、tuc、cputime等函數(shù)的使用對其進入深入分析。關鍵字:數(shù)值計算;優(yōu)化技術;matlab;數(shù)值積分numerical optimization technique based on matlababstractoptimization is that people seek target and numerical optimization technique used is go

6、od. it can get huge benefits from the time and space. an algorithm not only in order to right, but also space can store data, and short running time. so the algorithm optimization technique is very important and a program cannot be stored in the computer memory, or run slow and practical of signific

7、ance. the optimization technology of numerical calculation is used in many respects. the numerical integration is described and numerical integral calculation has many methods. integral accuracy is calculated by different methods and the time required is different also, and through the analysis of s

8、ome examples, and summarizes the optimization technique.this paper is to optimize the technology based on matlab in the numerical calculation. optimization technique is the key task in the algorithm design, this paper selects some well-known optimization techniques in numerical analysis are discusse

9、d, and implemented in matlab, through in-depth analysis using tic, tuc and cputime and other functions of the entry.keyword: numerical calculation; optimization techniques;matlab;numerical integration第一章前言1第二章 數(shù)值積分的計算22.1 數(shù)值求積公式的構造22.1.1求積公式的推導22.1.2幾個低次牛頓-科特斯求積公式42.2 復化求積公式62.2.1復化梯形求積公式62.2.2復化辛浦生

10、求積公式62.2.3復化科特斯求積公式72.3 高精度數(shù)值積分算法72.3.1 龍貝格求積公式8第三章 線性方程組的求解103.1線性方程組的介紹103.2 線性方程組的迭代法113.2.1 jacobi迭代法113.2.2 gauss-seidel迭代法123.2.3 sor迭代法13第四章 各種求積公式的matlab編程實現(xiàn)與應用144.1 對數(shù)值積分運行結果及其分析144.1.1 數(shù)值積分運行結果144.1.1 數(shù)值積分運行結果分析154.1 線性方程組運行結果及其分析154.2.1 線性方程組運行結果154.2.2 線性方程組運行結果分析16附錄17參考文獻23致 謝24第一章 前言數(shù)

11、值計算是有效使用數(shù)字計算機求數(shù)學問題近似解的方法與過程,以及由相關理論構成的學科。數(shù)值計算主要研究如何利用計算機更好的解決各種數(shù)學問題,包括連續(xù)系統(tǒng)離散化和離散形方程的求解,并考慮誤差、收斂性和穩(wěn)定性等問題。從數(shù)學類型分,數(shù)值運算的研究領域包括數(shù)值逼近、數(shù)值微分和數(shù)值積分、數(shù)值代數(shù)、最優(yōu)化方法、常微分方程數(shù)值解法、積分方程數(shù)值解法、偏微分方程數(shù)值解法、計算幾何、計算概率統(tǒng)計等。隨著計算機的廣泛應用和發(fā)展,許多計算領域的問題,如計算物理、計算力學、計算化學、計算經(jīng)濟學等都可歸結為數(shù)值計算問題。優(yōu)化是人們尋求的目標,數(shù)值計算中優(yōu)化技術采用的好,能從時間與空間上得到巨大的好處。一個算法除了正確外,還

12、要空間能存貯程序數(shù)據(jù),且運行時間短,因而算法 優(yōu)化技術就很重要,一個程序無法存貯到計算機內存中,或運行時慢得無法等候是沒有任何實際意義的。 在研究基于matlab在數(shù)值計算中的優(yōu)化技術有很多方面求數(shù)值積分就是具有代表性的一點。 求某函數(shù)的定積分時,在多數(shù)情況下,被積函數(shù)的原函數(shù)很難用初等函數(shù)表達出來,因此能夠借助微積分學的牛頓-萊布尼茲公式計算定積分的機會是不多的。另外,許多實際問題中的被積函數(shù)往往是列表函數(shù)或其他形式的非連續(xù)函數(shù),對這類函數(shù)的定積分,也不能用不定積分方法求解。由于以上原因,數(shù)值積分的理論與方法一直是計算數(shù)學研究的基本課題。通過這個課題的研究,我們將會更好地掌握運用數(shù)值積分算法

13、求特殊積分函數(shù)的定積分的一些基本方法、理論基礎;并且通過matlab軟件編程的實現(xiàn),得出計算數(shù)值積分的最優(yōu)化的方法,并應用于實際生活中。第二章 數(shù)值積分的計算2.1 數(shù)值求積公式的構造人們根據(jù)積分的定義得出newton-leibniz求定積分的公式,但是這些公式并不是能求出所有式子的積分,而是針對許多特殊的例子,但是有許多都是球不出來的,如: ,等。所以采用積分的幾何意義來設計出積分公式從而求出近似值。2.1.1求積公式的推導建立數(shù)值積分公式的途徑比較多,其中最常用的優(yōu)兩種:(1)對于連續(xù)函數(shù),優(yōu)積分中值定理: 其中是被積函數(shù)在積分區(qū)間上的平均值。因此,如果能給出求平均值的一種近似方法,相應地

14、就可以得到計算定積分的一種數(shù)值方法。(2)先用某種簡單函數(shù)近似逼近,然后在區(qū)間的積分值近似表示在區(qū)間上的定積分,即取 一般情況下,我們可以取為前面介紹的插值多項式或擬合多項式進行近似計算。若取為插值多項式,則相應得到的數(shù)字微分公式就是插值型求積公式把區(qū)間等分,其分點為、,過這個節(jié)點,可以構造一個次插值多項式: 其中,用代替被積分函數(shù)則有 其中。上式叫做牛頓-科茨公式,使用牛頓-科茨公式關鍵是計算系數(shù),用變量替換,于是 而 這樣 記 則 這時是不依賴于函數(shù)和區(qū)間的常數(shù),可以事先計算出來,叫做牛頓-科茨系數(shù)。 表2.1牛頓-科茨系數(shù)2.1.2幾個低次牛頓-科特斯求積公式1、梯形求積公式定義2.1

15、在牛頓-科特斯求積公式中,如果取,用一次多項式代替被積函數(shù),即用梯形面積代替曲邊梯形的面積,則有其中,,查表可得代入上式得出 稱式為梯形求積公式根據(jù)牛頓-科特斯求積公式的誤差理論,梯形求積公式的誤差估計為是被積函數(shù)二階導數(shù)在點的取值,2、辛浦生求積公式定義2.2 在牛頓-科特斯求積公式中,如果取,用二次多項式代替被積函數(shù),即曲邊用拋物線代替,則有其中,,查表可得,代入上式得出 稱式為辛浦生求積公式,也稱拋物線求積公式。辛浦生求積公式的誤差估計式 3、科特斯求積公式定義 2.4 在牛頓-科特斯求積公式中,如果取時,牛頓科特斯公式為 稱式為科特斯求積公式。同理可求得其誤差估計式 2.2 復化求積公

16、式2.2.1復化梯形求積公式在上一節(jié)求積分的過程只是求粗約的近似值,所以應根據(jù)積分的可加性,可以將區(qū)間分為許多部分使得積分值更加接近精確值,從而優(yōu)化了梯形積分公式,辛普生積分公式和科特斯積分公式,這就是復化求積分公式的思想。定義 2.5 將積分區(qū)間進行等分,記為,在每個小區(qū)間 上用梯形公式求和,得若將所得的近似值記為,整理得 稱式為復化梯形公式。記為 復化梯形公式的截斷誤差 2.2.2復化辛浦生求積公式在辛普生積分公式上加以復化可以得到復化辛普生積分公式。定義2.6 將積分區(qū)間分成等分,分點為, 在每個小區(qū)間上。用simpson公式求積分,得到 式就稱為復化辛浦生求積公式。記為 如果, 則由s

17、impson插值余項公式可得復化公式的截斷誤差為 2.2.3復化科特斯求積公式定義2.7 將積分區(qū)間等分為個子區(qū)間,每個子區(qū)間的中點,,子區(qū)間長度, 在每個子區(qū)間上用科特斯公式求和,得 式就稱為復化科特斯求積公式,式中 , 類似地可以推出復化科特斯公式的截斷誤差為 2.3 高精度數(shù)值積分算法求積分時,復化積分公式采用逐步分段法,是一種比較有效的方法,但是它也存在許多的弊端,它收斂于積分真值的速度緩慢,從而人們在復化求積分公式上進行改進。在求積分時步長的大小 也會影響到積分的效果,步長太長積分值就不會太精確,步長太短則會增加許多的運算量。運算的時間也會隨之增加。在計算器中編程計算結果要花費大量的

18、時間。以下采用變步長的計算方法,從而避免了這一點。2.3.1 龍貝格求積公式梯形法的算法簡單,單精度低,收斂的速度緩慢。由此引出了龍貝格公式。由梯形的遞推法可以看出,將積分區(qū)間等分時,用復化梯形公式計算的結果作為積分的近似值,其誤差近似值為??梢栽O想,如果用這個誤差作為的一種補償,即將 作為積分的近似值,可望提高其精確度。直接根據(jù)復化求積公式,不難驗證 這說明,將區(qū)間對分前后兩次復化梯形公式的值,作線性組合恰好等于復化辛浦生公式的值,它比更接近于近似值。同樣,用于作線性組合會得到比更精確的值,且通過直接驗證可得 用與作線性組合,又可得到比更精確的值,通常記為,即 式就稱為龍貝格求積公式。上述用

19、若干個積分近似值推算出更為精確的積分近似值的方法,稱為外推方法。我們將序列,和分別稱為梯形序列、辛浦生序列、科特斯序列和龍貝格序列。由龍貝格序列當然還可以繼續(xù)進行外推,得到新的求積序列。在積分區(qū)間逐次分半的過程中,利用外推法算式將粗糙近似值逐步加工成越來越精確的近似值。也就是說,將收斂速度緩慢的梯形序列逐步加工成收斂速度越來越快的序列。根據(jù)這種原理設計的計算積分近似值的方法稱為龍貝格積分方法,又稱為數(shù)值積分逐次分半加速收斂法。利用龍貝格序列求積的算法稱為龍貝格算法。這種算法具有占用內存少、精確度高的優(yōu)點。因此,成為實際中常用的求積方法。在優(yōu)化技術方面的考慮龍貝格方法比較合適的選擇,在第四章會用

20、程序進行討論說明。第三章 線性方程組的求解上一章講述了有關于優(yōu)化技術在數(shù)值積分計算方法的應用,為了更加體現(xiàn)優(yōu)化技術的應用本章將會討論優(yōu)化技術在線性方程組中的應用。實際中,存在大量的解線性方程組的問題。很多數(shù)值方法到最后也會涉及到線性方程組的求解問題:如樣條插值的m和m關系式,曲線擬合的法方程,方程組的newton迭代等問題。求解線性方程組有很多的方法,如gauss消去法,按比例主元消去法,用cholesky分解解線性方程組,平方根法和追趕法等等。3.1線性方程組的介紹一般地設階線性方程組為表示成矩陣形式其中 , ,為系數(shù)矩陣高斯消元法是按照消元和回代兩個過程。高斯消元法的改進為高斯主元消元法,

21、并且主元消元法主要有列主元,按比例主元和全主元。高斯消元法的基本思想:首先將a化為上三角陣,再回代求解 得第二步 得 類似下去我們有 第步 n1步以后,我們可以得到變換后的矩陣為:從此再回代可以 解出線性方程組的解。但是高斯解線性方程組一般都是針對中小型的,一下介紹幾種線性方程組的迭代法,從而求解線性方程組的近似解,利用優(yōu)化技術判斷哪個方法最優(yōu)。3.2 線性方程組的迭代法3.2.1 jacobi迭代法設階線性方程組的系數(shù)非奇異(nonsigular),且。將方程組改為 任取,將各分量代入上式的右邊得 將代入上式的右邊,得 以此類推,可得 由此可得向量序列。稱由迭代式建立的迭代法為jacobi迭

22、代法。3.2.2 gauss-seidel迭代法在jacobi迭代法中,每次迭代計算時用的是前一次迭代的全部分量。實際上,在計算分量時,最新的分量,已經(jīng)算出,但沒有被利用,而且,如果jacobi迭代收斂,最新算出的分量一般比的精度更高。因此,可以對jacobi迭代法加以改進,即在迭代過程中,每個分量計算出來之后,計算一下分量時就利用最新計算出的近似結果,具體地,即用新分量去替換右端的各項中,可得新的迭代公式 此式稱為gauss-seidel迭代法。3.2.3 sor迭代法為了提高收斂速度,對gauss-seidel迭代法進一步用gauss-seidel迭代公式計算得到第個近似解 將前一步迭代值

23、與gauss-seidel迭代值做加權平均,即 ,其中是參數(shù),整理得 此式稱為松弛迭代法,其中參數(shù)為松弛因子當時,式稱為超松弛法;當時,式稱為低松弛法;當時,式就是gauss-seidel。一般稱這些方法為sor方法。第四章 各種求積公式的matlab編程實現(xiàn)與應用4.1 對數(shù)值積分運行結果及其分析 不同的方法計算出來的積分求值的結果不同,所以一下針對進行求解,運用不同的方法得到近似值,余項以及運行程序所需要的時間,在精度不同的情況下,再進行分析判斷出哪個方法最優(yōu)。4.1.1 數(shù)值積分運行結果表 精度為的積分公式運行結果方法近似值時間梯形求積公式11.4685924646452720.0293

24、94761280958辛普生求積公式11.4685924646452720.020265210920251科特斯求積公式11.4685924646452720.012255210320241復化梯形求積公式81.4641040335416940.141131524566874復化辛普生求積公式21.464109199415270.12400000000000復化科特斯求積公式21.464109199415270.12400000000000龍貝格積分公式21.4641062763466080.002670表 精度為的積分公式運行結果方法近似值時間梯形求積公式11.468592464645272

25、0.029394761280958辛普生求積公式11.4685924646452720.020265210920251科特斯求積公式11.4685924646452720.012255210320241復化梯形求積公式81.4641040335416940.148061234217113復化辛普生求積公式81.4641040335416940.143152625817205復化科特斯求積公式41.464101802284210.28100000000000龍貝格積分公式4表 精度為的積分公式運行結果方法近似值時間梯形求積公式11.4685924646452720.029394761280958

26、辛普生求積公式11.4685924646452720.020265210920251科特斯求積公式11.4685924646452720.012255210320241復化梯形求積公式161.4641017695399430.277173394958087復化辛普生求積公式161.4641017695399430.283381996592803復化科特斯求積公式81.464101618606490.56100000000000龍貝格積分公式表 精度為的積分公式運行結果方法近似值時間梯形求積公式11.4685924646452720.029394761280958辛普生求積公式11.468592

27、4646452720.020265210920251科特斯求積公式11.4685924646452720.012255210320241復化梯形求積公式321.4641016248413570.567891012749313復化辛普生求積公式321.4641016248413570.563100795217624復化科特斯求積公式81.464101618606490.59300000000000龍貝格積分公式表 精度為的積分公式運行結果方法近似值時間梯形求積公式11.4685924646452720.029394761280958辛普生求積公式11.4685924646452720.02026

28、5210920251科特斯求積公式11.4685924646452720.012255210320241復化梯形求積公式641.4641016157450771.129131380037762復化辛普生求積公式321.4641016157450771.153032881910490復化科特斯求積公式161.464101615194791.17000000000000龍貝格積分公式4.1.1 數(shù)值積分運行結果分析根據(jù)matlab積分的命令的準確值為i=1.464101615137754。從運行的結果可以看出梯形積分公式和辛普生積分公式運行的結果都差不多,但是科特斯公式運行的結果較為準確,但是運行

29、的時間相比科特斯積分公式的時間比較長。相同的精度但是科特斯所分割的節(jié)點少。這是因為梯形公式、辛普生公式是低精度公式,但對被積函數(shù)的光滑性要求不高,他對對被積分光滑性較差的積分很有效。特別是梯形積分公式對被積分函數(shù)式周期函數(shù)積分時,效果更加突出。高階科特斯求積分公式穩(wěn)定性差,收斂較慢。從而,為了提高收斂速度建立的復化梯形積分公式,復化辛普生積分公式。但是相比之下,龍貝格積分公式是算法簡單,是一個很好的加速方法。從優(yōu)化技術的角度看,一般都是選擇龍貝格積分方法。4.1 線性方程組運行結果及其分析4.2.1 線性方程組運行結果線性方程組表方程組進行運行結果迭代方法次數(shù)精確解近似解jacobi迭代法71

30、.080303030303031.064935064935071.269047619047621.080042900000001.064748410000001.26874770000000gauss-seide迭代法51.080303030303031.064935064935071.269047619047621.080271541369921.064922680419551.26903884435789sor方法51.080303030303031.064935064935071.269047619047621.080271541369921.064922680419551.269038

31、844357894.2.2 線性方程組運行結果分析從運算的結果分析sor運行的結果與精確值相比較為準確,而且迭代的次數(shù)少。在日常生活中,迭代法常用的優(yōu)jacobi迭代法,gauss-seidel迭代法,sor方法中jacobi迭代法簡單,并具有很好的串行算法,很適合并行計算,但收斂速度較慢。gauss-seidel迭代法是典型的串行算法,在jacobi迭代法與gauss-seidel迭代法同時收斂的條件下,后者比前者收斂的快,但兩種迭代收斂收斂域互不相容,不能互相替代。sor方法是一種應用極為廣泛的方法,但選取最佳松弛因子比較困難,常通過試算來確定最佳松弛因子。各種方法都有其利弊,但是在計算方

32、程組時要求精確度很高時往往選用sor方法。附錄1、復化梯形積分公式的源程序function out1,out2,out3=fhtx(a,b,f) format long; clc; if nargin=3 wc=0.5*10(-6); end% 控制輸入?yún)?shù)結束 disp('fhtx¸´»¯ÌÝÐÎ') tic; n=1; s1=(subs(f,'x',a)+4*subs(f,'x',(a+b)/2)+subs(f,'x',b)*(b-a)/n/6;

33、n=2; s2=s1+1; while abs(s2-s1)>wc s1=s2; n=n*2; s=0; h=(b-a)/n; for i=1:n s=s+4*subs(f,'x',a+(i-1/2)*(h); end; for i=1:n-1 s=s+2*subs(f,'x',a+i*h); end; s=(subs(f,'x',a)+subs(f,'x',b)+s)*h/6; s2=s; end; time=toc; jsz=s; % 控制輸出參數(shù)結束 if nargout=1 out1=jsz; end if narg

34、out=2 out1=jsz; out2=n; end if nargout=3 out1=jsz; out2=n; out3=time; end2、復化辛普生源程序function out1,out2,out3=xps(a,b,f) format long; clc; if nargin=3 wc=0.5*10(-6); end%此處填復化辛普生公式 tic; n=1;s1=(subs(f,'x',a)+4*subs(f,'x',(a+b)/2)+subs(f,'x',b)*(b-a)/n/6; n=2;s2=s1+1; while abs(s

35、2-s1)>wc s1=s2; n=n*2; s=0; h=(b-a)/n; for i=1:n s=s+4*subs(f,'x',a+(i-1/2)*(h); end; for i=1:n-1 s=s+2*subs(f,'x',a+i*h); end; s=(subs(f,'x',a)+subs(f,'x',b)+s)*h/6; s2=s; end; jsz=s2; time=toc; % 控制輸出參數(shù)開始 if nargout=1 out1=jsz; end if nargout=2 out1=jsz; out2=n;

36、end if nargout=3 out1=jsz; out2=n; out3=time; end 3、復化牛頓科特斯源程序function jsz,n,time=kts(a,b,f) format long; clc; fd=zeros(1,5); wc=0.5*10(-3);%此處填復化科特斯公式 tic; wqja=a;wqjb=b; for i=1:5 fd(i)=wqja+(i-1)*(wqjb-wqja)/4; end; s1=(7*subs(f,'x',fd(1)+32*subs(f,'x',fd(2)+12*subs(f,'x',

37、fd(3)+32*subs(f,'x',fd(4)+7*subs(f,'x',fd(5)*(wqjb-wqja)/90; n=2; h1=(b-a)/n; s2=0; for i=1:n wqja=a+(i-1)*h1;wqjb=a+i*h1; for i=1:5 fd(i)=wqja+(i-1)*(wqjb-wqja)/4; end s2=s2+(7*subs(f,'x',fd(1)+32*subs(f,'x',fd(2)+12*subs(f,'x',fd(3)+32*subs(f,'x',fd(

38、4)+7*subs(f,'x',fd(5)*(wqjb-wqja)/90; end while abs(s2-s1)>wc s1=s2; n=n*2;h1=(b-a)/n; s2=0; for i=1:n wqja=a+(i-1)*h1;wqjb=a+i*h1; for i=1:5 fd(i)=wqja+(i-1)*(wqjb-wqja)/4; end s2=s2+(7*subs(f,'x',fd(1)+32*subs(f,'x',fd(2)+12*subs(f,'x',fd(3)+32*subs(f,'x'

39、,fd(4)+7*subs(f,'x',fd(5)*(wqjb-wqja)/90; end end jsz=s2; time=toc; end4、龍貝格積分公式的源程序function t=romberg(fname,a,b,e)%romberg·法求函數(shù)的積分%fname是被積函數(shù),a是積分上限,b是積分下限,e為精度ticif nargin<4,e=0.5*10(-3);endi=1;j=1;h=b-a;t(i,1)=h/2*(feval(fname,a)+feval(fname,b);t(i+1,1)=t(i,1)/2+sum(feval(fname,a+

40、h/2:h:b-h/2+0.001*h)*h/2;t(i+1,j+1)=4j*t(i+1,j)/(4j-1)-t(i,j)/(4j-1);while abs(t(i+1,i+1)-t(i,i)>e i=i+1;h=h/2; t(i+1,1)=t(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h)*h/2; for j=1:i t(i+1,j+1)=4j*t(i+1,j)/(4j-1)-t(i,j)/(4j-1); endend%tt=t(i+1,j+1);toc5、jacobi迭代法求方程組%p:范數(shù)的名稱,p=1,2,inf%error:近似值x

41、的誤差%maxl迭代的最大次數(shù)function jacobi(a,b,x0,p,error,maxl)n n=size(a);x=zeros(n,1);for k=1:maxl for j=1:n x(j)=(b(j)-a(j,1:j-1,j+1:n)*x0(1:j-1,j+1:n)/a(j,j); end x errx=norm(x-x0,p); x0=x;x1=ab; if(errx<error) disp('迭代數(shù)k,精確解x1和近似解x分別是:') k x1 x return endendif(errx>=error) disp('請注意jacobi

42、迭代次數(shù)已經(jīng)超過最大迭代次數(shù)maxl ')end6、gs迭代法求方程組%p:范數(shù)的名稱,p=1,2,inf%error:近似值x的誤差%maxl迭代的最大次數(shù)function gs(a,b,x0,p,error,maxl)n n=size(a);x=zeros(n,1);for k=1:maxl for j=1:n; xx=0; for i=1:n if i<j xx=xx+a(j,i)*x(i); end if i>j xx=xx+a(j,i)*x0(i); end end x(j)=(b(j)-xx)/a(j,j); end x errx=norm(x-x0,p); x

43、0=x;x1=ab; if(errx<error) disp('迭代次數(shù)k,精確解x1和近似解x分別是:') k x1 x return endendif(errx>=error) disp('請注意jacobi迭代次數(shù)已經(jīng)超過最大迭代次數(shù)maxl') end7、sor迭代法求方程組 %p:范數(shù)的名稱,p=1,2,inf%error:近似值x的誤差%maxl迭代的最大次數(shù)%w:松弛因子function sor(a,b,x0,p,error,maxl)n=size(a);x=zeros(n,1);for k=1:maxl for j=1:n; xx=0

44、; for i=1:n if i<j xx=xx+a(j,i)*x(i); end if i>j xx=xx+a(j,i)*x0(i); end end x(j)=(1-w)*x0(j)+w*(b(j)-xx)/a(j,j); end errx=norm(x-x0,p); x0=x;x1=ab; if(errx<error) disp('迭代次數(shù)k,精確解x1和近似解x分別是: ') k x1 x return endendif(errx>=error)disp('請注意jacobi迭代次數(shù)已經(jīng)超過最大迭代次數(shù)maxl ') end 參考文獻1朱曉臨.數(shù)值分析m,中國科技大學出版社,20102杜延松,沈艷君.數(shù)值分析及實驗m,科學出版社,2006.3王沫然. matlab6.0功能科學計算m,北京,電子工業(yè)出版社,2001,166-191.4薛蓮,將金生. 數(shù)值計算方法m,電子工業(yè)出版社,2007.5樓順天,于衛(wèi),閆華梁. matlab程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論