上一節我們說了說多項式的根,這一篇我們讨論一下方程組,超越方程等的求根。
方程組求解:
首先看一下最簡單的多元一次方程:
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));
結果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SOyQ2YhFjNhFWM1kjZ3YjN0UTM2YWM4ATN4YmNyIGN28CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注意幾點:
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
我們看一下結果:
這裡注意幾點:
1、解析式的等号是==,不要寫成=
2、solve的傳回值是個矩陣
3、答案中每一列代表一個變量的取值,以這個答案為例:
x1,y1
x2,y2
是以排布是這個樣的。
超越方程:
solve函數解決超越方程是有一定局限性的,隻能接觸一些值比較特殊的解,比如有理數,一些根式,複雜一些的比如e,sin1這些解決不了
我們來看一個例子:
這個代入x=1是成立的
代碼很簡單:
syms x
f=(log(x)==2.^x-2)
ans=solve(f)
這個隻有一個參數,傳回值是一個矩陣,代表所有解
結果ans=1.0
但是一作圖,會發現其實有兩個根:
matlab作圖後面會說的,先挖個坑
其中一個根無法簡單表示出來,solve就解決不了,自動忽略了(???)是以solve函數求解超越方程是有一定局限性的。
這一節我們說了說matlab其它的求解方法,下一節再回到多項式和符号計算。
歡迎喜歡的朋友
點贊關注收藏啊:)