MATLAB多元函数导数
matlab第五章函数、导数与积分等

函数值、多项式、导数、定积分、 二重积分、非线性方程(组)、级 数的计算
1.函数值的计算
例1 计算y sin x sin 2x sin 3x在x 处的函数值。
6
解:
x=pi/6; y=sin(x)+sin(2.*x)+sin(3.*x); x,y x = 0.5236 y = 2.3660
r = []
1 x4 1
1 4
(
1 x 1
1 x 1
2
x2
) 1
将简单分式之和并为有理分式
例6
a=[2.6667,0.3333];
b=[-2,1];r=[1,-1];
[p,q]=residue(a,b,r)
p=
1.0000
0
0
q=
1 1 -2
-0.0001
3.导数的数值计算
[fx,fy]=gradient(f, x, y) yx=diff(y)./diff(x)
ex2 2dx
解:
function y=f(x)
y=exp(-x.^2/2); [S2,nf]=quad('simp12',-8,8) S2 = 2.5066 nf = 105
Newton Cotes法:[S,nf]=quad8(‘F’,a,b,tol)
2.多项式的计算
多项式的表示法:p=[1,0,-12,5] 多项式在给定点的值:p=[4,-3,2,1];
y=polyval(p,5) y = 436 多项式方程求根:roots p1=[1,0,-12,5];p2=[1,0,-12,20];x1i=roots(p1) x1i = -3.6562 3.2332 0.4230 x2i=roots(p2) x2i = -4.1072 2.0536 + 0.8075i 2.0536 - 0.8075i
matlab求导数的函数

matlab求导数的函数
Matlab 中有很多用来求导数的函数,主要包括:
1、 diff函数: diff函数是matlab中直接求导数的函数,它
的语法如下: yd=diff(y) ,其中输入y是一个向量,yd就是y的
导数,yd的维度比y少一维。
2、 gradient函数: gradient函数是matlab中求梯度的函数,它的语法如下: [fx,fy]=gradient(f),其中输入f是一个二维函数的矩阵,fx和fy是f的分别沿x和y方向的梯度,类似于diff函数,他们的维度比f的最外一层维度少一个,即fx和f,的行列数
是一样的,而fx的列数比f少一格。
3、 jacobian函数: jacobian函数是matlab中用来求变量函
数的Jacobian矩阵的函数,它的语法如下: J=jacobian(vector,in),vector是一个向量,in是一个矩阵,J是它们的Jacobian矩阵。
4、 quadjac函数:quadjac函数是matlab中用来求解二次型的Jacobian矩阵的函数,它的语法如下: J =quadjac(f,x),其中f
是一个二次型的函数,x是变量,J是它们的Jacobian矩阵。
- 1 -。
matlab导数

matlab导数Matlab一款功能强大的数学软件,可以用来计算各种数学函数,甚至可以用来计算数值微分(Numerical Differentiation),研究Matlab数很有必要。
什么是导数?在数学中,函数的导数指的是函数变化量的变化率,也就是曲线的斜率。
导数的计算可以有很多方法,但是 Matlab供的一种方法叫做中点法(Midpoint Method)。
中点法(Midpoint Method)是一种数值微分的计算方法,它可以像其它方法一样有效地计算函数的导数。
在这种方法中,先计算函数在两点之间的中点,然后计算两点之间函数值的差值,并除以两个点之间的间距。
首先,我们以函数f(x)=x2为例来说明这种方法。
首先,我们定义函数f(x),在Matlab中可以用以下代码表示:f=@(x) x.^2;接下来,我们定义两个点 a b在 Matlab 中可以用以下代码表示:a=0;b=2;然后,定义中点 c,在 Matlab 中可以用以下代码表示:c=(a+b)/2;接下来,利用中点法,可以计算出函数f(x)在点 a b 之间的导数,即斜率,在 Matlab 中可以用以下代码表示:slope=(f(b)-f(a))/(b-a);最后,输出结果,在 Matlab 中可以用以下代码表示:disp(slope);以上就是利用 Matlab算数值微分的中点法,也就是计算函数的导数的基本思路。
除了中点法,还有其他的方法用来计算函数的导数,比如梯形法(Trapezoidal Rule)、改进梯形法(Improve Trapezoidal Rule)和拉格朗日插值法(Lagrange Interpolating Polynomial),这些方法在 Matlab 中也都可以实现。
梯形法就是在一段区间内,以同等距离分割出多个点,然后用分割出的每一小段梯形结合积分计算函数导数。
进梯形法(Improve Trapezoidal Rule)与梯形法类似,只是利用了三点梯形,即将这段区间分成三部分,每部分用一个梯形来进行积分计算。
matlab求导方法

