目錄
你是不是對高數很厭煩,是不是看到他就害怕就發憷,你曾經或者是不是現在已經掛在這顆樹上。。。。
哈哈啊啊啊啊 : : :作爲過來人同樣也有這樣的感受
不要擔心,現在教你用matlab去做題,分分鐘解決它 !!!!
分享一個學習高數的小技巧:高數這種課就上要善於做筆記,每種題型記一個例題,多看看或者考前看看就好了!
完稿:2020年5月31日17:04
作者:wyj
地點:略
1 極限和導數的符號計算
1 函數的極限
函數:limit
功能:求取函數的極限
語法:
limit(f):指表達式f中自變量趨於0時的極限
limit(f,x,a):指表達式f中自變量x趨於a時的極限
limit(f,x,a,'right'):指表達式f中自變量x趨於a時的右極限
limit(f,x,a,'left'):表達式f中自變量x趨於a時的左極限
注:如果y=f(a,b,c,……)要求a→n1,b→n2,c→n3……(n1,n2,n3……代表某個數字)時y的極限時,可以依次求其極限來獲得最終結果
【例 1】試求 .
matlab 代碼:
syms x k
Lim_f=limit((1-1/x)^(k*x),x,inf)
運行結果;
Lim_f = exp(-k)
【例 2】試求
matlab代碼:
syms x;
y=1/(x*(log(x))^2)-1/(x-1)^2; %log即ln
limit(y,x,1,'right')
運行結果:
ans =
1/12
2 函數的微分
1 函數:diff
功能:求取函數的微分
語法:
diff(f):求表達式f對默認自變量的一次微分值
diff(f,x):求表達式f對自變量x的一次積分值
diff(f,n):求表達式f對默認自變量的n次微分值
diff(f,t,n):求表達式f對自變量t的n次微分值
求矩陣的偏導數:
【例 1】已知 ,求
matlab 代碼:
syms a t x;
f=[a,t^3;t*cos(x), log(x)];
df=diff(f)
dfdt2=diff(f,t,2)
dfdxdt=diff(diff(f,x),t)
運行結果:
df =
[ 0, 0]
[ -t*sin(x), 1/x]
dfdt2 =
[ 0, 6*t]
[ 0, 0]
dfdxdt =
[ 0, 0]
[ -sin(x), 0]
求複合函數的導數
【例 2】求的導數.
matlab代碼:
sym('x');
y = 'x*f(x^2)'
y1 = diff(y,'x')
運行結果:
y1 =
f(x^2)+2*x^2*D(f)(x^2)
【例 3】已知f(x)=sin|x|,求
%代碼(1)
clear
syms x
syms d positive
f_p=sin(x);
df_p=limit((subs(f_p,x,x+d)-f_p)/d,d,0)
df_p0=limit((subs(f_p,x,d)-subs(f_p,x,0))/d,d,0)
%運行結果(1)
df_p =
cos(x)
df_p0 =
1
%代碼(2)
f_n=sin(-x);
df_n=limit((f_n-subs(f_n,x,x-d))/d,d,0)
df_n0=limit((subs(f_n,x,0)-subs(f_n,x,-d))/d,d,0)
%運行結果(2)
df_n =
-cos(x)
df_n0 =
-1
%代碼(3)
f=sin(abs(x));
dfdx=diff(f,x)
%運行結果(3)
dfdx =
cos(abs(x))*abs(1,x)
畫圖:
xn=-3/2*pi:pi/50:0;
xp=0:pi/50:3/2*pi;
xnp=[xn,xp(2:end)];
hold on
plot(xnp,subs(f,x,xnp),'k','LineWidth',2.5)
plot(xn,subs(df_n,x,xn),'--r','LineWidth',2.5)
plot(xp,subs(df_p,x,xp),':r','LineWidth',2.5)
legend(char(f),char(df_n),char(df_p),'Location','NorthEast')
grid on
xlabel('x')
hold off
結果:
求參數方程的導數
【例 4】對參數方程求導.
matlab 代碼:
syms a b t
f1 = a*cos(t);
f2 = b*sin(t);
A = diff(f2)/diff(f1) %此處代入了參數方程的求導公式
B = diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/diff(f1)^3 %求二階導數
運行結果:
求隱函數的導數
【例 5】求的一階導數
matlab代碼:
syms x y
p = 'x*y(x)-exp(x+y(x))'
%隱函數可進行整體表示
%注意y(x)這種寫法,它代表了y是關於x的函數
p1 = diff(p,x)
運行結果:
2 函數:jacobian
功能:求Jacobian matrix 雅可比矩陣
語法:jacobian(f,v)
描述:jacobian(f,v) 計算了 f 關於 v 的雅可比矩陣
輸入參數說明:
f — 標量或者向量函數,符號表達式、符號函數、符號向量等。 如果f是一個標量的話,f 的雅可比矩陣是 f 的梯度的轉置。
v — 要計算雅可比的變量向量,符號變量、符號向量。如果v 是一個標量,則結果等價於 diff(f,v) 的轉置。如果v 是空符號對象,比如sym([ ]),則結果返回空符號對象。
【例 6】求 。
matlab代碼:
syms x1 x2;
f=[x1*exp(x2);x2;cos(x1)*sin(x2)];
v=[x1 x2];
fjac=jacobian(f,v)
運行結果:
fjac =
[ exp(x2), x1*exp(x2)]
[ 0, 1]
[ -sin(x1)*sin(x2), cos(x1)*cos(x2)]
3 函數:polyder
功能:對多項式或有理多項式求導
語法:polyder(A)
說明:A爲多項式矩陣,對A求導。
【例 7】對 求導.
matlab 代碼:
A = [1,2,3,0,1] %寫出多項式矩陣,中間缺冪次的用0補全
%注意一定要從高次寫到低次,不能漏項
p = polyder(A) %此處求得的結果也是多項式矩陣
運行結果:
p =
4x^3+6x^2+6x
4 函數:fminsearch
功能:從某一初始值開始,找到一個標量函數的最小值
語法:x= fminsearch(fun,x0)
說明:從x0開始,找到函數fun的局部最小值
【例 8】函數,求x取值爲多大時,y有局部最小值。
matlab 代碼:
x0 = -2;
a = fminsearch(@(x)(x^2+4),x0)
運行結果:
a = 0
5 函數:taylor
功能:taylor(求泰勒展開式)
語法:taylor(fcn,x,x0,'Order',6);
說明:對函數fcn在點x0處,進行6階泰勒展開;
【例 9】求在 x=0 處展開的 8 階 Maclaurin 級數。
matlab 代碼:
syms x
r=taylor(x*exp(x),9,x,0) % 忽略9階及9階以上小量的展開
運行結果:
r =
x+x^2+1/2*x^3+1/6*x^4+1/24*x^5+1/120*x^6+1/720*x^7+1/5040*x^8
2 序列/ 級數的符號求和
函數:symsum
功能:級數符號求和
語法:
symsum(S):S爲符號表達式,S相對於符號變量k的和,k取值從0到k-1
symsum(S,V):指定S相對於變量V的和,V從0變到V-1
symsum(S,a,b)和symsum(s,v,a,b):指定符號表達式從v=a累加到v=b
【例 1】求
matlab 代碼:
syms k t;
f1=[t k^3];
f2=[1/(2*k-1)^2,(-1)^k/k];
s1=simple(symsum(f1))
s2=simple(symsum(f2,1,inf))
運行結果:
s1 =
[ 1/2*t*(t-1), k^3*t]
s2 =
[ 1/8*pi^2, -log(2)]
3 符號積分
1 符號函數的不定積分
函數:int
功能:求取函數的不定積分
語法:
int(f) :求函數f對默認自變量的積分值
int(f,x):求自變量f對對自變量t的不定積分值
【例 1】求 。
matlab 代碼:
clear
syms x
f=sqrt((1+x)/x)/x
s=int(f,x)
s=simple(simple(s))
運行結果:
f =
((1+x)/x)^(1/2)/x
s =
((1+x)/x)^(1/2)/x*(-2*(x^2+x)^(3/2)+2*(x^2+x)^(1/2)*x^2+log(1/2+x+(x^
2+x)^(1/2))*x^2)/((1+x)*x)^(1/2)
s =
log(1/2+x+((1+x)*x)^(1/2))-2*((1+x)*x)^(1/2)/x
2 符號函數的定積分
函數:int
功能:求取函數的定積分
語法:
int(f,a,b):求表達式f對默認自變量的定積分值,積分區間爲[a,b]
int(f,x,a,b):求表達式f對自變量x的定積分值,積分區間爲[a,b]。
【例 2】求積分 。
matlab 代碼:
syms x y z
F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)
VF2=vpa(F2)
運行結果:
F2 =
-6072064/348075*2^(1/2)+64/225*2^(3/4)+14912/4641*2^(1/4)+1610027357/
6563700
VF2 =
224.92153573331143159790710032805
4 阿基米德(Archimedes)螺線
【例】求阿基米德(Archimedes)螺線 ) 在 (a>0) 到 間的曲線長度函數,並求出a=1 , =2π時的曲線長度。
matlab代碼:
%代碼(1)
syms a r theta phi positive
x=r*cos(theta);x=subs(x,r,a*theta);
y=r*sin(theta);y=subs(y,r,a*theta);
dLdth=sqrt(diff(x,theta)^2+diff(y,theta)^2);
L=simple(int(dLdth,theta,0,phi))
%運行結果(1)
L =
1/2*a*(phi*(1+phi^2)^(1/2)+asinh(phi))
%代碼(2)
L_2pi=subs(L,[a,phi],sym('[1,2*pi]'))
L_2pi_vpa=vpa(L_2pi)
%運行結果(2)
L_2pi =
pi*(1+4*pi^2)^(1/2)+1/2*asinh(2*pi)
L_2pi_vpa =
21.256294148209098800702512272566
畫圖:
L1=subs(L,a,sym('1'));
ezplot(L1*cos(phi),L1*sin(phi),[0,2*pi])
grid on
hold on
x1=subs(x,a,sym('1'));
y1=subs(y,a,sym('1'));
h1=ezplot(x1,y1,[0,2*pi]);
set(h1,'Color','r','LineWidth',5)
title(' ')
legend(' 螺線長度- 幅角曲線',' 阿基米德螺線')
hold off
結果: