日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時間:2025/4/5 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 台湾国立大学郭彦甫Matlab教程笔记(18) root finding(symbolic) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

today:
symbolic approach 運(yùn)用符號的方式求根
numeric root solvers數(shù)值的方式求根
recursive functions 遞歸函數(shù)

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 數(shù)值解

今天focus analytical solution and numerical sulution

symbolic root finding approach 符號方法

performing mathematics on symbols ,not numbers 把數(shù)值變成 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

運(yùn)行結(jié)果可以看到:

還有一個指令
x=sym(‘x’);

下面要定義一個函數(shù),用symbolic 的形式

運(yùn)行結(jié)果:

現(xiàn)在知道了 symbolic varible ,就要用symbolic 的方式解決方程式求根的問題

symbolic root finding :solve()符號法求根

function : solve finds roots for equations


如何用matlab來求解呢?
第一步,需要讓x變成 symbolic varible
第二步,y表示出來
第三步solve(y,x)參數(shù)是方程在前,自變量在后面

例程代碼:

syms x; y=x*sin(x)-x; solve(y,x)%solve 直接讓y=0,不用手動再令成零。

得到上面方程的根:

需要注意的是,這個結(jié)果ans 也是symbolic variable 不是數(shù)值變量

練習(xí)題:

我的練習(xí):

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

運(yùn)行結(jié)果:得到第一個方程的根是 pi/4

第二題:
代碼:

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

執(zhí)行結(jié)果發(fā)現(xiàn)這個方程無解。根據(jù)高中的知識,確實(shí)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)%兩個方程放在前面

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

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


再來看下一個問題

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

舉例:

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

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

執(zhí)行時出現(xiàn)錯誤:

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

換一種寫法試試

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

發(fā)現(xiàn)行得通,運(yùn)行結(jié)果得到用a和b表示的方程的解


上面這個例題中x是未知數(shù),如果讓b是未知數(shù),a和x是已知,我們怎么解呢?

x is always the first choice to be solved,一般x是默認(rèn)的未知數(shù)
what if one wants to express b in terms of a and x?
如果想要b是未知數(shù)的話,需要改變一下指令

如下程序:(代碼有問題)

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

發(fā)現(xiàn)這段代碼出現(xiàn)錯誤:

改正:b不需要加單引號。就像solve(y,x)一樣,x是未知數(shù)。
代碼:

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

得到結(jié)果:用x和a表示出來的b

練習(xí)題:


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

我的練習(xí):
第一題代碼:

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

計(jì)算結(jié)果:


第二題解決:
先查一查inv()函數(shù)是何方神圣,發(fā)現(xiàn)inv()確實(shí)可以求逆矩陣

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

運(yùn)行結(jié)果,得到A矩陣的逆矩陣

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。