教你用matlab快速解決煩人的高數的微積分問題(這棵樹數雖高,看了這個你肯定掛不上去),非常全面,爆肝推薦!!!

目錄

1  極限和導數的符號計算

1 函數的極限

2 函數的微分

1 函數:diff

2 函數:jacobian

3 函數:polyder

4 函數:fminsearch

5 函數:taylor

2  序列/ 級數的符號求和

3  符號積分

1 符號函數的不定積分

函數:int

2 符號函數的定積分

函數:int

4 阿基米德(Archimedes)螺線


你是不是對高數很厭煩,是不是看到他就害怕就發憷,你曾經或者是不是現在已經掛在這顆樹上。。。。

哈哈啊啊啊啊 : : :作爲過來人同樣也有這樣的感受

不要擔心,現在教你用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】試求 \lim_{x\to \infty }\left ( 1-\frac{1}{x} \right )^{kx}.

matlab 代碼:

syms x k
Lim_f=limit((1-1/x)^(k*x),x,inf)

運行結果;

Lim_f = exp(-k)

【例 2】試求 \lim_{x\to 1^{+} }\left ( \frac{1}{xln^{2}x}-\frac{1}{(x-1)^{2}} \right )

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】已知  f=\begin{bmatrix} a & t^{3}\\ tcosx&lnx \end{bmatrix} ,求 \frac{df}{dx},\frac{d^{2}f}{dt^{2}},\frac{d^{2}f}{dtdx}

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|,求 f_{x}^{'}(0),f_{x}^{'}(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】對 f(x)=x^{4}+2x^{3}+3x^{2}+1 求導.

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】函數f(x)=x^{2}+4,求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】求f(x)=xe^{x}在 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)螺線 ) r=a\cdot \theta 在 (a>0) 到 \theta =0\varphi的曲線長度函數,並求出a=1 , \varphi=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 

結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章