matlab求导方法Matlab中求导是非常常用的操作,因为它是一个数学和科学计算的工具。
在Matlab中,我们可以使用不同的方法来求导,例如数值方法和符号方法。
本文将详细介绍Matlab中常用的求导方法,并进行详细的演示和讨论。
首先,我们来介绍一下Matlab中的数值求导方法。
数值求导方法是通过计算函数在离散点上的差分来近似求解函数的导数。
在Matlab中,常用的数值求导方法有前向差分、后向差分和中心差分。
前向差分法是通过计算函数在当前点和下一个点的差值来近似求解导数。
具体的计算公式如下:```matlabdfdx = (f(x+h) - f(x)) / h```其中,`f(x)`是要求导的函数,`h`是步长,`dfdx`是函数在`x`处的导数。
可以看到,前向差分法是通过斜线法线方向的差值来近似导数。
在Matlab中,我们可以使用`diff`函数来快速计算前向差分法的导数。
后向差分法与前向差分法类似,只是差值的方向相反。
具体的计算公式如下:```matlabdfdx = (f(x) - f(x-h)) / h```与前向差分法一样,后向差分法也可以使用`diff`函数来计算。
中心差分法是通过计算函数在当前点和前后点的差值来近似求解导数。
具体的计算公式如下:```matlabdfdx = (f(x+h) - f(x-h)) / (2*h)```可以看到,中心差分法是通过两个斜线法线方向的差值来近似导数。
在Matlab中,也可以使用`diff`函数来计算中心差分法的导数。
除了数值求导方法,Matlab还提供了符号求导方法。
符号求导方法通过利用符号计算的能力来直接求解函数的导数。
在Matlab中,通过定义符号变量和符号函数,可以使用`diff`函数来快速求解函数的导数。
下面是一个简单的例子:```matlabsyms xf = x^2 + sin(x);dfdx = diff(f, x);```在上面的例子中,我们首先定义了一个符号变量`x`,然后定义了一个符号函数`f`,最后使用`diff`函数来计算函数`f`关于变量`x`的导数`dfdx`。
2.5 利用MATLAB求解函数导数

