MATLAB与高等数学--导数计算与极值的求解

编程入门 行业动态 更新时间:2024-10-23 11:31:08

MATLAB与高等数学--导数计算与<a href=https://www.elefans.com/category/jswz/34/1751454.html style=极值的求解"/>

MATLAB与高等数学--导数计算与极值的求解

diff命令

通过调用diff命令来计算符号导数:

octave:2> syms x t;
Symbolic pkg v2.8.0: Python communication link active, SymPy v1.5.
octave:3> f = x^2;
octave:4> g = sin(10*t);
octave:5> diff(f)
ans = (sym) 2⋅x
octave:6> diff(g)
ans = (sym) 10⋅cos(10⋅t)

要想得到高阶导数,使用:

diff(f,n);

让我们来看一个例子,求它的二阶导数:


octave:8> clear
octave:9> syms t;
octave:10> f = t.*exp(-3*t);
octave:11> diff(f,2)
ans = (sym)-3⋅t3⋅(3⋅t - 2)⋅ℯ    

我们可以看到diff返回求导结果,因此我们可以把结果赋值给另一个变量,以便后面使用,让我们再看一个例题:

首先让我们做一些定义:


octave:13> clear
octave:14> syms x;
octave:15> f = x.^2;
octave:16> g = 2*x;

接下来让我们计算所需的导数:

octave:17> h = diff(f)
h = (sym) 2⋅x

最后检验:

octave:18> -h+g
ans = (sym) 0

例题:


定义函数:


octave:20> syms t;
octave:21> y = 3*sin(t)+7;
octave:22> f = -5*cos(2*t);

然后检查两边是否相等:

octave:23> a = diff(y,2)+y
a = (sym) 7
octave:24> isequal(a,f)
ans = 0

由于返回0,所以y不是此方程的解。
例题:

octave:26> clear
octave:27> syms x;
octave:28> f = x.^3-3*x.^2+3*x;
octave:29> ezplot(f,[0 2])


要求出最大值和最小值,我们要对函数求导并找出零点:

octave:30> g = diff(f)
g = (sym)2          3⋅x  - 6⋅x + 3

可以使用pretty命令来让表达式更好看一点:

octave:31> pretty(g)2          3⋅x  - 6⋅x + 3

由于我使用的是Octave Oline 所以可能看着没有差别。
接下来我们求出导数等于0的根:

octave:32> s = solve(g)
s = (sym) 1

接下来我们使用subs命令来带入函数中的某个值,我们想知道x = 0,1,2时函数f的值:

octave:33> subs(f,0)
ans = (sym) 0
octave:34> subs(f,1)
ans = (sym) 1
octave:35> subs(f,2)
ans = (sym) 2

导数在这些点的值:

octave:36> subs(g,0),subs(g,1),subs(g,2)
ans = (sym) 3
ans = (sym) 0
ans = (sym) 3

导数的临界点:

octave:37> h = diff(g)
h = (sym) 6⋅x - 6
octave:38> solve(h)
ans = (sym) 1

三阶导:

octave:39> y=diff(h)
y = (sym) 6

g(x)的图像:

让我们再看一个例子:
绘制
的图像并显示最大值和最小值。
首先我们定义函数并且绘制它的图像:

syms x;
f = x.^4-2*x.^3;
ezplot(f,[-2 3])
hold on


现在计算一阶导数:

h = (sym)3      24⋅x  - 6⋅x 

我们把导数设置为0然后求临界值:

s = (sym 2×1 matrix)⎡ 0 ⎤⎢   ⎥⎣3/2⎦

下一步我们计算二阶导数:

g = (sym) 12⋅x⋅(x - 1)

现在我们来将一阶导数等于0的点带入二阶导数来判断是极大值还是极小值:

a = (sym) 0
b = (sym) 9

我们可以看到,x = 3/2时二阶导数大于0,所以f(3/2)是极小值。
现在我们修改图像来让它显示最小值点:


我们还可以使用text命令来做一些个性化的操作:

text(0.8,3.2,'局部最小值')

更多推荐

MATLAB与高等数学--导数计算与极值的求解

本文发布于:2023-07-27 22:09:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1226536.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:极值   导数   高等数学   MATLAB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!