版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 題 目:非線性方程求解算法的程序設(shè)計及比對</p><p><b> 摘要</b></p><p> 由于五次及其以上代數(shù)方程式大多不能用代數(shù)公式求解非線性方程的解.或者求解非常復(fù)雜。而在工程和科學(xué)技術(shù)中許多問題常常歸結(jié)為求解非線性方程式問題.所以需要研究非線性方程的數(shù)值解法的問題是非常重要.來適應(yīng)我們社會的需要.</p>
2、<p> 本課題主要介紹非線性方程的數(shù)值解法是直接從方程出發(fā),逐步縮小根的存在區(qū)間,或逐步將根的近似值精確化,直到滿足問題對精度的要求,主要的方法有二分法,迭代法,牛頓法,弦截法等。并寫出這幾種非線性方程的數(shù)值解法的算法和程序及其優(yōu)缺點和計算條件.</p><p> 關(guān)鍵詞 二分法;牛頓迭代法;弦截法法;程序框架圖;C語言編程
3、 </p><p><b> 目錄</b></p><p><b> 引言1</b></p><p> 第一章 非線性方程求解算法2</p><p> §1.1
4、二分法2</p><p> §1.1.1 二分法的簡介2</p><p> §1.1.2 二分法的原理2</p><p> §1.1.3 二分法的算法3</p><p> §1.2 不動點迭代法4</p><p> §1.2.1不動點迭代法的簡介4
5、</p><p> §1.2.2不動點迭代法的幾何意義4</p><p> §1.2.3不動點迭代法的算法5</p><p> §1.3 牛頓迭代法6</p><p> §1.3.1牛頓迭代法的簡介6</p><p> §1.3.2牛頓迭代法的原理6
6、</p><p> §1.3.3牛頓迭代法的算法7</p><p> §1.4 弦截法8</p><p> §1.4.1弦截法的簡介8</p><p> §1.4.2弦截法的原理8</p><p> §1.4.3弦截法的算法9</p>
7、<p> 第二章 非線性方程求解的C語言算法對比11</p><p> §2.1 C語言求解非線性方程的根11</p><p> §2.1.1構(gòu)造非線性方程迭代公式11</p><p> §2.1.2計算迭代公式11</p><p> §2.2 C語言算法比較分析14<
8、;/p><p><b> 參考文獻16</b></p><p><b> 附錄A17</b></p><p><b> 附錄B18</b></p><p><b> 引言</b></p><p> 代數(shù)方程求根問題是一個
9、古老的數(shù)學(xué)問題,早在16世紀(jì)就得到了三次、四次方程的求根公式.一般(五次及其以上)代數(shù)方程式不能用代數(shù)公式求解.在工程和科學(xué)技術(shù)中許多問題常常歸結(jié)為求解非線性方程式問題.因此,需要研究用數(shù)值方法求得滿足一定精度的代數(shù)方程式的近似解.</p><p> 根的數(shù)值方法,其中是連續(xù)的稱為非線性方程,此類方程除少數(shù)情形外,只能求近似解.</p><p> 例如,,其根為 像這種方程是可以直接的
10、方法求出解析解.但對于對于多項式方程</p><p> 當(dāng)時,就不能得到解析解.對于更一般的情況(如超越方程)</p><p> 就更難求得解析解了,更就不存在根的解析表達式,在科學(xué)研究和科學(xué)計算中常常碰到非線性方程求解問題.非線性方程的解一般不能解析求出.所以數(shù)值解法顯得非常重要,而數(shù)值解法在實際中的實現(xiàn)則更為重要.</p><p> 本課題主要是應(yīng)用數(shù)值解
11、法結(jié)合計算機語言來求解非線性方程的解,其中包括的數(shù)值解法有二分法、迭代法、牛頓法、弦截法等.主要用的計算機語言C語言、MATLAB等.正好符合用計算機語言來處理復(fù)雜計算量的數(shù)學(xué)問題,以此來分析幾種非線性數(shù)值解法的優(yōu)缺點,計算量的大小.來選出更加適合的計算方法.</p><p> 第一章 非線性方程求解的算法</p><p><b> §1.1 二分法</b&g
12、t;</p><p> §1.1.1 二分法的簡介</p><p> 二分法又稱二分區(qū)間法,是求解方程的近似根的一種常用的簡單方法.</p><p> 設(shè)函數(shù)在閉區(qū)間上連續(xù),且,根據(jù)連續(xù)函數(shù)的性質(zhì)可知,在內(nèi)必有實根,稱區(qū)間為有根區(qū)間.為明確起見,假定方程在區(qū)間內(nèi)有惟一實根.二分法的基本思想是: 首先確定有根區(qū)間,將區(qū)間二等分, 通過判斷的符號, 逐步
13、將有根區(qū)間縮小, 直至有根區(qū)間足夠地小, 便可求出滿足精度要求的近似根.</p><p> §1.1.2二分法的原理</p><p> 設(shè)方程在區(qū)間內(nèi)有根,二分法就是逐步收縮有根區(qū)間,最后得出</p><p> 圖 1.1 二分法原理圖</p><p> 所求的根,如上圖所示,我們可以寫出一下內(nèi)容.</p>&
14、lt;p> (1) 輸入有根區(qū)間的端點及預(yù)先給定的精度;</p><p><b> (2) 計算 ;</b></p><p> (3) 若,則;否則;</p><p> (4) 若,則輸出方程滿足精度要求的根,計算結(jié)束;否則轉(zhuǎn)(2).繼續(xù)執(zhí)行前面的步驟.</p><p> y
15、 n</p><p> 圖 1.2 二分法的程序框架圖</p><p> §1.1.3 二分法的算法</p><p> 給定區(qū)間,求在該區(qū)間上的根.</p><p> 輸入: a和b; 容許誤差 eps;對分次數(shù) k</p><p><b> 輸出: 近似根.<
16、/b></p><p> Step 1 Set k = 0 ;</p><p> Step 2 判斷 繼續(xù).否則,STOP輸出錯誤;</p><p> Step 3 Do ; 開始steps 4-6</p><p><b> Step 4 ;</b></p><p&
17、gt; Step 5 k++ ;</p><p> If , Set ; </p><p> Else Set ;</p><p> Step 6 while(fabs(b-a)>eps);</p><p> Step 7 Output the solution of equation: ; STOP.<
18、;/p><p> §1.2 不動點迭代法</p><p> §1.2.1 不動點迭代法的簡介</p><p> 迭代法的基本思想是逐次逼近,即首先給出方程的根的一個近似初始值,然后反復(fù)使用迭代公式校正這個初始值,逐步精確化,直到滿足預(yù)先給出的精度要求為止.</p><p> 首先設(shè)法把方程化為下列等價形式(稱為迭代函數(shù)
19、) </p><p><b> (1-1)</b></p><p> 然后按式(1-1)構(gòu)造迭代公式 </p><p> (1-2) </p><p> 在有根區(qū)間上取一點作為方程根的初始近似根,代入式(1-2)右端,求得,再把作為預(yù)測值,進一
20、步得到,如此反復(fù)進行下去,得到一個近似根的序列</p><p> 如果迭代序列收斂于,則當(dāng)連續(xù)時,便是方程的根.</p><p> 對預(yù)先給定的精度要求,只要某個是滿足,即可結(jié)束計算并取. </p><p> §1.2.2 不動點迭代法的幾何意義</p><p> 用迭代法求方程在區(qū)間內(nèi)的實根.可以寫出一下下幾種迭代格式,用
21、Mathematica 畫出它們的圖形,以此來觀察它們的幾何意義.</p><p> 圖 1.3 迭代幾何圖</p><p> 圖 1.4 迭代幾何圖</p><p> 圖 1.5 迭代幾何圖</p><p> §1.2.3 不動點迭代法的算法</p><p> 由不動點迭代法程序框架圖(見附錄A)
22、寫出一下迭代算法</p><p> 給定初始近似值 ,求的解.</p><p> 輸入: 初始近似值; 容許誤差TOL; 最大迭代次數(shù)Nmax.</p><p> 輸出: 近似解或失敗信息.</p><p> Step 1 Set k = 1;</p><p> Step 2 While ( k Nm
23、ax) ; do steps 3-6</p><p> Step 3 Set ; /* 計算 x */</p><p> Step 4 If < TOL then Output (x); /*成功*/</p><p><b> STOP;</b></p><p> Step 5 Set k+
24、+;</p><p> Step 6 Set ; /* 更新 */</p><p> Step 7 Output (The method failed after Nmax iterations); /*不成功 */</p><p><b> STOP.</b></p><p> §1.
25、3 牛頓迭代法</p><p> 1.3.1 牛頓迭代法的簡介</p><p> 簡單的迭代法是用直接的方法從原方程中隱含地解出,從而確定出.而牛頓迭代法是用一種間接而特殊的方法來確定.牛頓迭代法的基本思想是,將非線性方程的求根問題歸結(jié)為計算一系列線性方程的根.</p><p> 設(shè)是方程的一個近似根,將在附近作一階泰勒展開,則有,于是方程可近似表示成.<
26、;/p><p> 這是一個線性方程式,設(shè),則上式的解為</p><p><b> , </b></p><p> 取作為原方程的新的近似根,即令</p><p> 則稱上式為牛頓迭代公式.</p><p> §1.3.2 牛頓迭代法的原理</p><p>
27、 y y=f(x)</p><p><b> Pk</b></p><p><b> Pk+1</b></p><p><b> Pk+2</b></p><p> x* xk+2 xk+1 xk x</
28、p><p> 圖 1.6 牛頓迭代法程幾何意義圖</p><p> 從圖 1.6可以看出,方程的根是曲線與軸交點的橫坐標(biāo),設(shè)是根的某個近似值,由此來求出過曲線(圖 1.7)的橫坐標(biāo)為的點引切線交軸于, 并將其作為新的近似值,重復(fù)上述過程,我們可以得到可見一次次用切線方程來求解方程的根,所以亦稱為牛頓切線法.</p><p><b> N</b>
29、;</p><p><b> Y</b></p><p> 圖 1.7 牛頓迭代法程序框架圖</p><p> §1.3.3 牛頓迭代法的算法</p><p> 從圖 1.7流程圖,寫出一下牛頓算法,并且用c語言編寫運算程序.</p><p> 用Newton法求方程一個解
30、.</p><p> 輸入 初始值;誤差容限TOL;最大迭代次數(shù).</p><p> 輸出 近似解或失敗信息.</p><p> Setp 1 .</p><p> Setp 2 對 做Setp 3-4 .</p><p> Setp 3 .</p><p>
31、Setp 4 若,則輸出,停機,否則.</p><p> Setp 5 輸出(‘Method failed’);</p><p><b> 停機</b></p><p> 在第4步中的迭代終止準(zhǔn)則可用</p><p><b> §1.4 弦截法</b></p>
32、<p> §1.4.1 弦截法的簡介</p><p> 弦截法也稱為割線法.如果函數(shù)求導(dǎo)困難,則割線較切線更為實用.牛頓迭代法雖然具有收斂速度快的優(yōu)點,但每迭代一次都要計算導(dǎo)數(shù),比較復(fù)雜時,不僅每次計算帶來很多不便,而且還可能十分麻煩,如果用不計算導(dǎo)數(shù)的迭代方法,往往只有線性收斂的速度.弦截法便是一種不必進行導(dǎo)數(shù)運算的求根方法.弦截法在迭代過程中不僅用到前一步處的函數(shù)值,而且還使用處的函
33、數(shù)值來構(gòu)造迭代函數(shù),這樣能提高迭代的收斂速度.為避免計算函數(shù)的導(dǎo)數(shù),使用差商</p><p> 替代牛頓公式中的導(dǎo)數(shù),便得到迭代公式</p><p> 稱為弦截迭代公式,相應(yīng)的迭代法稱為弦截法.</p><p> §1.4.2 弦截法的原理</p><p> 弦截法的幾何意義(如圖1.8)曲線上兩點,的割線來代替曲線,然后用
34、此割線與x軸交點的橫座標(biāo)作為方程的近似根再過P1點和作割線求出,再過P2點和點作割線求出,余此類推,當(dāng)收斂時可求出滿足精度要求的.</p><p><b> P1 </b></p><p><b> y=f(x)</b></p><p> x0 x2 x3 x1&
35、lt;/p><p><b> x* </b></p><p><b> P3 </b></p><p><b> P0 P2</b></p><p> 圖 1.8 弦截法幾何意義圖</p><p> 圖 1.9 弦截法程序框架圖<
36、/p><p> §1.4.3 弦截法的算法</p><p> 由圖 1.9 弦截法的程序框架圖,寫出如下算法:</p><p> 用弦截法求方程的一個解.</p><p> 輸入 初始值,,誤差容限TOL;最大迭代次數(shù)m.</p><p> 輸出 近似解,或失敗信息.</p>&l
37、t;p> Setp 1 ;</p><p><b> ;</b></p><p><b> ;</b></p><p><b> ;</b></p><p> Setp 2 對做Setp3,4.</p><p> Setp 3
38、 .</p><p> Setp 4 若,則輸出,停機.</p><p><b> 否則;</b></p><p><b> ;</b></p><p><b> ;</b></p><p><b> ;</b><
39、/p><p> Setp 5 輸出(”Method failed”);</p><p><b> 停機.</b></p><p> 第二章 非線性方程求解的C語言算法對比</p><p> §2.1 C語言求解非線性方程的根</p><p> §2.1.1 構(gòu)造非線性
40、方程迭代公式</p><p> 根據(jù)上一章的理論知識,本章進行數(shù)據(jù)計算,首先構(gòu)造幾種非線性方法解法的迭代公式,舉下面的非線性方程為例,寫出幾種算法的迭代格式.并以此來計算它們各自的結(jié)果,來為下一小節(jié)的算法比較作為例證,所以本節(jié)的計算算法的正確與否決定下一節(jié)結(jié)論的正確與否.所以我們首先用數(shù)學(xué)軟件Mathematica 5來求取方程(2-1)在的根,用來比較我們算法正確與否.</p><p>
41、; 用Mathematica 5求解方程的根,得到四個根,取的根</p><p> 例2.1 方程在中的根</p><p><b> 二分法:</b></p><p><b> ?。?-1)</b></p><p><b> 不動點迭代法:</b></p>
42、<p><b> ?。?-2)</b></p><p><b> 牛頓迭代法:</b></p><p><b> ?。?-3)</b></p><p><b> 弦截法:</b></p><p><b> ?。?-4)</b
43、></p><p> §2.1.2 計算迭代公式</p><p> 下面用二分法的程序來(程序詳見附錄B的二分法程序)計算(2-1)式的在的根,誤差度在,初始值計算把結(jié)果寫在表 2-1</p><p> 表 2-1 二分法的計算結(jié)果</p><p> 由表 2-1二分法的最后結(jié)果與比較,我們可以看出與Mathemati
44、ca 5求得結(jié)果在誤差范圍之內(nèi)幾乎一致,所以此算法是正確的,是可以應(yīng)用到下一小節(jié),進行算法比較.</p><p> 下面用不動點迭代法的C語言的程序來(程序詳見附錄B不動點迭代法C語言程序)計算(2-2)式的在的根,誤差度在,初始迭代值為,計算把結(jié)果寫在表 2-2.計算完成后與進行比較,來得出算法的正確與否.</p><p> 表 2-2 不動點迭代的計算結(jié)果</p>&
45、lt;p> 由表 2-2不動點迭代法的最后結(jié)果與比較,我們可以看出與Mathematica 5求得結(jié)果在誤差范圍之內(nèi)幾乎一致,所以此算法是正確的,是可以應(yīng)用到下一小節(jié),進行算法比較.</p><p> 下面用牛頓迭代法的C語言的程序來(程序詳見附錄B牛頓迭代法C語言程序)計算(2-3)式的在的根,誤差度在,初始迭代值為,計算把結(jié)果寫在表 2-3.計算完成后與進行比較,來得出算法德正確與否.</p&
46、gt;<p> 表 2-3 牛頓迭代的計算結(jié)果</p><p> 由表 2-3牛頓迭代法的最后結(jié)果與比較,我們可以看出與Mathematica 5求得結(jié)果在誤差范圍之內(nèi)幾乎一致,所以此算法是正確的,是可以應(yīng)用到下一小節(jié),進行算法比較.</p><p> 下面用弦截法的C語言的程序來(程序詳見附錄B弦截法C語言程序)計算(2-4)式的在的根,誤差度在,初始迭代值為,,計算
47、把結(jié)果寫在表 2-4.計算完成后與進行比較,來得出算法的正確與否.</p><p> 表 2-4 弦截法的計算結(jié)果</p><p> 由表 2-4弦截法迭代法的最后結(jié)果與比較,我們可以看出與Mathematica 5求得結(jié)果在誤差范圍之內(nèi)幾乎一致,所以此算法是正確的,是可以應(yīng)用到下一小節(jié),進行算法比較.</p><p> §2.2 C語言算法比較分
48、析</p><p> 通過上一小節(jié)的計算,本節(jié)來分析分析幾種算法的優(yōu)缺點,以便以后更好的應(yīng)用到學(xué)習(xí)和工作中,做到學(xué)以致用,也是這次課題的主旨,活學(xué)活用.</p><p> 觀察表 2-5的計算結(jié)果,可以直觀的看出來,牛頓法,弦截法,不動點迭代法的收斂速率差不多,但二分法明顯落后前三種收斂速率,所以得到一下結(jié)論.</p><p> 1.二分法是電子計算機上一種常
49、用的算法,它的具有簡單和易操作的優(yōu)點,缺點是收斂較慢,且不能求重根. </p><p><b> 2.牛頓迭代法</b></p><p> 牛頓法優(yōu)點:牛頓迭代法具有至少平方收斂的速度,所以在迭代過程中只要迭代幾次就會得到很精確的解.這是牛頓迭代法比簡單迭代法優(yōu)越的地方.特別是當(dāng)?shù)c充分靠近精確解時.</p><p> 牛頓法的缺點:選
50、定的初值要接近方程的解,否則有可能得不到收斂的結(jié)果.再者,牛頓迭代法計算量比較大.每次迭代要計算一次導(dǎo)數(shù)值,當(dāng)表達式復(fù)雜或無明顯表達式時求解困難.對重根收斂速度較慢(線性收斂).</p><p> 牛頓法是現(xiàn)在最常用的迭代方法.</p><p> 3. 弦截法的收斂階雖然低于Newton法,但是迭代一次只要計算一次,不需要計算導(dǎo)數(shù)值,所以效率高,實際問題中經(jīng)常使用. 弦截法比牛頓迭代法
51、收斂速度稍慢,但它的計算量比牛頓迭代法小,特別當(dāng)都函數(shù)的導(dǎo)數(shù)的計算比較復(fù)雜時,弦截法更顯示了它的優(yōu)越性.</p><p> 表 2-5 迭代結(jié)果</p><p> 二分法是逐步將含根區(qū)間分半,主要用來求實根;迭代法是一種逐次逼近的方法,起著把根的精確值一步一步算出來的作用;牛頓法具有較快的收斂速度,但對初值選取要求較高.弦截法避開了導(dǎo)數(shù)的計算,具有超線性的收斂速度,每計算一步,要用到前
52、面兩步的信息. </p><p><b> 參考文獻</b></p><p> [1] 林成森.數(shù)值計算方法.北京:科學(xué)出版社.2005年</p><p> [2] 金聰.熊盛武.數(shù)值分析.武漢:武漢理工大學(xué)出版社.2003年</p><p> [3] 顏暉 .C語言程序設(shè)計.北京:高等教育出版社.2008年
53、</p><p> [4] 張立科.MATLAB 7.0 應(yīng)用.北京:人民郵電出版社.2006年</p><p> [5] 賈得彬.數(shù)值計算方法.北京:水利水電出版社.2007年</p><p> [6] 李慶揚,王能超,易大義.數(shù)值分析基礎(chǔ).北京:清華大學(xué)出版,2008年.</p><p> [7] 徐士良.數(shù)值方法與計算機實現(xiàn).北
54、京:清華大學(xué)出版社.2006年.</p><p><b> 附錄 A </b></p><p> 本附錄包含不動點迭代的流程圖.</p><p><b> 附錄 B</b></p><p> 本附錄 含二分法,不動點迭代,牛頓法,弦截法的的C語言計算程序.</p><p
55、><b> 二分法C語言程序</b></p><p> #include <math.h></p><p> #define eps 0.0001 /* 容許誤差 */</p><p> double jisuan(double x)</p><p><b> { </b&g
56、t;</p><p> return pow(x,4)+2*x*x-x-3 ;</p><p><b> }</b></p><p><b> main()</b></p><p> { double a,b,y,x,h,j;</p><p><b>
57、int k=0;</b></p><p> printf("a=");</p><p> scanf("%lf",&a);</p><p> printf("b=");</p><p> scanf("%lf",&b);<
58、/p><p> if(jisuan(a)*jisuan(b)>=0) /* 判斷是否符合二分法使用的條件 */</p><p> { printf("Not bisect of bisect"); return; }</p><p><b> do</b></p><p> {
59、x=(a+b)/2;</p><p><b> k++;</b></p><p> j=jisuan(x);/* f(x)的結(jié)果 */</p><p> if(jisuan(a)*jisuan(x)<0) /* 如果f(a)*f(x)<0,則根在區(qū)間的左半部分 */</p><p><b>
60、; b=x;</b></p><p> else /* 否則根在區(qū)間的右半部分 */</p><p><b> a=x;</b></p><p> h=fabs(b-a);</p><p> printf("k=%2d , a=%lf , b=%lf , x=%lf , h=%lf ,
61、j=%lf\n",k,a,b,x,h,j);</p><p> }while(fabs(b-a)>eps);/*判斷是否達到精度要求,若沒有達到,繼續(xù)循環(huán)*/</p><p> x=(a+b)/2; /* 取最后的小區(qū)間中點作為根的近似值 */</p><p> printf("\n The zui hou root is x=%lf
62、, k=%d\n",x,k);</p><p><b> }</b></p><p> 不動點迭代法C語言程序</p><p> #include <math.h></p><p> #define eps 0.0001 /* 容許誤差 */</p><p> d
63、ouble jisuan(double x)</p><p> { double h ;</p><p> h=sqrt(sqrt(x+4)-1);</p><p> return h ;</p><p><b> }</b></p><p><b> main()</b
64、></p><p> { double x0,x1,h;</p><p><b> int k=0;</b></p><p> printf("input 迭代初值 x1: ");</p><p> scanf("%lf",&x1);</p>
65、<p><b> do</b></p><p><b> { </b></p><p><b> x0=x1;</b></p><p> x1=jisuan(x0);</p><p><b> k++;</b></p>&
66、lt;p> h=fabs(x1-x0);</p><p> printf("\n k=%2d , x1=%lf ,h=%lf ",k ,x1,h);</p><p> }while(fabs(x1-x0)>eps);/*判斷是否達到精度要求,若沒有達到,繼續(xù)循環(huán)*/</p><p> printf("\n最后結(jié)果Th
67、e root is \n");</p><p> printf("x=%lf, k=%d\n",x1,k);</p><p><b> }</b></p><p> 牛頓迭代法C語言程序</p><p> #include<stdio.h></p><
68、p> #include<math.h></p><p> double js1(double x)</p><p> { double j;</p><p> j=pow(x,4)+2*pow(x,2)-x-3;</p><p><b> return j;</b></p>&
69、lt;p><b> }</b></p><p> double js2(double c)</p><p><b> { </b></p><p><b> double j;</b></p><p> j=4*pow(c,3)+4*c-1;</p>
70、<p> return j ;</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> double x1,x,f,f1,h;</p><p> int k=0 ;&l
71、t;/p><p> printf("chu zhi x :");</p><p> scanf("%lf",&x1);</p><p><b> do</b></p><p><b> { x=x1;</b></p><p>
72、;<b> k++;</b></p><p> f=js1(x1);</p><p> f1=js2(x1);</p><p> x1=x-f/f1;</p><p> h=fabs(x1-x);</p><p> printf("k=%2d , x1=%lf , f=%2.
73、6lf , f1=%2.6lf , h=%lf\n",k,x1,f,f1,h);</p><p> }while(fabs(x1-x)>1e-4);</p><p> printf("最后結(jié)果\n");</p><p> printf("k=%2d,x=%lf\n",k,x1);</p>&
74、lt;p><b> }</b></p><p> 牛頓迭代法C語言程序</p><p> #include <math.h></p><p> #define eps 0.0001 /* 容許誤差 */</p><p> #define N 100 /* 最大迭代次數(shù)N */</p&
75、gt;<p> double f(double x) /* 定義函數(shù)f(x) */</p><p> { double y;</p><p> y=pow(x,4)+2*pow(x,2)-x-3;</p><p> return(y);</p><p><b> }</b></p>
76、<p><b> main()</b></p><p> { double x0,x1,x2,h;</p><p><b> int i;</b></p><p> printf("input x0,x1=");</p><p> scanf("
77、;%lf,%lf",&x0,&x1);</p><p> for(i=1;i<=N;i++)</p><p> { x2=x1-(f(x1)*(x1-x0))/(f(x1)-f(x0)); /* 弦截法迭代公式 */</p><p> if(fabs(x2-x1)<eps || fabs(f(x2))<eps)
78、 /*滿足精度要求輸出近似根并退出*/</p><p> { h=fabs(x2-x1);</p><p> printf("\nRoot of equation is\n");</p><p> printf("k=%2d , x=%8.6lf , h=%lf\n",i,x2,h);</p><p
79、><b> return;</b></p><p><b> }</b></p><p> h=fabs(x2-x1);</p><p> printf("\nk=%2d , x=%8.6lf , h=%lf\n",i,x2,h);</p><p> x0=x1
80、; /* 準(zhǔn)備下一次迭代的初值 */</p><p><b> x1=x2;</b></p><p><b> }</b></p><p> printf("\nAfter %d repeat, no solved.\n",N); /* 輸出無解信息 */</p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 非線性方程的求解-畢業(yè)論文
- 畢業(yè)論文---非線性方程的求解
- 求解非線性方程的迭代算法研究.pdf
- 非線性方程求解的方法
- 非線性方程組的數(shù)值算法研究 畢業(yè)論文
- 求解非線性方程重根的迭代算法.pdf
- 非線性方程(論文)
- 非線性方程求解方法的研究.pdf
- 若干非線性方程的求解研究.pdf
- 變系數(shù)非線性方程的求解.pdf
- 40713.非線性方程求解的方法
- 求解稀疏線性方程組的迭代算法畢業(yè)論文開題報告
- 非線性方程求解的若干研究.pdf
- 求解非線性方程組和最優(yōu)化的matlab gui設(shè)計[畢業(yè)論文]
- 求解對稱非線性方程組的PSB算法.pdf
- 非線性方程組求解.doc
- 非線性方程組求解.doc
- 非線性方程組求解.doc
- 求解非線性方程的高階迭代法
- 求解非線性方程迭代方法研究.pdf
評論
0/150
提交評論