- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優化計算
- 薛定宇
- 721字
- 2020-04-24 14:21:31
2.6 欠定方程的求解
前面介紹方程時,一直在假設方程的個數與未知數的個數是一致的,這些方程都是正常的方程,本節將探討異常的方程類型——欠定方程的概念與求解方法。
定義2-11 如果方程的個數等于未知數的個數,則方程稱為適定方程(wellposed equation,又稱恰定方程);如果方程的個數少于未知數的個數,則方程稱為欠定方程(underdetermined equation);如果方程的個數大于未知數的個數,則方程稱為超定方程(overdetermined equation)。
前面演示的隱式方程f(x,y)=0就是一個常見的欠定方程,如果由ezplot()或fimplicit()函數用圖解法求解,則得出的曲線上所有的點都滿足原欠定方程,這時,欠定方程有無窮多解。
在一些特殊的場合下,用隱函數繪制函數不能繪制出任何曲線,這時方程可能有個別孤立解。這種情況下也可以考慮采用fsolve()函數直接求解,不過在默認的設置下,fsolve()函數并不能求解方程與未知數個數不同的代數方程,需要將求解算法設置成levenberg-marquardt,即采用Levenberg–Marquardt算法求解欠定方程。如果采用more_sols()函數,也應該作相應的算法設置。本節將通過例子演示具有孤立解的欠定方程求解方法。
例2-45 試求解下面的欠定方程。

解 如果手工求解可以發現,原欠定方程可能分拆成兩個獨立方程,這樣,方程的個數與未知數的個數一致,就可以調用more_sols()類函數直接求解方程。
手工轉換的方法帶有很多的人為性,因為并不是所有欠定方程都是可以手工拆分的。這里不作這種手工轉換,試圖直接求解欠定方程。
如果嘗試用下面的語句繪制隱函數曲線,在調用過程中沒有任何警告信息,但最終不能得到任何曲線,說明方程只可能存在有限個孤立解。

現在可以人為地選擇Levenberg–Marquardt算法,再求解欠定方程,經過一段時間的運行,有可能找出該欠定方程所有的9個根。

得出的方程的9個解為(?2.8051,3.1313)、(3,2)、(0.0867,2.8843)、(3.3852,0.0739)、(3.5844,?1.8481)、(?3.7793,?3.2832)、(?0.1280,?1.9537)、(?3.0730,?0.0813)和(?0.2708,?0.9230),其中,搜索第四個解比較耗時。
- 程序員面試筆試寶典(第3版)
- 簡單高效LATEX
- C語言程序設計實踐教程
- SEO實戰密碼
- HTML5+CSS3+JavaScript Web開發案例教程(在線實訓版)
- Amazon S3 Cookbook
- Mastering Google App Engine
- PostgreSQL Replication(Second Edition)
- SQL Server 2012數據庫管理與開發項目教程
- Getting Started with Gulp
- 青少年信息學競賽
- 深入淺出React和Redux
- Babylon.js Essentials
- Building Machine Learning Systems with Python(Second Edition)
- 細說Python編程:從入門到科學計算