Matlab學習日誌 高階符號計算

2021-08-22 04:49:42 字數 3419 閱讀 6283

涉及到用符號計算的方法求符號函式極限,導數,微分,積分,解代數方程(組),做積分變換,以及級數求和和求泰勒級數展開,全是乙個函式指令就能搞定的,查查help就能完成,還是高數要學好最重要

(發麻麻涼的有點透透哦,開哥有個作伴的了

%%

%符號微積分

%求符號函式極限limit()

syms x y t;

f1=(cos(x)+sin(x)-x)/x

f2=sin(t)/t

f3=tan(y)

limit(f1,x,inf)

limit(f1,x,-inf)

limit(f2,t,0)

%也可求左右極限

limit(f3,y,pi/2,'left')

limit(f3,y,pi/2,'right')

%符號函式的求導,求微分diff()

clear

clcsyms x y t;

f1=x^4+2*x^3-(1/2)*x^2+6*x%符號表示式表示的多項式函式

g=[1 2 -1/2 6 0]%數值法表示的同一多項式

f2=sin(x^2)

f3=exp(t*sin(x))+log(y)%多元函式亦可用diff()對指定變數求,相當於求偏導

diff(f1,x,1)%1階微分

polyder(g)

disp('\n');

diff(f2,x)

diff(f2,x,2)

diff(f3,t,1)

diff(f3,x,1)

diff(f3,y)

%注:傳入引數也可是表示式構成的符號矩陣

diff([f1 f2],x,1)

%若是求全導數,則用jacobian(),即同時對幾個自變數求導

w=[x^2+y^2;2*y+2*x]

jacobian(w,[x y])

%%%求符號表示式函式的積分(限可以是函式)int()

clear

clcsyms x y t;

f1=x^4+2*x^3-(1/2)*x^2+6*x%符號表示式表示的多項式函式

g=[1 2 -1/2 6 0]%數值法表示的同一多項式

f2=x+x^-1

f3=x^2+y^2

%求不定積分

int(f1,x)

polyint(g)

int(f2,x)

int(f3,y)

disp('/n');

%求定積分

int(f1,x,1,2)

ff=@(x)x.^4+2*x.^3-(1/2)*x.^2+6.*x;

quad(ff,1,2)

int(f2,x,0,x+1)

int(f3,y,y/2,3*y)

%%%符號表示式的級數求和symsum()

clear

clcsyms s n;

f=s^2;

g=n;

symsum(f,s,0,n)

symsum(g,n,1,100)

%%%求符號表示式的泰勒級數taylor()

clear

clcsyms x y t;

f=sin(x)/(2+sin(x))

taylor(f,x,'order', 8,'expansionpoint',0)%在x=0處對f做7階泰勒展開

%taylor(f,t)

%%%符號表示分段函式piecewise

syms x

y = piecewise(x<0, -1, x>0, 1)

subs(y,x,1)

%%%符號積分變換

%傅利葉變換及其反變換fourier()ifourier()

clear

clcsyms t w;

f=cos(t)*sin(t);

a=fourier(f,t,w)

b=ifourier(a,w,t)

simplify(b)

% y1=f*exp(-1j*w*t)

% y2=(1/(2*pi))*a*exp(1j*w*t)

% aa=int(y1,t,-inf,inf)

% bb=int(y2,w,-inf,inf)

%拉普拉斯變換及其反變換laplace()ilaplace()

clear

clcsyms s t;

syms a aa positive ;

f=exp(2*t)+5*dirac(a-t)

a=laplace(f,t,s)

b=ilaplace(a,s,t)

% aa=int(f*exp(-s*t),t,0,inf)

%z變換

clear;

clc;

syms n z;

f=n^2+n;

fz=ztrans(f,n,z)

ff=iztrans(fz,z,n)

subs(f,n,1)

subs(ff,n,1)

%%%代數方程(組)求解solve()

%代數方程,即由多項式組成的方程

%solve只能求出部分超越方程的解析解

%當一元方程?(z)=0的左端函式?(z)不是z的多項式時,稱之為超越方程。

%如指數方程、對數方程、三角方程、反三角方程等

clear;

clc;

syms a b c x;

f1=a*x^2+b*x+c;

s1=solve(f1,x)

s2=solve(f1,a)

f2=4*x^3+2*x^2+x+8;

s3=solve(f2,x)

double(s3)

r=roots([4 2 1 8])

%解代數方程組

clear;

clc;

syms x y;

f1=x^2+y^2;

f2=sym('x*y=12');

[sx xy]=solve(f1,f2,x,y)

%%%解微分方程

%解常微分方程用dsolve()

%通過使用diff函式指定微分方程並表示微分方程

clear;

clc;

syms a b x y(t) t;%宣告y是t的函式

f=diff(y,t)==a*t%a是係數,diff(y,t)是y對t的一階導數

cond=y(0)== 0;

dsolve(f,cond)

ef=subs(ans,a,2)

%用ode系列函式解微分方程數值解

tspan = [0 5];

y0=0;

[t,y]= ode45(@(t,y) 2*t, tspan, y0);

%作圖比較解析解和數值解

hold on;

ezplot(ef,[0,5]);

plot(t,y,'o')

matlab 高階函式

numel returns the of elements fieldnames 獲取其成員屬性的名字 字串形式 s 1,1 name alice s 1,1 id 0 s 2,1 name gertrude s 2,1 id 1 s 3,1 age 20 fieldnames s ans name...

matlab 寫txt 儲存日誌

由於實驗引數太多,所以為了方便對比每次實驗的引數還有以後的復現,記錄實驗中的引數以及結果並將其儲存下來作為日誌檔案很有必要。function writelog logfilename,varargin dirpath log addpath genpath dirpath fid fopen dir...

學習matlab(二) 字串分析

在使用matlab時經常會遇到對字元或字串的操作。本章將對matlab的字串函式進行詳細的介紹。字串是指1xn的字元陣列。在matlab軟體中提供了很多的字元或字串操作方法和函式,包括字串的建立 字串的屬性 比較 查詢以及字串的轉換和執行等。在matlab中,單個字元是按照unicode編碼儲存的,...