2.5.3 参数方程求导
例7
已知参数方程
x t sin t
y
1
cos
t
,求
dy dx
,
d2 y dx2
解: 输入
>> syms t;x=t*sin(t);y=1-cos(t); >>dx=diff(x,t);dy=diff(y,t);dy/dx
ln cos x 1 x
答案:-sin(x)/cos(x)*(1-x^(1/2))-1/2*log(cos(x))/x^(1/2)
(3)已知函数 y cosx ,求 y7 x 。 4 答案:-0.7071
•见配套习题册
上机练习
dy
用matlab求下列一阶导数 dx
(1) y ex sin x
(2) y ln(1 x2 )
(3) y x x ln x
(4) y sin(2x )
(5) y ln(arccos 2x) (6) sin(x y) x2 y2
y a cos(t 1)
(7)
x
sin(t
输出 ans = sin(t)/(sin(t)+t*cos(t))
输入 >>d2y=diff(dy/dx,t);d2y/dx
输出
ans = (cos(t)/(sin(t)+t*cos(t))sin(t)/(sin(t)+t*cos(t))^2*(2*cos(t)t*sin(t)))/(sin(t)+t*cos(t))
例4
已知函数
f
(x)
cos x
用Matlab进行求导运算

y = e sin x
x
y = ln(1 x 2 ) y = sin(2 x ) y = ln(arccos 2 x) y = e x sin x
y = x ln x
x
y=x
x
用matlab求下列二阶导数 求下列二阶导数
y = (1 + x )acr tan x
2
例4:求函数 y = tan x :
解
的导数
>> syms x
>> diff(tan(x))
ans = 1 + tan(x )^ 2
例5:求函数 y = sin x 的导数 :
解
>> syms x
>> diff(sin(sqrt(x)))
ans = 1 / 2 * cos(x ^ (1 / 2))/ x ^ (1 / 2)
解
>> syms x >> diff(x ^ 3 + cos(x) + log(2))
ans = 3 * x ^ 2 sin(x )
例3:求函数 y = 2 x sin x :
解
的导数
>> syms x >> diff(2 * sqrt(x) * sin(x))
ans = 1 / x ^ (1 / 2) * sin(x ) + 2 * x ^ (1 / 2) * cos(x )
解
>> syms x
ห้องสมุดไป่ตู้
>> diff(exp(-x) * cos(x),x,2)
ans = 2 * exp(x ) * sin(x )
实验5__matlab自定义函数及导数应用

在区间 ( ,1) 与 (1, ) f ( x ) ,在区间 (1,3) f ( x ) , fmax (1) 7 fmin ( 3) 3
可建立一个名为 dandiao.m 文件,用来求函数 的单调区间。
disp('输入函数(自变量为x)'); syms x; f=input('f(x)='); df=diff(f); s=solve(df); s=eval(s) a=[]; for i=1:length(s); a(i)=s(i); end ezplot(f,[min(a)-1,max(a)+1])
grid21816141210806040215105发现在16和06附近各有一个零点我们分两个小区间分别求解fzerofun212fzerofun1201ans15956ans06180fzerofun16fzerofun06ans15956ans27656xfhfsolvefunx0返回一元或多元函数fun在x0附近的一个零点
解: 求可导函数的单调区间与极值,就是求导 函数的正负区间与正负区间的分界点。 先求导函数的零点,再画出函数图像,根据 图像可直观地看出函数的单调区间与极值。 syms x; f=x^3-6*x^2+9*x+3;df=diff(f,x);s=solve(df)
s = [ 1] [ 3]
ezplot(f,[0,4])
建立正态分布的密度函 数
( x )2 2 2
1 f ( x , , ) e 2 function y=zhengtai(x,a,b)
y=1/sqrt(2*pi)*a*exp(-(x-b)^2/2/a^2)
存为 zhengtai.m,调用时可输入命令: y=zhengtai(1,1,0) ans=0.2420
2 MATLAB函数导数(微分)与积分

Exam ple3
求
1 1 x2
dx
解: >> clear >> syms x >> int(1/(1+x^2),x,-inf,+inf) ans = pi
将 四 边 折 起 做 成 一 个 无盖 的 方 盒 。 问 截 掉 的
小 正 方 形 边 长 多 少 时 ,所 得 方 盒 的 容 积 最 大
解:(1)问题假设:设截掉小正方形边长为x; 方盒容积为V
(2)模型建立: V (6 2x)2 x
(3)模型求解: V ( x) 0 x
>> syms x >> dy=diff('(6-2*x)^2*x',x) dy = -4*(6-2*x)*x+(6-2*x)^2 >> x0=solve(dy) x0 =
三、利用Matlab求函数零点
1、求多项式的根 设多项式f ( x) Axa Bxb Cxc Sx T 命令格式为: roots([A,B,C,…..,S,T])=求f(x)=0的根 注意(remark): (1)系数要按由高到低依次来输入。 (2)中间某个次数没有认为系数为零。
Example4 求隐函数y sin(x y)的导数。
>> syms x y >> diff('y(x)=sin(x+y(x))','x') ans = diff(y(x),x) = cos(x+y(x))*(1+diff(y(x),x))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六 多元函数的极值【实验目的】1. 多元函数偏导数的求法。
2. 多元函数自由极值的求法 3. 多元函数条件极值的求法.4. 学习掌握MATLAB 软件有关的命令。
【实验内容】求函数32824-+-=y xy x z 的极值点和极值【实验准备】1.计算多元函数的自由极值对于多元函数的自由极值问题,根据多元函数极值的必要和充分条件,可分为以下几个步骤:步骤1.定义多元函数),(y x f z =步骤2.求解正规方程0),(,0),(==y x f y x f y x ,得到驻点步骤3.对于每一个驻点),(00y x ,求出二阶偏导数,,,22222yzC y x z B x z A ∂∂=∂∂∂=∂∂= 步骤4. 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点是极值点,当0>A 为极小值, 0<A 为极大值;,如果02=-B AC ,判别法失效,需进一步判断; 如果02<-B AC ,则该驻点不是极值点.2.计算二元函数在区域D 内的最大值和最小值设函数),(y x f z =在有界区域D 上连续,则),(y x f 在D 上必定有最大值和最小值。
求),(y x f 在D 上的最大值和最小值的一般步骤为:步骤1. 计算),(y x f 在D 内所有驻点处的函数值;步骤2. 计算),(y x f 在D 的各个边界线上的最大值和最小值;步骤3. 将上述各函数值进行比较,最终确定出在D 内的最大值和最小值。
3.函数求偏导数的MATLAB 命令MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。
可以用help diff, help jacobian 查阅有关这些命令的详细信息【实验方法与步骤】练习1 求函数32824-+-=y xy x z 的极值点和极值.首先用diff 命令求z 关于x,y 的偏导数>>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y)结果为ans =4*x^3-8*y ans =-8*x+4*y 即.48,843y x yz y x x z +-=∂∂-=∂∂再求解正规方程,求得各驻点的坐标。
一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。
求解正规方程的MATLAB 代码为:>>clear;>>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y')结果有三个驻点,分别是P(-2,-4),Q(0,0),R(2,4).下面再求判别式中的二阶偏导数:>>clear; syms x y;>>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2) >>B=diff(diff(z,x),y) >>C=diff(z,y,2)结果为A=2*x^2 B =-8 C =4由判别法可知)2,4(--P 和)2,4(Q 都是函数的极小值点,而点Q(0,0)不是极值点,实际上,)2,4(--P 和)2,4(Q 是函数的最小值点。
当然,我们可以通过画函数图形来观测极值点与鞍点。
>>clear;>>x=-5:0.2:5; y=-5:0.2:5; >>[X,Y]=meshgrid(x,y);>>Z=X.^4-8*X.*Y+2*Y.^2-3;>>mesh(X,Y,Z)>>xlabel('x'),ylabel('y'),zlabel('z')结果如图6.1图6.1 函数曲面图可在图6.2种不容易观测极值点与鞍点,这是因为z的取值范围为[-500,100],是一幅远景图,局部信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值.>>contour(X,Y,Z, 600)>>xlabel('x'),ylabel('y')结果如图6.2图6.2 等值线图由图6.2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点-P和)2,4(Q.根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指(-,4)2Q周围没有等高线环绕,不向函数增加的方向.由此可知,极值点应该有等高线环绕,而点)0,0(是极值点,是鞍点.练习2 求函数xy z =在条件1=+y x 下的极值..构造Lagrange 函数)1(),(-++=y x xy y x L λ求Lagrange 函数的自由极值.先求L 关于λ,,y x 的一阶偏导数>>clear; syms x y k >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k)得,1,,-+=∂∂+=∂∂+=∂∂y x L x y L y x L λλλ再解正规方程 >>clear; syms x y k>>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k')得,21,21,21-===λy x 进过判断,此点为函数的极大值点,此时函数达到最大值.练习3 抛物面22y x z +=被平面1=++z y x 截成一个椭圆,求这个椭圆到原点的最长与最短距离.这个问题实际上就是求函数222),,(z y x z y x f ++=在条件22y x z +=及1=++z y x 下的最大值和最小值问题.构造Lagrange 函数)1()(),,(22222-+++-++++=z y x z y x z y x z y x L μλ求Lagrange 函数的自由极值.先求L 关于μλ,,,,z y x 的一阶偏导数>>clear; syms x y z u v>>l=x^2+y^2+z^2+u*(x^2+y^2-z)+v*(x+y+z-1); >>diff(l,x) >>diff(l,y) >>diff(l,z) >>diff(l,u) >>diff(l,v)得μλμλμλ+-=∂∂++=∂∂++=∂∂z zL y y y L x x x L 2,22,221,22-++=∂∂-+=∂∂z y x L z y x L μλ 再解正规方程>>clear;>>[x,y,z,u,v]=solve('2*x+2*x*u+v=0','2*y+2*y*u+v=0','2*z-u+v=0', 'x^2+y^2-z=0','x+y+z-1=0','x','y','z','u','v')得.32,231,33117,3353 =±-==±-=±-=z y x μλ 上面就是Lagrange 函数的稳定点,求所求的条件极值点必在其中取到。
由于所求问题存在最大值与最小值(因为函数f 在有界闭集}1,:),,{(22=++=+z y x z y x z y x ,上连续,从而存在最大值与最小值),故由359.)32,231,231(=±-±-f 求得的两个函数值,可得椭圆到原点的最长距离为359+,最短距离为359-。
练习4 求函数72422+--+=y x y x z 在上半圆0,1622≥≤+y y x 上的最大值和最小值。
首先画出等高线进行观测,相应的MATLAB 程序代码为:>>clear;>>x=-4:0.1:4; y=-4:0.1:4; >>[X,Y]=meshgrid(x,y); >>Z=X.^2+Y.^2-4*X-2*Y+7; >>contour(X,Y,Z,100) >>xlabel('x'),ylabel('y')结果如图6.3观测图6.3可看出,在区域D 内部有唯一的驻点,大约位于)1,2(在该点处汉书趣的最小值。
在圆弧与直线的交点处取得最大值,大约位于)2,4(-。
下面通过计算加以验证。
求函数在区域D 内的驻点,计算相应的函数值。
求z 关于x,y 的偏导数>>clear; syms x y; >>z=x^2+y^2-4*x-2*y+7; >>diff(z,x) >>diff(z,y)结果得,22,42-=∂∂-=∂∂y yz x x z 解正规方程 >>clear; [x,y]=solve('2*x-4=0','2*y-2=0','x','y')得驻点为(2,1),相应的函数值为2。
求函数在直线边界44,0≤≤-=x y 上的最大值和最小值。
将0=y 代入原函数,则二元函数变为一元函数.44,742≤≤-+-=x x x z首先观测此函数图形,相应的MATLAB 程序代码为:>>x=-4:0.01:4; y=x.^2-4*x+7; >>plot(x,y);>>xlabel('x'),ylabel('z')结果如图6.4所示由图6.4可看出,当4-=x 时函数取得最大值,2=x 时函数取得最小值。
下面用计算验证。
对函数求导>>clear; syms x ; >>z=x^2-4*x+7; diff(z,x) 得42-=x dxdz,可知驻点为2=x ,而边界点为4±=x ,计算着三个点上的函数值可得当4-=x 时函数取得最大值39,2=x 时函数取得最小值3。
求函数在圆弧边界线上0,1622≥≤+y y x 的最大值和最小值。
此边界线可用参数方程π≤≤==t t y t x 0,sin 4,cos 4表示。