日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)

發布時間:2025/4/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 台湾国立大学郭彦甫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 不是數值變量

練習題:

我的練習:

syms x; y=(cos(x)).^2-(sin(x).^2); solve(y,x)

運行結果:得到第一個方程的根是 pi/4

第二題:
代碼:

syms x; y=(cos(x)).^2+(sin(x)).^2; solve(y,x)

執行結果發現這個方程無解。根據高中的知識,確實y=1,不會等于0

下一個問題

solving multiple equations多個方程求解

只需要多聲明symbolic varibles

例題:解二元一次方程組

例程代碼:

syms x y; eq1=x-2*y-5; eq2=x+y-6; A=solve(eq1,eq2,x,y)%兩個方程放在前面

運行上面代碼,我們就解出來這個方程組:但是得到的是一個structure,

如何顯示structure中的元素呢?
A.x
A.y
得到方程組的解:


再來看下一個問題

solving equations expressed in symbols解帶符號的方程

舉例:

例程代碼:(新版matlab運行不了)

syms x a b solve('a*x^2-b')

執行時出現錯誤:

好像不能這樣用(solve()里面方程用單引號‘’好像已經不能這樣來處理了)

換一種寫法試試

syms x a b; y=a*x^2-b; solve(y,x)

發現行得通,運行結果得到用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是未知數。
代碼:

syms x a b y=a*x^2-b; solve(y,b)%意思是b是 unknown 未知的

得到結果:用x和a表示出來的b

練習題:


第一個題目:用symbolic 的方式求解一個圓的方程,其中只把x當作未知數
第二個題目:用符號的方法求一個矩陣的逆矩陣(matrix inverse)
思路:需要把a,b,c,d聲明成 syms,同時需要一個求逆矩陣的指令,老師講好像是inv()

我的練習:
第一題代碼:

syms x y a b r; f=(x-a).^2+(y-b).^2-r.^2;%方程 solve(f,x)%求解根

計算結果:


第二題解決:
先查一查inv()函數是何方神圣,發現inv()確實可以求逆矩陣

syms a b c d; A=[a,b;c,d];%用symbolic 形式表示的矩陣 inv(A)%求逆矩陣的指令

運行結果,得到A矩陣的逆矩陣

【總結一下】
本文學習了方程求根的一中方法,用symbolic 的方法,可以顯式的表達出來一個結果,很直觀。
聲明符號變量使用 關鍵字 syms
求根使用函數solve()
解方程組 也可以使用solve()函數,只需要加上幾個形參。
同樣可以解帶有a,b等字母系數的方程

總結

以上是生活随笔為你收集整理的台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。