信息與計(jì)算科學(xué)-求解非線性方程組的幾種迭代方法的理論及應(yīng)用案例論文_第1頁
信息與計(jì)算科學(xué)-求解非線性方程組的幾種迭代方法的理論及應(yīng)用案例論文_第2頁
信息與計(jì)算科學(xué)-求解非線性方程組的幾種迭代方法的理論及應(yīng)用案例論文_第3頁
信息與計(jì)算科學(xué)-求解非線性方程組的幾種迭代方法的理論及應(yīng)用案例論文_第4頁
信息與計(jì)算科學(xué)-求解非線性方程組的幾種迭代方法的理論及應(yīng)用案例論文_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

[8],一般而言,牛頓迭代法的收斂性依賴于初值x0的選取,如果x0的選取偏離精確解,則牛頓迭代法可能會(huì)發(fā)散。為了防止發(fā)散,常常對迭代過程額外加上一項(xiàng)要求,用來保證函數(shù)數(shù)值的單調(diào)下降:f滿足這項(xiàng)要求的算法被稱作下山法。牛頓下山法的迭代公式如下:xk+1=xk將λ稱為下山因子,且0<λ≤1。λ值的選取滿足λ=1有關(guān)牛頓下山法的基本算法實(shí)現(xiàn)流程:首先給定x的初值x0,精度要求ε,最大迭代次數(shù)N與下山因子λ=1,設(shè)一個(gè)迭代次數(shù)初值;然后用牛頓迭代公式x1=x0-fx0f'x0,得到x12.5不動(dòng)點(diǎn)迭代法假設(shè)存在n個(gè)未知數(shù)與n個(gè)方程的某個(gè)非線性方程組化簡后為Fx=0,再將方程組更改為方便迭代的一種等價(jià)形式x=φx,有φ:D?Rn→Rn。若x*∈D滿足x*=φx*,則稱x*為函數(shù)φx的不動(dòng)點(diǎn)。所以,φx的不動(dòng)點(diǎn)就是非線性方程組再選取合適的初始向量x0∈D,將之構(gòu)成迭代公式xk+1=φxk,k=0,1不動(dòng)點(diǎn)迭代法的基礎(chǔ)定理采用的是壓縮映射原理,假設(shè)φ:D?Rn→φ把D0映入它自身,即φφ在D0上是壓縮映射,即存在常數(shù)L∈0,φ所以可得出以下的相關(guān)結(jié)論:對任意取得的x0∈D0,通過迭代公式xk+1=φxk,創(chuàng)建誤差估計(jì)式x*-xkx*-xk關(guān)于不動(dòng)點(diǎn)迭代法的局部收斂定理,設(shè)φ:D?Rn→Rn,x*∈intD是方程組Fx=0的解,在x*可微。若φ'x對于不動(dòng)點(diǎn)迭代法xk+1=φxk+1-x*xk+1-xk由于φ'x≤Lx=L≤Lxx≤??≤由于L<1,limk→∞xk-x*=0xk-x*不動(dòng)點(diǎn)迭代法需要注意等價(jià)形式的選擇,如果選擇不當(dāng),迭代結(jié)果會(huì)越來越大,不能趨近于某個(gè)極限,這樣一個(gè)發(fā)散的迭代過程是沒有價(jià)值的。不動(dòng)點(diǎn)迭代法原理見圖3所示:圖3不動(dòng)點(diǎn)迭代法簡略理解圖有關(guān)不動(dòng)點(diǎn)迭代法的基本算法實(shí)現(xiàn)流程:首先將方程fx等價(jià)的轉(zhuǎn)化稱方程x=φx,由此建立不動(dòng)點(diǎn)迭代公式x1=φx0,將給定的初值x0代入其中得到x3.幾種常用的求解非線性方程組的迭代方法數(shù)值實(shí)例3.1牛頓迭代法對于牛頓迭代法解非線性方程組的數(shù)值應(yīng)用實(shí)例,列舉了如下一個(gè)二元二階非線性方程組:2求解這個(gè)非線性方程組,給定它的初值x0=-1,y0=1,設(shè)定它的誤差精度為10-10,用C語言編程模擬它的迭代過程,最終給出該非線性方程組的近似解。誤差精度值不變,更改所給定的初值,使之更貼近方程組的解,設(shè)x0=0,y0=1。改變后的編譯的結(jié)果顯示,它經(jīng)歷了若不更改初值,將它的誤差精度值改為10-5,改變后的編譯的結(jié)果顯示,它經(jīng)歷了15次迭代,歷時(shí)不到一毫秒得到方程組的解為:x=-0.26528046490022428,y=0.802002181053570573.2簡化牛頓法用簡化牛頓迭代法計(jì)算非線性方程組,用C語言編程模擬它的迭代過程,最終給出該非線性方程組的近似解。編譯的結(jié)果顯示,它經(jīng)歷了54次迭代,歷時(shí)10毫秒得到方程組的解為:x=-0.26527251509605621,y=0.80200384302780292。同樣保持誤差精度值不變,更改所給定的初值,使之更貼近方程組的解,設(shè)x0=0,y0=1。改變后的編譯的結(jié)果顯示,它經(jīng)歷了同樣若不更改初值,將它的誤差精度值改為10-5,改變后的編譯的結(jié)果顯示,它經(jīng)歷了24次迭代,歷時(shí)不到一毫秒得到方程組的解為:x=-0.26528979753965148,3.3牛頓弦截法用牛頓弦截法計(jì)算非線性方程組,用C語言編程模擬它的迭代過程,最終給出該非線性方程組的近似解。編譯的結(jié)果顯示,它經(jīng)歷了72次迭代,歷時(shí)14毫秒得到方程組的解為:x=-0.26527251508431543,y同樣保持誤差精度值不變,更改所給定的初值,使之更貼近方程組的解,設(shè)x0=0,y0=1。改變后的編譯的結(jié)果顯示,它經(jīng)歷了同樣若不更改初值,將它的誤差精度值改為10-5,改變后的編譯的結(jié)果顯示,它經(jīng)歷了36次迭代,歷時(shí)3毫秒得到方程組的解為:x=-0.26538823618029506,3.4不動(dòng)點(diǎn)迭代法對于不動(dòng)點(diǎn)迭代法解非線性方程組的數(shù)值應(yīng)用實(shí)例,列舉了如下一個(gè)三角函數(shù)非線性方程組:3x求解這個(gè)非線性方程組,給定它的初值x0=1,y0=1,設(shè)定它的誤差精度為10-12,用C語言編程模擬它的迭代過程,最終給出該非線性方程組的近似解。編譯的結(jié)果顯示,它經(jīng)歷了27對這個(gè)三角函數(shù)非線性方程組,用牛頓迭代法對它也進(jìn)行編譯,使之與不動(dòng)點(diǎn)迭代法所產(chǎn)生的結(jié)果進(jìn)行對比,C語言牛頓迭代法編譯的結(jié)果顯示,它經(jīng)歷了58次迭代,歷時(shí)9毫秒得到方程組的解為:x=0.41516942713962368,y保持精度不變,改變初值大小,將初值設(shè)為x0=0,y0=0,改變后的編譯的結(jié)果顯示,它經(jīng)歷了繼續(xù)保持精度不變,改變初值為x0=100,y0=100,改變后的編譯的結(jié)果顯示,它經(jīng)歷了26次迭代,歷時(shí)保持初值不變,將精度改為10-5,改變后的編譯的結(jié)果顯示,它經(jīng)歷了11次迭代,歷時(shí)不到一毫秒得到方程組的解為:x=0.41516897278745452,保持初值不變,將精度改為10-20,改變后的編譯的結(jié)果顯示,它經(jīng)歷了37次迭代,歷時(shí)4毫秒得到方程組的解為:x=0.41516942713927385,3.5結(jié)果對比分析關(guān)于二元二階非線性方程組2x表1三種迭代方法結(jié)果對比表近似解x近似解y迭代次數(shù)牛頓迭代法-0.265272514922748950.8020038430510502131簡化牛頓迭代法-0.265272515096056210.8020038430278029254牛頓弦截法-0.265272515084315430.8020038431811372772保持精度不變,改變初值后三種迭代方法對比表如下所示:表2改變初值后三種迭代方法結(jié)果對比表近似解x近似解y迭代次數(shù)牛頓迭代法-0.265272514943998010.802003843046608126簡化牛頓迭代法-0.265272514897307960.8020038430782816523牛頓弦截法-0.265272515021787170.8020038431599900722保持初值不變,改變精度后三種迭代方法對比表如下所示:表3改變精度后三種迭代方法結(jié)果對比表近似解x近似解y迭代次數(shù)牛頓迭代法-0.265280464900224280.8020021810535705715簡化牛頓迭代法-0.265289797539651480.8020012656908955824牛頓弦截法-0.265388236180295060.801990258664471636關(guān)于三角函數(shù)非線性方程組3x-表4關(guān)于三角函數(shù)非線性方程組相關(guān)結(jié)果對比表近似解x近似解y迭代次數(shù)不動(dòng)點(diǎn)迭代法0.415169427139194750.336791217025349227牛頓迭代法0.415169427139623680.3367912170250437258不動(dòng)點(diǎn)迭代法初值更改接近解0.415169427139335080.3367912170252405626不動(dòng)點(diǎn)迭代法初值更改遠(yuǎn)離解0.415169427139161220.3367912170253751226不動(dòng)點(diǎn)迭代法誤差精度調(diào)大0.415168972787454520.3367915689078352411不動(dòng)點(diǎn)迭代法誤差精度調(diào)小0.415169427139273850.3367912170252879737關(guān)于二元二階非線性方程組2x2-x牛頓迭代法的迭代次數(shù)最少,牛頓弦截法的迭代次數(shù)最多。但當(dāng)保持誤差精度不變,改變它的初值,使之更加接近方程組的近似解時(shí),牛頓弦截法的迭代次數(shù)最少,牛頓迭代法的迭代次數(shù)最多,而且三種迭代算法的迭代次數(shù)都有明顯減少。當(dāng)保持初值不變,調(diào)大對它的誤差精度要求,三種迭代算法的迭代次數(shù)也有明顯減少。關(guān)于三角函數(shù)非線性方程組3x-cosx將不動(dòng)點(diǎn)迭代法與牛頓迭代法結(jié)果進(jìn)行比較,不動(dòng)點(diǎn)迭代法的迭代次數(shù)遠(yuǎn)小于牛頓迭代法的迭代次數(shù)。保持不動(dòng)點(diǎn)迭代法的誤差精度不變,改變其初值,發(fā)現(xiàn)無論怎樣改變初值大小,不動(dòng)點(diǎn)迭代法的迭代次數(shù)基本維持不變。保持不動(dòng)點(diǎn)迭代法的初值不變,將誤差精度調(diào)大,迭代次數(shù)減少,將誤差精度調(diào)小,迭代次數(shù)變大。通過以上的這些比較發(fā)現(xiàn)初值與精度的選取對求解非線性方程組有很大的影響,沒一點(diǎn)的小改動(dòng)都可能使你的結(jié)果相差甚遠(yuǎn)。降低對其精度的要求都能使得迭代次數(shù)的減少,提高精度要求也使得迭代次數(shù)的增加。當(dāng)你的初值選取越靠近精確解時(shí),你所需的迭代次數(shù)也在減少,但初值的選取對不動(dòng)點(diǎn)迭代法迭代次數(shù)的增減沒有明顯的改變。本次論文主要分成了兩個(gè)非線性方程組進(jìn)行迭代算法的研究和比較。第一組實(shí)驗(yàn)(見表1,2,3)比較了牛頓迭代法和它的兩個(gè)改進(jìn)后的迭代方法,首先假定一個(gè)初值進(jìn)行帶入編程計(jì)算,將所得結(jié)果比較后,得到結(jié)論第一次比較牛頓迭代法的迭代次數(shù)最少,計(jì)算效率最高,牛頓弦截法的迭代次數(shù)最多,計(jì)算效率最差。本次實(shí)驗(yàn)不動(dòng)點(diǎn)迭代法的迭代效率比牛頓迭代法的迭代效率更高,但是當(dāng)將它的初值結(jié)果改成最接近精確解后再計(jì)算結(jié)果,結(jié)果發(fā)生巨大轉(zhuǎn)變,牛頓弦截法迭代次數(shù)最少,計(jì)算效率最高,牛頓迭代法所用迭代次數(shù)最多,計(jì)算效率最差。之后又進(jìn)行了精度改變的實(shí)驗(yàn),當(dāng)誤差精度的要求放低后,實(shí)驗(yàn)的三個(gè)迭代算法所用迭代次數(shù)都普遍減少了,但依舊牛頓迭代法計(jì)算效率最高,簡化牛頓迭代法次之,牛頓弦截法最低。第二組實(shí)驗(yàn)(見表4)先比較了牛頓迭代法和不動(dòng)點(diǎn)迭代法的差別,然后對不動(dòng)點(diǎn)迭代法自身變量的改變進(jìn)行了比較。在第一次比較中,不動(dòng)點(diǎn)迭代法的迭代次數(shù)遠(yuǎn)小于牛頓迭代法的跌打次數(shù),效率更高。在初值與誤差精度的調(diào)整實(shí)驗(yàn)中,我發(fā)現(xiàn)在同一精度條件下,無論初值調(diào)整為多少時(shí),它的非線性方程組的解都沒有太大差別。但是,當(dāng)誤差精度調(diào)大時(shí),所用迭代次數(shù)變少,提高了計(jì)算效率,當(dāng)誤差精度調(diào)小時(shí),所用迭代次數(shù)變多,計(jì)算效率也下降了。4.總結(jié)與思考4.1內(nèi)容總結(jié)本文主要介紹的是求解非線性方程組的幾種迭代方法的理論及數(shù)值應(yīng)用案例。求解非線性方程組的迭代方法,它的基本思想就是通過一次又一次的求解,不斷逼近精確解。迭代方法例如牛頓迭代法,簡化牛頓迭代法,牛頓弦截法,牛頓下山法和另一種不動(dòng)點(diǎn)迭代法。本文簡單介紹了它們的算法流程并選取了其中幾個(gè)算法進(jìn)行C語言編程求解,再對它們的結(jié)果進(jìn)行比較分析。如今,社會(huì)在不斷進(jìn)步,科技在不斷發(fā)展,很多領(lǐng)域都需要求解非線性方程組,其中牛頓迭代法是最常用的求解方式,根據(jù)不同的情況,對牛頓迭代法進(jìn)行修飾,改進(jìn)。由上文的一些數(shù)值實(shí)例可以看出這些迭代法的一些優(yōu)勢與缺點(diǎn)。在同一初值,同一誤差精度的條件下,若是初值非常接近精確解,牛頓弦截法的迭代次數(shù)最少,計(jì)算效率最高,簡化牛頓法情況次之,牛頓迭代法計(jì)算效率最低。若是初值遠(yuǎn)離精確解,情況就會(huì)倒過來,牛頓弦截法的計(jì)算效率最低,牛頓迭代法的計(jì)算效率最高。不動(dòng)點(diǎn)迭代法與牛頓迭代法的比較過程中,不動(dòng)點(diǎn)迭代法的迭代效率要高于牛頓迭代法。在同一精度下,初值的改變不會(huì)影響不動(dòng)點(diǎn)迭代法的計(jì)算結(jié)果,然而在同一初值下,誤差精度要求變低時(shí),所用的迭代次數(shù)也會(huì)減少,相反就會(huì)增多。4.2思考除卻一些常用的求解非線性方程組的迭代方法,還有對迭代法加速,多步迭代法等。在日常生活中,不只有普通的非線性方程組,還有其他的特殊的非線性方程組,如非線性代數(shù)方程組,非線性復(fù)數(shù)方程組等。對這些求解問題的研究,無論是在理論還是在實(shí)際應(yīng)用中都是十分重要的。當(dāng)在生活中遇到這種數(shù)值問題時(shí),首先要選取適當(dāng)?shù)那蠼夥绞?,然后再不斷地運(yùn)算驗(yàn)證它的可行性,必要時(shí)還需要改變它的參數(shù)來比較結(jié)果。每一個(gè)問題的解決都需要經(jīng)過成千上萬次的計(jì)算。本次論文的編寫,讓我更加深入的了解了數(shù)學(xué)的世界,懂得了計(jì)算機(jī)與數(shù)學(xué)相輔相成的關(guān)系。同一個(gè)非線性方程組,所使用的求解方式不同,所設(shè)定的變量不同,得到的結(jié)果也是天差地別,使用C語言來編程,能很方便調(diào)試每個(gè)不一樣之處?,F(xiàn)如今,科技在飛速發(fā)展,人們對數(shù)學(xué)的研究也越來越深,世界因?yàn)閿?shù)學(xué)而精彩。參考文獻(xiàn)李慶揚(yáng),莫孜中,祁力群等著.非線性方程組的數(shù)值解法[M].北京:科學(xué)出版社,1987.J.M.奧加特,W.C.萊因博爾特著.多元非線性方程組迭代解法[M].北京:科學(xué)出版社,1983.馮果忱.非線性方程組迭代解法[M].上海:上??茖W(xué)技術(shù)出版社,1989.黃象鼎,曾鐘剛,馬亞南.非線性數(shù)值分析的理論與方法[M].武漢:武漢大學(xué)出版社,2004.代璐璐,檀結(jié)慶.兩種解非線性方程組的四階迭代方法[J].數(shù)值計(jì)算與計(jì)算機(jī)應(yīng)用,2012.陳小惠,唐爍.解非線性方程的一類多參數(shù)迭代格式[J].合肥工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2011.劉惠牲,張立杰.關(guān)于非線性方程組一種Newton型解法的一個(gè)注記[J].新疆工學(xué)院學(xué)報(bào),1998.吳淦洲.求解非線性方程組的改進(jìn)牛頓法[J].茂名學(xué)院學(xué)報(bào),2009.趙建興,李耀堂.解非線性方程組的Newton-Simpson方法的收斂性定理的修正[J].昆明學(xué)院學(xué)報(bào),2009.致謝因?yàn)橐咔樵颍髮W(xué)四年的最后一學(xué)期沒能在學(xué)校度過就要畫上一個(gè)句號了,我即將正式畢業(yè),告別我的學(xué)校生活,踏入社會(huì)?;厥走@幾個(gè)月寫論文的過程,在這里,我要感謝那些對我學(xué)習(xí)和生活上進(jìn)行巨大幫助的人。首先,我要感謝我的指導(dǎo)老師蔣濤蔣老師,蔣老師在一開始分組的時(shí)候就依次耐心地講解每個(gè)人畢業(yè)論文題目的一些注意點(diǎn)和要求,并在這幾個(gè)月論文編寫的過程中能能不辭辛勞地及時(shí)解答我們的困惑與難題。當(dāng)我在編寫材料懈怠懶惰時(shí),也是蔣老師指正批評我,讓我能及時(shí)地改正悔悟。在這里我要對老師說一聲抱歉和感謝。最后,我要感謝我的家人和朋友,是他們給予了我許多精神和物質(zhì)上的支持,促使我能更好的完成我的論文,面對我的一些煩人的要求,能心平氣和地對我提供幫助。感謝你們的幫助,我會(huì)一直記得你們的支持,理解與幫助,再次感謝你們所有人。附錄牛頓迭代法代碼:#include<stdio.h>#include<math.h>#include<time.h>#definetol-10//精度/*方程組及一階導(dǎo)數(shù)*/doublefunc1(doublex,doubley){ return2*x*x-x-3*y+2;}doublefunc2(doublex,doubley){ returnx*x+3*y*y-2;}doublefunc11(doublex,doubley){ return4*x-4;}doublefunc21(doublex,doubley){ return2*x+6*y;}intmain(void){ intbegintime,endtime;//定義開始,結(jié)束時(shí)間 unsignedintc_times=0;//定義迭代次數(shù)初值 doubler_x,r_y,p_x,p_y;//定義變量 doublen_tol=1; p_x=-1;//給定方程組初值 p_y=1; n_tol=pow((double)10,tol);//誤差界限 printf("%s\t%s\t%s\n","迭代次數(shù)","X","Y");//輸出列號 /*牛頓迭代法*/ begintime=clock();//開始計(jì)時(shí) for(c_times=1;c_times<1000;c_times++){//進(jìn)行for循環(huán),每執(zhí)行一次以下程序迭代次數(shù)加一 r_x=p_x-func1(p_x,p_y)/func11(p_x,p_y);//牛頓迭代法迭代公式 r_y=p_y-func2(p_x,p_y)/func21(p_x,p_y); printf("%d\t%-.20lg\t%-.20lg\n",c_times,r_x,r_y);//輸出每次迭代后的x,y值和迭代次數(shù) if(((p_x-r_x)>0?p_x-r_x:r_x-p_x)<n_tol)//與誤差精度比較,若小于則退出循環(huán) break; p_x=r_x;//將新的x值賦予舊的x值,進(jìn)行數(shù)值替換 p_y=r_y;//將新的y值賦予舊的y值,進(jìn)行數(shù)值替換 } printf("迭代次數(shù):%d\n",c_times-1);//輸出該算法所需的迭代次數(shù) printf("方程組的解:\n");//輸出“方程組的解:” printf("%.20lg\t%.20lg\n",r_x,r_y);//輸出x,y具體數(shù)值 endtime=clock();//結(jié)束計(jì)時(shí)printf("\n\nRunningTime:%dms\n",endtime-begintime);//輸出程序運(yùn)行時(shí)間 getchar();//讓程序暫停 return0;}簡化牛頓迭代法代碼:#include<stdio.h>#include<math.h>#include<time.h>#definetol-10//精度/*方程組及一階導(dǎo)數(shù)*/doublefunc1(doublex,doubley){ return2*x*x-x-3*y+2;}doublefunc2(doublex,doubley){ returnx*x+3*y*y-2;}doublefunc11(doublex,doubley){ return4*x-4;}doublefunc21(doublex,doubley){ return2*x+6*y;}intmain(void){ intbegintime,endtime;//定義開始,結(jié)束時(shí)間 unsignedintc_times=0;//定義迭代次數(shù)初值 doubler_x,r_y,p_x,p_y;//定義變量 doublen_tol=1; p_x=-1;//給定方程組初值 p_y=1; n_tol=pow((double)10,tol);//誤差界限 printf("%s\t%s\t%s\n","迭代次數(shù)","X","Y");//輸出列號 /*簡化牛頓迭代法*/ begintime=clock();//開始計(jì)時(shí) for(c_times=1;c_times<1000;c_times++){//進(jìn)行for循環(huán),每執(zhí)行一次迭代次數(shù)加一 r_x=p_x-func1(p_x,p_y)/func11(-1,1);//簡化牛頓迭代法迭代公式保持導(dǎo)數(shù)初值不變 r_y=p_y-func2(p_x,p_y)/func21(-1,1); printf("%d\t%-.20lg\t%-.20lg\n",c_times,r_x,r_y);//輸出每次迭代后的x,y值和迭代次數(shù) if(((p_x-r_x)>0?p_x-r_x:r_x-p_x)<n_tol)//與誤差精度比較,若小于則退出循環(huán) break; p_x=r_x;//將新的x值賦予舊的x值,進(jìn)行數(shù)值替換 p_y=r_y;//將新的y值賦予舊的y值,進(jìn)行數(shù)值替換 } printf("迭代次數(shù):%d\n",c_times-1);//輸出該算法所需的迭代次數(shù) printf("方程組的解:\n");//輸出“方程組的解:” printf("%.20lg\t%.20lg\n",r_x,r_y);//輸出x,y具體數(shù)值 endtime=clock();//結(jié)束計(jì)時(shí)printf("\n\nRunningTime:%dms\n",endtime-begintime);//輸出程序運(yùn)行時(shí)間 getchar();//讓程序暫停 return0;} 牛頓弦截法代碼:#include<stdio.h>#include<math.h>#include<time.h>#definetol-10//精度/*方程組及一階導(dǎo)數(shù)*/doublefunc1(doublex,doubley){ return2*x*x-x-3*y+2;}doublefunc2(doublex,doubley){ returnx*x+3*y*y-2;}doublefunc11(doublex,doubley){ return4*x-4;}doublefunc21(doublex,doubley){ return2*x+6*y;}intmain(void){intbegintime,endtime;//定義開始,結(jié)束時(shí)間 unsignedintc_times=0;//定義迭代次數(shù)初值 doubler_x,r_y,p_x,p_y,a_x,a_y;//定義變量 doublen_tol=1; p_x=-1;//給定方程組初值 p_y=1; n_tol=pow((double)10,tol);//誤差界限 printf("%s\t%s\t%s\n","迭代次數(shù)","X","Y");//輸出列號/*牛頓弦截法*/ begintime=clock();//開始計(jì)時(shí) r_x=p_x-func1(p_x,p_y)/func11(p_x,p_y);//牛頓迭代法迭代公式進(jìn)行一次迭代r_y=p_y-func2(p_x,p_y)/func21(p_x,p_y); c_times++;//迭代次數(shù)加一 printf("%d\t%-.20lg\t%-.20lg\n",c_times,r_x,r_y);//輸出迭代后的x,y值和迭代次數(shù) for(c_times=2;c_times<1000;c_times++){//進(jìn)行for循環(huán),每執(zhí)行一次以下程序迭代次數(shù)加一 a_x=r_x-(func1(r_x,r_y))*(r_x-p_x)/(func1(r_x,r_y)-func1(p_x,p_y));//牛頓弦截法迭代公式 a_y=r_y-(func2(r_x,r_y))*(r_y-p_y)/(func2(r_x,r_y)-func2(p_x,p_y)); printf("%d\t%-.20lg\t%-.20lg\n",c_times,r_x,r_y);//輸出每次迭代后的x,y值和迭代次數(shù) if(((a_x-r_x)>0?a_x-r_x:r_x-a_x)<n_tol)//與誤差精度比較,若小于則退出循環(huán) break; p_x=r_x;//進(jìn)行數(shù)值替換 p_y=r_y; r_x=a_x; r_y=a_y; } printf("迭代次數(shù):%d\n",c_times-1);//輸出該算法所需的迭代次數(shù) printf("方程組的解:\n");//輸出“方程組的解:” printf("%.20lg\t%.20lg\n",r_x,r_y);//輸出x,y具體數(shù)值 endtime=clock();//結(jié)束計(jì)時(shí)printf("\n\nRunningTime:%dms\n",endtime-begintime);//輸

溫馨提示

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

最新文檔

評論

0/150

提交評論