涉及到用符號計算的方法求符號函式極限,導數,微分,積分,解代數方程(組),做積分變換,以及級數求和和求泰勒級數展開,全是乙個函式指令就能搞定的,查查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編碼儲存的,...