2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論