台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)
today:
symbolic approach 運用符號的方式求根
numeric root solvers數值的方式求根
recursive functions 遞歸函數
problem statement問題陳述
suppose you have a mathematical function f(x) and you want to finx x0 such that f(x0)=0,e.g.
how do you solve the problem using MATLAB?
analytical solutions 解析解,求根公式
graphical illstration圖形描述
numerical solutions 數值解
今天focus analytical solution and numerical sulution
symbolic root finding approach 符號方法
performing mathematics on symbols ,not numbers 把數值變成 symbol符號形式
the symbols math are performed using 'symbolic varibles’符號變量
怎么做呢?
use sym or syms to create symbolic varibles
舉例:如何把x宣告成 symbolic 的形式
syms x%x變成 symbolic varible
x+x+x
(x+x+x)/4
運行結果可以看到:
還有一個指令
x=sym(‘x’);
下面要定義一個函數,用symbolic 的形式
運行結果:
現在知道了 symbolic varible ,就要用symbolic 的方式解決方程式求根的問題
symbolic root finding :solve()符號法求根
function : solve finds roots for equations
如何用matlab來求解呢?
第一步,需要讓x變成 symbolic varible
第二步,y表示出來
第三步solve(y,x)參數是方程在前,自變量在后面
例程代碼:
syms x; y=x*sin(x)-x; solve(y,x)%solve 直接讓y=0,不用手動再令成零。得到上面方程的根:
需要注意的是,這個結果ans 也是symbolic variable 不是數值變量
練習題:
我的練習:
運行結果:得到第一個方程的根是 pi/4
第二題:
代碼:
執行結果發現這個方程無解。根據高中的知識,確實y=1,不會等于0
下一個問題
solving multiple equations多個方程求解
只需要多聲明symbolic varibles
例題:解二元一次方程組
例程代碼:
運行上面代碼,我們就解出來這個方程組:但是得到的是一個structure,
如何顯示structure中的元素呢?
A.x
A.y
得到方程組的解:
再來看下一個問題
solving equations expressed in symbols解帶符號的方程
舉例:
例程代碼:(新版matlab運行不了)
syms x a b solve('a*x^2-b')執行時出現錯誤:
好像不能這樣用(solve()里面方程用單引號‘’好像已經不能這樣來處理了)
換一種寫法試試
發現行得通,運行結果得到用a和b表示的方程的解
上面這個例題中x是未知數,如果讓b是未知數,a和x是已知,我們怎么解呢?
x is always the first choice to be solved,一般x是默認的未知數
what if one wants to express b in terms of a and x?
如果想要b是未知數的話,需要改變一下指令
如下程序:(代碼有問題)
syms x a b y=a*x^2-b; solve(y,'b')%意思是b是 unknown 未知的發現這段代碼出現錯誤:
改正:b不需要加單引號。就像solve(y,x)一樣,x是未知數。
代碼:
得到結果:用x和a表示出來的b
練習題:
第一個題目:用symbolic 的方式求解一個圓的方程,其中只把x當作未知數
第二個題目:用符號的方法求一個矩陣的逆矩陣(matrix inverse)
思路:需要把a,b,c,d聲明成 syms,同時需要一個求逆矩陣的指令,老師講好像是inv()
我的練習:
第一題代碼:
計算結果:
第二題解決:
先查一查inv()函數是何方神圣,發現inv()確實可以求逆矩陣
運行結果,得到A矩陣的逆矩陣
【總結一下】
本文學習了方程求根的一中方法,用symbolic 的方法,可以顯式的表達出來一個結果,很直觀。
聲明符號變量使用 關鍵字 syms
求根使用函數solve()
解方程組 也可以使用solve()函數,只需要加上幾個形參。
同樣可以解帶有a,b等字母系數的方程
總結
以上是生活随笔為你收集整理的台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防火门资料是按总包名义做还是分包名义
- 下一篇: 睡觉能不能在客厅?