資源描述:
《非線性方程求根》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、非線性方程求根系別計算機(jī)系專業(yè)計算機(jī)科學(xué)與技術(shù)學(xué)號200808111028姓名楊輝非線性方程求根摘要隨著科學(xué)技術(shù),生產(chǎn)力經(jīng)濟(jì)的發(fā)展,在科學(xué)與工程計算中存在著大量方程求根問題,例如貸款購房問題,工廠的最佳訂貨問題等都需要求解一類非線性方程的根,而本文就針對這些求根問題提出了解決方案,本文利用牛頓迭代法來結(jié)決方程的求根問題.首先根據(jù)實際問題列出數(shù)學(xué)模型,確定變量,給出各個條件及相關(guān)函數(shù);然后對建立的模型進(jìn)行具體分析和研究,選擇合適的求解方法;編寫函數(shù)的程序,用計算機(jī)求出方程的解,通過所求解分析具體情況.關(guān)鍵詞:
2、非線性方程,牛頓迭代法,Matlab1緒論1.1非線性方程求根的背景牛頓迭代法是牛頓在17世紀(jì)提出的一種求解方程.多數(shù)方程不存在求根公式,從而求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要.而在各種科學(xué)和工程計算中往往要用到非線性方程組的求解,而牛頓法又是最基礎(chǔ)的迭代法,在各種計算力學(xué)、控制工程等領(lǐng)域中發(fā)揮了不可代替的作用.而在數(shù)值計算中,非線性方程組的求解同樣具有重要意義.隨著計算機(jī)技術(shù)的成熟和高速發(fā)展,對于非線性方程求根問題出現(xiàn)了大量的數(shù)學(xué)軟件(如MATLAB,Matheamatica
3、,Maple,SAS,SPSSD等),計算機(jī)已經(jīng)成為工程師應(yīng)用數(shù)學(xué)解決工程問題的主要運算工具.同時,工程專業(yè)的學(xué)生對數(shù)學(xué)教育的需求重點正在從手工演繹和運算能力的培養(yǎng)轉(zhuǎn)變到結(jié)合計算機(jī)軟件進(jìn)行建模、求解和論證能力的培養(yǎng).本文采用Matlab作為軟件平臺,介紹了非線性方程求根的內(nèi)容.1.1非線性方程求根的目的為了推動科學(xué)的進(jìn)步,能夠很簡便的完成各種工程計算,非線性方程組的求解方法以其獨有的方法解決了各種計算.非線性方程組的求解正是為了這個目的才廣泛被人們應(yīng)用,此文也將給出非線性方程組求解的實際應(yīng)用.1.2非線性方
4、程求根的內(nèi)容解非線性方程的主要算法是迭代法,如fsolve、二分法、牛頓迭代法等.迭代法是從已知的解的初始近似值(簡稱初值)開始,利用某種迭代格式求得一近似值序列逐步逼近于所求的解α(稱為不動點).這一方法是否成功取決于三個因素,首先應(yīng)與同解,其次初值的選取是否合適,一般要與真解靠近,最后也是最關(guān)鍵的是迭代序列是否收斂,為了保證收斂性,在真解附近應(yīng)有否則迭代序列可能發(fā)散.最基本的迭代法是Newton迭代法,其迭代格式為.從幾何上說為用在出切線代替求得的解,所以也稱為切線法,當(dāng)初值與真值足夠靠近,Newton
5、迭代法收斂.對于單根,Newton法收斂速度很快;對于重根,收斂較慢.牛頓迭代法的大概算法為:給定初始值,為根的容許誤差,為的容許誤差,為迭代次數(shù)的容許值.①如果或迭代次數(shù)大于,則算法失敗,結(jié)束;否則執(zhí)行②②計算③若或,則輸出,程序結(jié)束;否則執(zhí)行④④令,轉(zhuǎn)向①下面給出了Newton迭代法的計算程序.functionx=newton(fname,dfname,x0,e)%用途:Newton迭代法解非線性方程f(x)=0%格式:x=nanewton(fname,dfname,x0,e)x返回數(shù)值解,%fname
6、和dfname分別表示f(x)及其導(dǎo)函數(shù)%f'(x),x0為迭代初值,e精度要求(默認(rèn)為1e-4)ifnargin<4,e=1e-4;%精度默認(rèn)為1e-4endx=x0;x0=x+2*e;%使while成立,進(jìn)入while后x0得到賦值whileabs(x0-x)>ex0=x;x=x0-feval(fname,x0)/feval(dfname,x0);End2牛頓迭代法的實現(xiàn)及應(yīng)用2..1Newton迭代法具體例子的實現(xiàn)用Newton迭代法解方程在1.5附近的根.解:當(dāng)時,,即恒正,所以根在[0,2].我們
7、先用圖解法找初值,在用Newton法程序newton.m求解.fun=inline('x^3+x^2-3*x-3');%就是定義一個內(nèi)置函數(shù),本質(zhì)上說跟function干的是一樣的事,只不過它可以直接內(nèi)嵌在命令行里,不用另外單獨定義function.fplot(fun,[0,2]);gridon;圖2.1的函數(shù)圖像由圖可知方程有唯一正根在[1.6,1.8]之間,我們?nèi)〕踔?.5代入Newton程序中.dfun=inline('3*x^2+2*x-3');formatlong;newton(fun,dfun,
8、1.5,1e-4);formatshort;ans=1.73205080756888而用Matlab本身的函數(shù)fzero求出來的結(jié)果為:formatlong;fzero(inline('x^3+x^2-3*x-3'),1.5);formatshortans=1.73205080756888下面用牛頓迭代法解決一些實際問題2.2應(yīng)用牛頓法解決購房貸款利率問題住房是居民消費的一個主要部分,大部分人選擇銀行按揭貸款,然