资源描述:
《工程应用数学 第2版 教学课件 作者 万金保 5-6.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、工程应用数学§5.6MATLAB与导数运算1§5.6MATLAB与导数运算1、求导运算在MATLAB里由命令函数diff()来完成,其具体形式为:diff(function,’variable’,n)参数function为需要进行求导运算的函数,variable为求导运算的独立变量,n为求导的阶次。命令函数diff()默认求导的阶次为1阶;如果表达式里有多个符号变量,并且没有在参数里说明,则按人们习惯的独立变量顺序确定进行求导的变量。2§5.6MATLAB与导数运算2、求N个方程N个未知数的方程组解的命令格式为:[var1,var2,
2、….,varN]=solve(‘eqn1’,’eqn2’,….,’eqnN’,’var1’,’var2’,….,’varN’)其中’eqnN’表示第N个方程,’varN’为第N个变量.3§5.6MATLAB与导数运算3、MATLAB也提供了另一个功能强大的画图函数ezplot,格式为:ezplot(‘fun’,[a,b]),其中[a,b]可省略,缺省状态下为[].4§5.6MATLAB与导数运算例5-60求函数y=x5+4sinx–cosx+7的导数。解:在命令窗口中输入>>symsx>>y=x^5+4*sin(x)-cos(x)+7
3、;>>diff(y,'x')所以y’=5x4+4cosx+sinx按回车键,显示结果为:ans=5*x^4+4*cos(x)+sin(x)5§5.6MATLAB与导数运算例5-61求函数的导数。解:在命令窗口中输入>>clear>>symsx>>y=((x+1)^2/((x-1)*(x+2)))^(1/3);>>diff(y,'x')6§5.6MATLAB与导数运算按回车键,显示结果为:ans=1/3/((x+1)^2/(x-1)/(x+2))^(2/3)*(2*(x+1)/(x-1)/(x+2)-(x+1)^2/(x-1)^2/(x
4、+2)-(x+1)^2/(x-1)/(x+2)^2)7§5.6MATLAB与导数运算上式显示结果较为复杂,我们可以用pretty函数,令结果显示得更为直观在命令窗口中输入:>>pretty(ans);所以把结果进行简化可以写成8§5.6MATLAB与导数运算例5-62求s=e–tcost的二阶导数。解:在命令窗口中输入>>clear>>symst;>>s=exp(-t)*cos(t);>>diff(s,'t',2)按回车键,显示结果:ans=2*exp(-t)*sin(t)所以s=2e–tsint9§5.6MATLAB与导数运算例
5、5–63以初速度v0,发射角发射炮弹,其运动方程为求炮弹在任何时刻的运动速度的大小和方向。解:在MATLAB中输入以下命令:>>symsav0tg;>>x=v0*cos(a)*t;10§5.6MATLAB与导数运算>>y=v0*sin(a)*t-1/2*g*t^2;>>vx=diff(x,'t');>>vy=diff(y,'t');>>v=sqrt(vx^2+vy^2);%求炮弹的运动速度>>v=simplify(v)%simplify表示对函数v进行化简>>tanb=vy/vx;%求炮弹的方向>>pretty(tanb);11§5
6、.6MATLAB与导数运算按回车键,显示结果为:v=(v0^2-2*v0*sin(a)*g*t+g^2*t^2)^(1/2)v0sin(a)-gt---------------v0cos(a)所以12§5.6MATLAB与导数运算例5–64求函数f(x)=(x2–1)3+1的极值。解:在MATLAB中输入>>symsx>>y=(x^2-1)^3+1;>>yx=diff(y);>>X=solve(yx)>>ezplot(y,[-1.5,1.5])13§5.6MATLAB与导数运算按回车键,显示结果为:X=0,1,-1,1,-1所以驻点为
7、:x=-1,0,1;从函数图象中可以看出:x=0取得函数的极小值。从函数的图象中我们可以观察出来函数的极小值为f(0)=0.14§5.6MATLAB与导数运算例5–65铁路线上AB段的距离为100千米,工厂C距离A处为20千米,AC垂直于AB.为了运输需要,要在AB线上选定一点D向工厂修一条公路。已知铁路上每千米货运的费用与公路上每千米的货运费用之比为35。为了使货物从供应站B到工厂C的总运费最省,问D应选在何处?15§5.6MATLAB与导数运算解:通过建模过程,我们知道问题归结为:求x取何值时,函数y在区间[0,100]内取得最
8、小值。在MATLAB中输入>>clear16§5.6MATLAB与导数运算>>symskx;>>y=5*k*sqrt(400+x^2)+3*k*(100-x);>>yx=diff(y,'x');>>x=solve(yx)