MATLAB數值計算 0

2022-08-23 13:33:07 字數 2503 閱讀 1429

目錄

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,求不等式

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的常用形式:

x = fzero(fun,x0)

[x,fval] = fzero(fun,x0)

其中fun為函式控制代碼,x0為搜尋初值,fval為求解誤差。

eg.以一元方程sin(x)+cos(x)^2=0為例:

y=@(x)sin(x)+cos(x).^2     %這裡採用匿名函式,也可以使用函式檔案形式

[x,fval]=fzero(y,1) %1為搜尋初值

如果方程有多個零點時,fzero只能根據你提供的初值求得最靠近初值的乙個零點,如果希望求得多個零點的話,那麼只能夠通過改變初值來得到不同的零點。

對於零點的選取,目前來說沒有什麼比較好的辦法,只能夠通過分析方程的性質,或者通過作圖的方法去尋找乙個比較靠近零點的初值。另外,fzero能夠提供區間搜尋,注意區間兩端的端點函式值符號需要反向:

y=@(x)sin(x)+cos(x).^2  

[x,fval]=fzero(y,[-1 1]) %fzero在[-1,1]這個區間搜尋初值

除此之外,fzero還能夠求解積分方程

fsolve可以求解多元方程,用法和fzero類似。

fsolve的常用形式:

x = fsolve(fun,x0)

[x,fval] = fsolve(fun,x0)

其中fun為函式控制代碼,x0為搜尋初值,fval為求解誤差

例:求解方程組x+y=1, x-11y=5

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。

Matlab 數值計算泰勒公式

1.利用n階泰勒多項式展開來估算函式f x e x在指定點x處的近似值。要求絕對誤差在最大階數maxn以內達到給定精度eps。taylorcal函式 function taylorcal eps 0.00001 maxn 20 x input 儲存輸入的浮點數 向量 f1 zeros 1,lengt...

MATLAB數值計算程式設計題

2020年疫情期間接了乙個活,培訓matlab程式設計。之前幾乎沒有接觸過matlab,從學習到授課也只有10天的準備時間。之前買了一本他們的matlab教材,然後花了5天左右的時間系統學習了一下。接著就是看他們上課用的pdf課件,繪製思維導圖,列出內容提綱。下面的4道程式設計題來自於他們學校的ma...

Matlab中數值計算精度

1.matlab中有三種運算精度,它們分別為數值演算法 符號演算法和可控精度演算法,將它們分別介紹如下 1 數值演算法把每個數取為16位,計算按浮點運算進行,它是運算速度最快的一種演算法.2 符號演算法把每個數都變為符號量,運算按有理量計算進行,它的優點是能夠得到精確結果,缺點是占用空間大,並且運算...