MATLAB导数的计算

上传人:M****1 文档编号:495454976 上传时间:2022-11-28 格式:DOC 页数:10 大小:208.50KB
返回 下载 相关 举报
MATLAB导数的计算_第1页
第1页 / 共10页
MATLAB导数的计算_第2页
第2页 / 共10页
MATLAB导数的计算_第3页
第3页 / 共10页
MATLAB导数的计算_第4页
第4页 / 共10页
MATLAB导数的计算_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《MATLAB导数的计算》由会员分享,可在线阅读,更多相关《MATLAB导数的计算(10页珍藏版)》请在金锄头文库上搜索。

1、MATLAB求导数的方法1数值导数的计算问题求正弦函数的一阶导数和二阶导数y=sinx数学模型函数的一阶导数为y=cosx函数的二阶导数为ffy=-sinx算法求差分函数为diff,对于数值向量,其功能是求后一元素与前数值间隔取得足够小,就能表示导数的近似值。对于符号函数,可用同样的函数diff计算符号导数。程序zyq3_ldiff.m如下。%正弦函数的导数clear元素之差,如果a=0:5:360;x=a*pi/180;dx=x(2);y=sin(x);dy=diff(y)/dx;%清除变量%度数向量%弧度向量%间隔(第1个值为零)%正弦曲线%用差分求导数的近似值dy=dy(l),(dy(l

2、:end-l)+dy(2:end)/2,dy(end);%求平均值figure%plot(x,cos(x),x(1:end-1),dy,.)%plot(x,cos(x),x(2:end),dy,.)plot(x,cos(x),x,dy,.)%创建图形窗口%画导数曲线(数值导数偏左)%画导数曲线(数值导数偏右)%画导数曲线(数值导数适中)s=sym(sin(x);sdy=diff(s);ssdy=subs(sdy,x,x);holdonplot(x,ssdy,ro)legendC公式解,数值解,符号解,4)title(正弦函数的一阶导数)%定义符号函数%符号导数%替换数值%保持图像%画导数曲线%

3、加图例%标题d2y=diff(dy)/dx;%用差分求导数的近似值d2y=d2y(l),(d2y(l:endT)+d2y(2:end)/2,d2y(end);%求平均值lfigureplot(x,-sin(x),x,d2y,.)sd2y=diff(s,2);ssd2y=subs(sd2y,x,x);holdonplot(x,ssd2y,ro)%创建图形窗口%画导数曲线(数值导数适中)%符号二阶导数%替换数值%保持图像%画导数曲线lllegendC公式解,数值解,符号解,4)%加图例title(正弦函数的二阶导数)%标题图示#2.函数极值的计算问题求如下函数的极值y=X3一3x2+x(1)数学模

4、型求导数y=3x2一6x+1令y=0,解得1(3土6)=1.8165,0.1835X算法将自变量设计为向量,函数设计为内线函数,用max函数和min函数求极大值和极小值。用fminbnd函数也可求函数的极小值。将原函数定义为负的内线函数,用fminbnd函数求极小值,就是原函数的极大值。将原函数定义为符号函数,求原函数的导数,利用fzero函数可求导数的零点,从而求原函数的极值。程序zqy3_2diff.m如下。%函数的极值和导数%清除变量%自变量向量%定义原函数的内线函数%开创图形窗口%画原函数曲线%加网格%横坐标clearX.x=0:0.01:2.5;f=inline(x.3-3*x.2+

5、x);figureplot(x,f(x),LineWidth,2)gridonxlabel(itx,FontSize,16)title(函数曲线和极值,FontSize,16)%标题ym,im=max(f(x);%求极大值和下标xm=x(im);%求极大值的横坐标holdon%保持图像plot(xm,ym,*)%画极大值text(xm,ym,num2str(xm),num2str(ym),FontSize,16)%标记极大值ym,im=min(f(x);%求极小值和下标xm=x(im);%求极小值的横坐标plot(xm,ym,*)%画极小值text(xm,ym,num2str(xm),num2

6、str(ym),FontSize,16)%标记极小值xm=fminbnd(f,0,3);%求最小值plot(xm,f(xm),o)%画极小值text(xm,0,num2str(xm),num2str(f(xm),FontSize,16)%显示极小值ff=inline(-(x.3-3*x.2+x);%定义原函数的内线函数xm=fminbnd(ff,0,3);%求最小值plot(xm,f(xm),o)%画极小值text(xm,0,num2str(xm),num2str(f(xm),FontSize,16)%显示极小值%returny=sym(x3-3*x2+x)%原函数的符号函数dy=diff(y

7、)%求导数df=inline(char(dy)%定义导数的内线函数x1=fzero(df,0)%求零点x2=fzero(df,2)%求零点stem(x1,x2,f(x1),f(x2),-o)%画杆线text(x1,0,num2str(x1),num2str(f(x1),FontSize,16)%标记极值text(x2,0,num2str(x2),num2str(f(x2),FontSize,16)%标记极值加西戟曲纽禮極怕结果y=x3-3*x2+xdy=3*x2-6*x+ldf=Inlinefunction:df(x)=3*x2-6*x+lx1=0.1835x2=1.81653参数方程的导数问

8、题求下面参数方程的一阶导数和二阶导数1x-(1)t+1ty(2)数学模型由(1)式得(t+1)2t=-1(3)上式代入(2)式得x这是开口向下的抛物线。其导数为y=x-x2(4)这是一条直线。由此可得二阶导数y=1-2x(5)y=2(6)将(1)式和(2)式对时间求导数dx,1dt(t+1)2dy(t+1)212(t+1)t+1dt(t+1)4(t+1)3y对x的一阶导数为,dydy/dtt-1(9)(10)y二dxdx/dtt+1将(3)式代入上式可得(7)式。上式再对时间求导数dy2dt(t+1)2y对x的二阶导数为y”=空=也dxdx/dt(11)算法将x和y定义为参数t的符号函数,依次

9、求符号导数3diff.m如下。程序zqy3_%参数方程导数的计算clearx=sym(1/(t+1);y=sym(t/(t+l)2);t=-0.5:0.1:20;xx=subs(x,t,t);yy=subs(y,t,t);figure%清除变量%定义x符号函数%定义y符号函数%参数向量%替换数值求横坐标%替换数值求纵坐标%创建图形窗口plot(xx,yy,LineWidth,2)%画函数曲线gridon%加网格xlabel(itx,FontSize,16)%横坐标ylabel(ity,FontSize,16)%纵坐标title(函数曲线,FontSize,16)%标题dx=diff(x)%求乂

10、符号导数dy=diff(y)%求丫符号导数dy_dx=dy/dx%求丫对X的导数simplify(dy_dx)%化简dy=subs(dy_dx,t,t);%替换数值求导数figure%创建图形窗口plot(xx,dy,LineWidth,2)%画导数曲线gridon%加网格xlabel(itx,FontSize,16)%横坐标ylabel(dityrm/ditx,FontSize,16)%纵坐标title(函数的导数曲线,FontSize,16)%标题d2y=diff(dy_dx)%求符号二阶导数d2y_dx2=d2y/dx%求丫对X的二阶导数simplify(d2y_dx2)%化简函數曲蛙半

11、ii-丨丨養flgPI113HKiU5X1结果dx=-1/(t+1)2dy=1/(t+1)2-2*t/(t+1)3dy_dx=-(1/(t+1)2-2*t/(t+1)3)*(t+1)2ans=(t-1)/(t+1)d2y=-(-4/(t+1)3+6*t/(t+1厂4)*(t+1)2-2*(1/(t+1)2-2*t/(t+1)3)*(t+1)d2y_dx2=-(-(-4/(t+1)3+6*t/(t+1)4)*(t+1)2-2*(1/(t+1)2-2*t/(t+1)3)*(t+1)*(t+1)2ans=-24隐函数的导数问题求下面参数方程的一阶导数和二阶导数y5+2y一x一3x7=0(1)数学模型

12、(1)式对x求导数5y4y+2y-1一21x6=0(2)因此y对x的一阶导数为(3)(4)1 21x62 5y4y对x的二阶导数为(25y4)126x5-(1+21x6)20y3yf(25y4)2将(3)式代入上式,可得126x52+5y420(121x6)2y3(25y4)3(5)#%横坐标向量%纵坐标向量%坐标矩阵%二元函数值%创建图形窗口%画零值线%加网格%横坐标算法利用符号计算求一阶导数和二阶导数。取横坐标和纵坐标向量,化为矩阵,计算表达式(1)之值,利用contour函数画零值线,这就是函数曲线。取出零值线的横坐标和纵坐标,利用(3)式和(5)式画导数曲线。程序zqy3_4diff.

13、m如下。%隐函数导数的计算clearsymsdyyz=sym(y(x)5+2*y(x)-x-3*x7);dz=diff(z,x)%清除变量%定义符号变量%定义符号函数%求符号导数s=subs(dz,diff(y(x),x),y(x),dy,y)%替换导数和变量符号dy_dx=solve(s,dy)d=subs(dy_dx,y,y(x)d2z=diff(d)%求符号导数%替换y为函数y(x)%求导数d2y_dx2=subs(d2z,diff(y(x),x),y(x),dy_dx,y)%替换导数和变量符号x=-2:0.01:2;y=-2:0.01:2;X,Y=meshgrid(x,y);Z=Y.5+2*Y-X-3*X.7;figureC=contour(x,y,Z,0,0);gridonxlabel(itx,FontSize,16)d2y=126*x.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号