用Matlab求解非線性方程組-_第1頁
用Matlab求解非線性方程組-_第2頁
用Matlab求解非線性方程組-_第3頁
用Matlab求解非線性方程組-_第4頁
用Matlab求解非線性方程組-_第5頁
全文預覽已結束

下載本文檔

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

文檔簡介

1、 -119-用Matlab 求解非線性方程組任中貴1焦艷會2張宏蕃3(1、哈爾濱理工大學應用科學學院,黑龍江哈爾濱1500802、哈爾濱商業大學,黑龍江哈爾濱1500003、黑龍江工程學院,黑龍江哈爾濱1500001引言非線性方程組解的幾何意義與線性方程組類似,方程組中每個方程定義了一個“曲”超平面,非線性方程組的解為所有超平面的交點,但是這些曲面可能相交,也可能不相交,情況比平面復雜。通常對一個二維或三維沒有解析解的非線性方程組,求解此類非線性方程組的數值方法很多,如牛頓法、擬牛頓法、不動點迭代法等等,但這些算法編程比較復雜困難。利用Matlab 符號對象功能,通過函數繪圖確定解的存在區間,

2、再使用工具箱函數求解方程組的數值解的方法,過程簡單,結果精度高,而且由于Matlab 自帶的工具箱函數功能強大,極大地減小了編程的復雜性和程序調試的困難,適合計算各類問題中出現的非線性方程組。2Matlab 的符號對象和函數繪圖功能Madab 的符號數學工具箱是以Maple 的內核為符號運算的引擎,并依賴Maple 已有的庫函數開發出來的Matlab 環境下實現符號處理的工具箱。它將符號運算結合到Madab 的數值運算環境中。在Matlab5.0以上版本中定義這種新的數據類型符號對象或稱為sym 對象,其建立函數是sym 或syms 。使用這兩個函數可以建立符號變量、表達式和矩陣。Matlab

3、 的符號處理功能可以對符號對象進行因式分解、替換、化簡等處理以及進行微積分、求極限、線性代數、微分方程等求解運算,求得符號解。在符號數學工具箱2.1版本中增強了符號函數的繪圖功能,可以對多種形式的符號直接繪制不同表現形式的圖形。如函數ezplot 可以繪制y=f(x及x=f(t、f(x=0構成的參數曲線,ezpolar 可以繪制r=f(的極坐標曲線,ezplot3可繪制y=f (t、x=f(t、z=f(t構成的參數曲線,還有ezsurf 、ezsurfc 、ezmesh 、ezmeshc 可以繪制參數網格或表面圖等等。利用上述函數功能,我們可以繪制出非線性方程組的曲線或曲面圖形,從圖形中可以直

4、觀地看到方程組解的存在區間,為下一步求解數值解提供計算范圍或迭代起點。3Matlab 的函數語法和實例計算利用Madab 符號數學工具箱中的fsolve 函數,可以對非線性方程組進行求解。函數fsolve 的語法有以下幾種:x=fsolve(fun ,x0從x0開始求解fun 所描述的方程。x=fsolve(fun ,x0,options根據options 指定的最優化參量最小化從x0開始的求解范圍,注意要先使用optimset 設定參量。x ,fval=fsolve(fun ,x0通過求得的x 返回目標函數fun 的值。x ,fval ,exitflag=fsolve(按照出口行命令返回值e

5、xitflag 。x ,fval ,exitflag ,output=fsolve(返回一個包含最優化信息的輸出結構output 。x ,fval ,exitflag ,output ,jacobian=fsolve(返回一個基于解的雅可比行列式fun 。求解方程之前,需要建立一個m 程序定義“fun ”,即所求的非線性方程組,程序如下:function y=myfun(xy=x(1-0.7J sin(x(1-0.2J cos(x(2x(2-0.7J cos (x(1+0.2J sin(x(2L y=y(1y(2L4迭代方法程序一個多世紀以來,迭代法一直被人們研究、使用和發展。近些年來,求解非

6、線性方程組的迭代法越來越受到人們的重視,并為許多計算數學工作者研究和使用。然而,由于非線性所帶來的復雜性,關于非線性方程組的迭代法的許多問題都未能得到很好解決.例如:一是如何構造具有二階收斂性的非線性迭代格式,二是迭代初值的選取方法,三是證明迭代方法的保正性,還有一些經典迭代法和外推迭代法的最佳參數問題、在實際使用迭代法時如何建立可行的停機準則并估計近似解的誤差界,等等。求解非線性方程組的最簡單和有效的迭代法之一就是Broyden 方法:它以一個近似雅可比矩陣為初值,每次迭代都對這個矩陣進行更新。初始雅可比近似可取點處的精確雅可比矩陣,當然,為了避免導數計算,也可取為單位矩陣。算法如下:fun

7、ction y=broyden(x0a=eye(length(x0Lx1=x0-myfun (x0/a L n=1Lwhile(norm(x1-x0>=1.0e-6&(n<=100000000x0=x1Lx1=x0-myfun (x0/a Lp=x1-x0L q=myfun (x1-myfun (x0L a=a+(q-p J a'J p /norm(pL n=n+1L end y=x1L n5結論fsolve 求解方程的過程是一個連續的過程,求解成功時,它得到一個解。然后聚合在一個非零點上,嘗試另一個初始值所求解均為實型數據,如果所求解有復數量,所求根必須分解成實部

8、和虛部分別求解。上述方法適合求解各種非線性方程或方程組,Matlab 工具箱函數的強大功能大大地簡化了程序的編寫及調試,運算非常迅速。用Broyden 方法解非線性方程組雖然迭代次數多了一些,但不必計算原函數的代數值,甚至連導函數都不用,非常方便。參考文獻1徐士良.Fortran 常用算法程序集M.北京:清華大學出版社,1997:121159.3潘狀元.求解奇異問題新的加速迭代法J.高等學校計算數學學報,1988,2:118-125.4王興華.一個迭代過程的收斂性J.科學通報,1975,132:558-559.5Hightpelfonnance Numeric Computtation and Visualization Softwave.Matlab User's Guide J.South Natick :The MathWorks ,Inc.,MA ,1994.335337.作者簡介:任中貴(1979,男,哈爾濱理工大學碩士研究生,04級應用數學。責任編輯:王

溫馨提示

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

評論

0/150

提交評論