目录
你是不是对高数很厌烦,是不是看到他就害怕就发憷,你曾经或者是不是现在已经挂在这颗树上。。。。
哈哈啊啊啊啊 : : :作为过来人同样也有这样的感受
不要担心,现在教你用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
结果: