[TOC]html
format 表示格式 help format 能夠查詢format幫助 format short 把輸出的格式改成默認設置 format rat 顯示爲分數 format long e 顯示長精確度並用科學計數法 format long 並無重計算,把顯示數字的有效位5->15位 format compact/loose 緊湊/鬆散(默認)格式 roots(矩陣) 求多項式的根 solve()一般在不肯定方程是否有符號解的時候,優先使用 pretty()使結果已於觀察 vpa(phi,50) vpa是可變精度算術函數,可獲得任意位數數字的表達式 inline() 內聯函數 ezplot(f,0,4) 輕鬆做圖0<=x<=4 range的圖像
求解方程一般有兩種方法,符號求解solve()和數值求解。函數
一般在不肯定方程是否有符號解的時候,推薦先使用solve進行嘗試,由於solve相比於數值求解來講,它不須要提供初值,而且通常狀況下可以獲得方程的全部解。對於一些簡單的超越方程,solve還可以自動調用數值計算系統給出一個數值解。 solve的調用形式:學習
sol=solve(eq) sol=solve(eq,var) sol=solve(eq1,eq2,…,eqn) sol=solve(eq1,eq2,…,eqn,var1,var2,…,varn)
eq爲符號表達式,var爲指定的要求解的變量。若是不聲明要求解的變量(第一和第三種形式),則matlab自動按默認變量進行求解,默認變量能夠由symvar (eq)肯定。 eg.x+y-1=0,x-11*y-5=0,求不等式ui
syms x y %聲明符號變量 eq1=x+y-1 eq2=x-11*y-5 sol=solve(eq1,eq2,x,y) x=sol.x y=sol.y
然而在不少狀況下solve並不能求得方程的解析解,這時就能夠採用數值法求解。數值求解法包括fzero和fsolve,其區別在於fzero只適用求解一元函數零點,而fsolve適用於求解多元函數零點(包括一元函數)。當求解一元函數零點時,推薦優先使用fzero,緣由是fzero求解一元方程每每更容易,由於它不只支持提供初值的搜索,還支持在一個區間上進行搜索。 fzero的經常使用形式:spa
x = fzero(fun,x0) [x,fval] = fzero(fun,x0)
其中fun爲函數句柄,x0爲搜索初值,fval爲求解偏差。 eg.以一元方程sin(x)+cos(x)^2=0爲例:code
y=@(x)sin(x)+cos(x).^2 %這裏採用匿名函數,也能夠使用函數文件形式 [x,fval]=fzero(y,1) %1爲搜索初值
若是方程有多個零點時,fzero只能根據你提供的初值求得最靠近初值的一個零點,若是但願求得多個零點的話,那麼只可以經過改變初值來獲得不一樣的零點。 對於零點的選取,目前來講沒有什麼比較好的辦法,只可以經過分析方程的性質,或者經過做圖的方法去尋找一個比較靠近零點的初值。另外,fzero可以提供區間搜索,注意區間兩端的端點函數值符號須要反向:orm
y=@(x)sin(x)+cos(x).^2 [x,fval]=fzero(y,[-1 1]) %fzero在[-1,1]這個區間搜索初值
除此以外,fzero還可以求解積分方程htm
fsolve能夠求解多元方程,用法和fzero相似。 fsolve的經常使用形式:blog
x = fsolve(fun,x0) [x,fval] = fsolve(fun,x0)
其中fun爲函數句柄,x0爲搜索初值,fval爲求解偏差 例:求解方程組x+y=1, x-11y=5get
eq=@(x)[x(1)+x(2)-1;x(1)-11*x(2)-5] [sol,fval]=fsolve(eq,[1,1])
這裏對於方程的的輸入須要採用矩陣的形式,其中x(1)表明x,x(2)表明y。有時候變量較多時可能會容易混淆,這裏提供另外一種方法,採用符號變量形式再利用matlabFunction轉化爲函數句柄:
syms x y eq1=x+y-1 eq2=x-11*y-5 eq1=matlabFunction(eq1); %將符號函數轉化爲函數句柄 eq2=matlabFunction(eq2); eq=@(x)[eq1(x(1),x(2));eq2(x(1),x(2))] [sol,fval]=fsolve(eq,[1,1])
效果與以前相同,但不容易出錯。求得的解以矩陣形式返回給sol,即sol的第一個值是匿名函數的第一個輸入參數值x,sol的第二個值是匿名函數的第二個輸入參數值y。
原文出處:https://www.cnblogs.com/yanshanbei/p/11592234.html