Matlab之代数方程求解:极限、渐进线、导数
目录
极限、渐进线、导数
1、求趋于常量的极限
(1)案例limit(f)命令属于符号计算,因此确保使用syms 命令告诉MATLAB你使用的是哪个符号变量。
syms x
f = (2*x + 1)/(x-2); g = x^2 + 1;
F1 = limit(f,3); %当x趋近a时的f(x)d的极限,语法是limit(f,a)
F2 = limit(g,3);
%接着,验证两个函数乘积的极限等于两个函数各自极限的乘积
A=F1*F2; k=limit(f*g,3);
isequal(A,k) %调用isequal (A,B)命令检查两个量是否相等,若不相等isequal返回0
(2)求函数在某点左右极限limit(f,x,a,'left')的案例
syms x
f = (x - 3)/abs(x - 3); %已知该函数不存在极限;
ezplot(f,[-1,5]) %通过函数图像看极限存在情况,可知仅存在左右极限
a = limit(f,x,3,'left') %limit(f,x,a,'left')命令求a点的左极限
b = limit(f,x,3,'right')
isequal(a,b) %调用isequal(A,B)命令判断左右极限是否相等,即该点是否存在
2、利用limit(f, inf)命令无穷极限
syms x
limit(sqrt(x^2+x)-x,inf) %计算趋于正无穷大时的极限;
limit((5*x^3 + 2*x)/(x^10 + x + 7),-inf) %计算趋于负无穷大时的极限;
limit(1/abs(x)) %计算得出无穷大的极限
3、获得渐进线
limit命令可以用来获得函数的渐近线
syms x
f = 1/(x*(x-1));
%第一步是找出函数突然增大的点。这可以通过解分母的根求得
g=x*(x-1); s=solve(g) %得到了根就知道了渐进线的位置
ezplot(f) %绘制函数图象
hold on %hold on命令告诉MATLAB,还要为图象再添加一些材料:
plot(double(s(1))*[1 1], [-1 2],'--') %因根存在变量s中,访问s(1)和s(2),且绘制渐进线;
plot(double(s(2))*[1 1], [-1 2],'--')
hold off
4、导数计算
(1)求一阶、高阶函数
syms t
g=sin(10*t); diff(g) %求一阶函数的导数diff(f);
f=t*exp(-3*t);diff(f,2) %求高阶函数的导数diff(f,n);
(2)案例综合应用:diff返回求导结果,接着把结果赋给另一个变量继续使用;
如求是方程的解么?
syms t
y = 3*sin(t)+7*cos(5*t);
f = -5*cos(2*t); %输入微分方程的右边,
a = diff(y,2)+y; %输入微分方程的左边(将第一个函数Y带入),我们创建另一个变量:
isequal(a,f) %判断是否相等
(3)求函数在区间[0,2]的最小、大值;
subs(f, x, z)表示将新值z替换符号表达式f中的变量x;如题subs(f,0)等价于f(0)
syms x
f = x^3-3*x^2+3*x;
ezplot(f, [0 2])
g = diff(f) %要找出区域内最小、大值,求一阶导数g并找出等于零的点
pretty(g) %pretty命令让表达式更好看一些:使函数式更接近手写,如3*x^2 - 6*x + 3变为3x2-6x+3
s = solve(g) %让一阶导数g为零求根,一阶导得出2个根即原函数大约应该3个根
subs(f,0), subs(f,1), subs(f,2) %继续通过计算函数在临界点x=0、1、2的值来证明
%由于f(2)返回最大值,我们可以得到x=2 时函数f取得最大值的结论。另外,我们还可以计算导数在这三个点的值并绘制它:
subs(g,0),subs(g,1),subs(g,2) %求出一阶导函数在x=0、1、2的值
h=diff(g) %求二阶导数并让它等于零,得到导数的临界点
solve(h) %由于g''>0 ,我们可以下结论x=1是本区间的最小值????