天天看點

fprintf函數的用法matlab_從零開始的matlab學習筆記——(12)其它求根方法

上一節我們說了說多項式的根,這一篇我們讨論一下方程組,超越方程等的求根。

方程組求解:

首先看一下最簡單的多元一次方程:

3x+2y=7.5

5x+7y=23.5

直接運用克拉默法則:

ans=inv(a)*b,這裡inv(a)=1/a

這樣解得x=0.5,y=3

完整代碼:

a=[3 2;5 7];

b=[7.5;23.5];

ans=inv(a)*b;

fprintf(' x = %g, y = %g',ans(1),ans(2));

結果:

fprintf函數的用法matlab_從零開始的matlab學習筆記——(12)其它求根方法

注意幾點:

1、a矩陣存放等式左邊的系數,b存放等式右邊的常數

2、系數為0也要補上

這是一個最簡單的版本,但是好多情況下我們還會碰到多元也多次的方程(比如高中的解析幾何),這時候我們需要借助solve()函數。

solve函數用途很多,這裡隻介紹兩種。

一個就是求解多元多次方程

x^2+y^2=4

y-x+1=0

求交點,一個正常的高中解析幾何題,這次我們嘗試用matlab解決

卑微的代碼:

syms x y

f=(x^2 + y^2 == 4)

g=(y - x + 1 == 0)

[x,y]=solve(f,g)

a=[x,y]

pretty(a)

這裡還是細緻的說一下吧

1、定義符号變量x,y

2、定義解析式f,g

3、運用solve函數

4、pretty()美化一下結果

solve函數:

solve(f,g)兩個參數,代表兩個解析式,傳回值為一個矩陣[x,y],代表求的值x,y

我們看一下結果:

fprintf函數的用法matlab_從零開始的matlab學習筆記——(12)其它求根方法

這裡注意幾點:

1、解析式的等号是==,不要寫成=

2、solve的傳回值是個矩陣

3、答案中每一列代表一個變量的取值,以這個答案為例:

x1,y1

x2,y2

是以排布是這個樣的。

超越方程:

solve函數解決超越方程是有一定局限性的,隻能接觸一些值比較特殊的解,比如有理數,一些根式,複雜一些的比如e,sin1這些解決不了

我們來看一個例子:

fprintf函數的用法matlab_從零開始的matlab學習筆記——(12)其它求根方法

這個代入x=1是成立的

代碼很簡單:

syms x

f=(log(x)==2.^x-2)

ans=solve(f)

這個隻有一個參數,傳回值是一個矩陣,代表所有解

結果ans=1.0

但是一作圖,會發現其實有兩個根:

fprintf函數的用法matlab_從零開始的matlab學習筆記——(12)其它求根方法

matlab作圖後面會說的,先挖個坑

其中一個根無法簡單表示出來,solve就解決不了,自動忽略了(???)是以solve函數求解超越方程是有一定局限性的。

這一節我們說了說matlab其它的求解方法,下一節再回到多項式和符号計算。

歡迎喜歡的朋友

點贊關注收藏

啊:)

繼續閱讀