实验5matlab自定义函数与导数应用(精)
Matlab-实验导数中的应用

2014-3-24
练习、画出分段函数的图形。
x2 , x [2, 0] f ( x ) 2 log 2 ( x 1), x (0,1] x x (1, 2] 2 ,
2014-3-24
《高等数学》实验
第二节 Matlab 计算导数
实验二 求函数的导数
lim x ln x
x 0
2014-3-24
《高等数学》实验
1. 求函数 y 2 x 3x
3
2
的极值;
syms x y; dy=diff(2*x^3-3*x^2)
dy =
6*x^2-6*x >> [x]=solve(dy) x2014-3-24 = 0 驻点
《高等数学》实验
>> diff(dy) ans = 12*x-6
>> f1=inline(ans);
>> f1(x) ans =
2014-3-24
-6
《高等数学》实验
>> x=0;
>> 2*x^3-3*x^2 ans = 0
>> x=1;
>> 2*x^3-3*x^2
2014-3-24
ans =
《高等数学》实验
练习:
1. y x , 求y, y
n
2、求函数 f ( x ) ( x 1)( x 1) 的极值;
【目的】
1. 熟悉基本求导公式,掌握初等函数的
求导方法;
2. 会求函数在给定点处的导数值。
【要求】 熟悉,Matlab中的求导命令diff
2014-3-24
《高等数学》实验
高等数学:MATLAB实验

MATLAB实验
2.fplot绘图命令 fplot绘图命令专门用于绘制一元函数曲线,格式为:
fplot('fun',[a,b]) 用于绘制区间[a,b]上的函数y=fun的图像.
MATLAB实验 【实验内容】
MATLAB实验
由此可知,函数在点x=3处的二阶导数为6,所以f(3)=3为 极小值;函数在点x= 1处的二阶导数为-6,所以f(1)=7为极大值.
MATLAB实验
例12-10 假设某种商品的需求量q 是单价p(单位:元)的函 数q=12000-80p,商 品的总成本C 是需求量q 的函数 C=25000+50q.每单位商品需要纳税2元,试求使销售 利润达 到最大的商品单价和最大利润额.
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验 实验九 用 MATLAB求解二重积分
【实验目的】 熟悉LAB中的int命令,会用int命令求解简单的二重积分.
MATLAB实验
【实验M步A骤T】 由于二重积分可以化成二次积分来进行计算,因此只要
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
MATLAB实验
实验七 应用 MATLAB绘制三维曲线图
【实验目的】 (1)熟悉 MATLAB软件的绘图功能; (2)熟悉常见空间曲线的作图方法.
【实验要求】 (1)掌握 MATLAB中绘图命令plot3和 mesh的使用; (2)会用plot3和 mesh函数绘制出某区间的三维曲线,线型
实验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
Matlab 自定义函数 数学软件与数学实验 教学课件

函数名与文件名必须一致!
2020/10/2
函数必须单独写一个文件! 不能与命令文件写在同一个文件中!
自定义函数方式(三)
这种函数定义方式是将 f 作为一个内部函数调用。其特 点是:调用方式最接近于我们平时对函数的定义,使程序 更具可读性。同时由于它是基于 Matlab 的数值计算内核 的,所以它的运算速度较快,程序更有效率。
2020/10/2
自定义函数的五种方式
Matlab 自定义函数的五种方式
命令文件/函数文件+ 函数文件 - 多个 M 文件 函数文件 + 子函数 - 一个 M 文件 inline - 无需 M 文件 syms + subs 方式 - 无需 M 文件 字符串 + subs 方式 - 无需 M 文件
替代时,单引号可以省略。但如果在 syms 后又被重新 定义为其它类型,则必须加单引号,否则不可替换。
2020/10/2
自定义函数方式(四)
这种函数定义方法的一个特点是可以用符号进行替换
该方法的缺点也是明显的:由于使用符号运算内 核,运算速度会大大降低。
2020/10/2
自定义函数方式(五)
这种定义方式的缺点: 定义一个内联函数用去的内存空间比相同条件下其他 的方法要大得多。 该方法只能对数值进行代入,不支持符号代入,并且 对于定义后的函数不能进行求导等符号运算。
2020/10/2
自定义函数方式(三)
2020/10/2
自定义函数方式(三)
%函数文件:function []=funtry3() lfg=inline('x.^(1/3)');
2020/10/2
MATLAB计算方法和技巧 导数的计算

MATLAB求导数的方法1.数值导数的计算[问题]求正弦函数的一阶导数和二阶导数y = sin x[数学模型]函数的一阶导数为y' = cos x函数的二阶导数为y'' = -sin x[算法]求差分函数为diff,对于数值向量,其功能是求后一元素与前一元素之差,如果数值间隔取得足够小,就能表示导数的近似值。
对于符号函数,可用同样的函数diff计算符号导数。
[程序]zyq3_1diff.m如下。
%正弦函数的导数clear %清除变量a=0:5:360; %度数向量x=a*pi/180; %弧度向量dx=x(2); %间隔(第1个值为零)y=sin(x); %正弦曲线dy=diff(y)/dx; %用差分求导数的近似值dy=[dy(1),(dy(1:end-1)+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); %替换数值hold on%保持图像plot(x,ssdy,'ro') %画导数曲线legend('公式解','数值解','符号解',4) %加图例title('正弦函数的一阶导数') %标题d2y=diff(dy)/dx; %用差分求导数的近似值d2y=[d2y(1),(d2y(1:end-1)+d2y(2:end))/2,d2y(end)];%求平均值figure %创建图形窗口plot(x,-sin(x),x,d2y,'.') %画导数曲线(数值导数适中)sd2y=diff(s,2); %符号二阶导数ssd2y=subs(sd2y,'x',x); %替换数值hold on%保持图像plot(x,ssd2y,'ro') %画导数曲线legend('公式解','数值解','符号解',4) %加图例title('正弦函数的二阶导数') %标题[图示]2.函数极值的计算[问题]求如下函数的极值y = x3– 3x2 + x(1) [数学模型]求导数y' = 3x2– 6x + 1 (2) 令y' = 0,解得1(3x=±=1.8165,0.1835 (3)3[算法]将自变量设计为向量,函数设计为内线函数,用max函数和min函数求极大值和极小值。
Matlab函数定义和调用

Matlab 自定义函数
2021/7/1
1
自定义函数的五种方式
Matlab 自定义函数的五种方式
命令文件/函数文件+ 函数文件 :多个 M 文件 函数文件 + 子函数 : 一个 M 文件 inline : 无需 M 文件 符号表达式 + subs 方式 : 无需 M 文件 字符串 + subs 方式 : 无需 M 文件
这种函数定义方式是将 f 作为一个内部函数调用。其特 点是:调用方式最接近于我们平时对函数的定义,使程序 更具可读性。同时由于它是基于 Matlab 的数值计算内核 的,所以它的运算速度较快,程序更有效率。
这种定义方式的缺点: 定义一个内联函数用去的内存空间比相同条件下其他 的方法要大得多。 该方法只能对数值进行代入,不支持符号代入,并且 对于定义后的函数不能进行求导等符号运算。
function y = mylfg(x) y=x^(1/3);
函数名与文件名必须一致!
函数必须单独写一个文件!
不能与命令文件写在同一个文件中!
2021/7/1
3
自定义函数方式(二)
方式二:函数文件 + 子函数
%函数文件:funtry2.m function []=funtry2() for t=1:10
y=lfg2(t); fprintf('%4d^(1/3) = %6.4f\n',t,y); end
function y=lfg2(x) %%子函数 y=x^(1/3);
函数文件中可以定义一个或多个子函数,此时我们称该函
数为主函数,子函数只能被主函数或同一个函数文件中的
其它子函数调用!
2021/7/1
替代时,单引号可以省略。但如果在 syms 后又被重新 定义为其它类型,则必须加单引号,否则不可替换。
实验5 matlab自定义函数与导数应用

实验5 matlab 自定义函数与导数应用实验目的1.学习matlab 自定义函数.2.加深理解罗必塔法则、极值、最值、单调性.实验内容1.学习matlab 自定义函数及求函数最小值命令.函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我们输入自变量时,计算机才会给出函数值,matlab 软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab 允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab 函数库中,显然这为matlab 提供了扩展的功能,无庸置疑,这也正是matlab 的精髓所在.因为matlab 的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab 自定义函数是一个指令集合,第一行必须以单词function 作为引导词,存为具有扩展名“.m ”的文件,故称之为函数M -文件.函数M -文件的定义格式为:function 输出参数=函数名(输入参数)函数体……函数体一旦函数被定义,就必须将其存为M -文件,以便今后可随时调用.比如我们希望建立函数12)(2++=x x x f ,在matlab 工作区中输入命令:syms x ;y=x^2+2*x+1;不能建立函数关系,只建立了一个变量名为y 的符号表达式,当我们调用y 时,将返回这一表达式.y ↵y=x^2+2*x+1当给出x 的值时,matlab 不能给出相应的函数值来.x=3;y ↵y=x^2+2*x+1如果我们先给x 赋值.x=3;y=x^2+2*x+1得结果:y=16若希望得出2|=x y 的值,输入:x=2;y ↵得结果:y=16,不是2=x 时的值.读者从这里已经领悟到在matlab 工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill 打开matlab 文本编辑器,输入:function y=f1(x)y=x^2+2*x+1;存为f1.m .调用该函数时,输入:syms x ;y=f1(x)↵得结果:y= x^2+2*x+1.输入:y1=f1(3)↵得结果:y1=16matlab 求最小值命令fmin 调用格式:fmin(‘fun’,a ,b) 给出)(x f 在),(b a 上的最小值点.2.自定义函数例5.1.建立正态分布的密度函数222)(21),.,(σμ--σπ=μσx e x f解:打开文本编辑器,输入: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)得结果:y=0.2420.此即)0,1,1(f 的值.如果想画出标准正态分布的密度函数的图象,输入: ezplot(zhengtai(x ,1,0))例5.2.解一元二次方程02=++c bx ax .解:我们希望当输入c b a ,,的值时,计算机能给出方程的两个根.在文本编辑器中建立名为rootquad.m 的文件.function [x1,x2]=rootquad(a ,b ,c)d=b*b-4*a*c ;x1=(-b+sqrt(d))/(2*a)x2=(-b-sqrt(d))/(2*a)比如求方程07322=-+x x 的根,可用语句:[r1,r2]=rootquad(2,3,-7)得结果:r1=1.2656r2=-2.76562.验证罗必塔法则. 罗必塔法则是指在求00及∞∞的极限时,可用导数之比的极限来计算(如果导数之比的极限存在或∞)例5.3.以x ba x x x -→0lim 为例验证罗必塔法则.解:这是00型极限f=a^x-b^x ;g=x ;L=limit(f/g ,x ,0)得结果:L=log(a)-log(b)df=diff(f ,x);dg=diff(g ,x);L1=limit(df/dg ,x ,0)得结果:L1=log(a)-log(b)从结果看出:L=L1,即x b a x x x -→0lim =x b a x x x '-→'0)(lim4.函数的单调性与极值.例5.4.求函数396)(23++-=x x x x f 的单调区间与极值.解:求可导函数的单调区间与极值,就是求导函数的正负区间与正负区间的分界点,利用matlab 解决该问题,我们可以先求出导函数的零点,再画出函数图象,根据图象可以直观看出函数的单调区间与极值.输入命令:f=x^3-6*x^2+9*x+3;df=diff(f ,x);s=solve(df)得结果:ans=[1,3],画出函数图象.ezplot(f ,[0,4])从图上看,)(x f 的单调增区间为)1,(-∞、),1(+∞,单调减区间是)3,1(,极大值7)1(=f ,极小值3)3(=f .我们可以建立一个名为dandiao.m 的M —文件,用来求求函数的单调区间.disp(‘输入函数(自变量为x )’)syms xf=input('函数f(x)=')df=diff(f);s=solve(df)a=[];for i=1:size(s);a(i)=s(i); endezplot(f ,[min(a)-1,max(a)+1])要求函数)1ln(x x y +-=的单调区间与极值,可调用dandiao.m .输入:dandiao ↵在matlab 工作区出现以下提示:输入函数(自变量为x )函数f(x)=在光标处输入:x-log(1+x),可得结果s=0.从图上看,)(x f 的单调增区间为),0(+∞,单调减区间是)0,(-∞,极小值0)0(=f .5.函数的最值调用求函数最小值命令fmin 时,可得出函数的最小值点,为求最小值,必须建立函数M —文件.例5.5.求函数1)3()(2--=x x f 在区间)5,0(上的最小值.解:我们可以建立一个名为f.m 的函数M -文件.function y=f(x)y=(x-3).^2-1;并且调用fminx=fmin((‘f’,0,5)得:x=3,)(x f 在最小值点处的值(函数最小值)是1)3(-=f .求最大值时可用x=fmin(‘-f(x)’,a ,b)练习1.建立函数x x a a x f 3sin 31sin ),(+=,当a 为何值时,该函数在3π=x 处取得极值,它是极大值还是极小值,并求此极值.2.确定下列函数的单调区间.(1)7186223---=x x x y (2))0(82>+=x x x y(3))1ln(2x x y ++= (4)3)1)(1(+-=x x y3.求下列函数的最大值、最小值.(1)2332xx y -=41≤≤-x (2)312824≤≤-+-=x x x y。
实验五+MATLAB数值计算(含实验报告)

实验五 MATLAB 数值计算一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
设计提示1.参考本节主要内容,学习并理解相关函数的含义及调用方法。
三、实验内容1.线性系统方程:分别使用左除(\)和求逆(inv )求解下面系统方程的解:⎪⎩⎪⎨⎧=+=+=++377251463c b b a c b a2. 数值积分:使用quad 和trapz 求解⎰-503/dx xe x 的数值积分,并与其解析解9243/5+--e 相比较;3. 请完成教材P154页中实验指导环节的实验内容第2题4. 请完成教材P155页中思考练习的第3题(1),并绘制解在该求解区间(即[0,5])上的图像;。
5、请完成教材P164页实验指导环节的实验内容第5题。
(提示:该函数的符号导数,可以通过函数diff 求得。
首先定义符号变表达式,如求sin(x)的一阶符号导数,可以先定义f=’sin(x)’;df=diff(f);可求得df=cos(x)。
其中df 即为函数f 的一阶符号导数)。
四、实验报告要求(包含预习报告要求和最终报告要求)1.实验名称2.实验目的3.实验设备及条件4.实验内容及要求5.实验程序设计指程序代码。
6.实验结果及结果分析实验结果要求必须客观,现象。
结果分析是对实验结果的理论评判。
7.实验中出现的问题及解决方法8. 思考题的回答五、实验报告的提交方式Word文档,命名方式:实验号_你的学号_姓名例如本次实验:实验一_000000001_张三.doc(信息101提交报告邮箱):E_mail: *******************(网络工程101提交作业邮箱):E_mail: *******************(注意网络班的M是大写的)下一次课前提交,过期不收!六、参考文献参考教材和Matlab帮助文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 matlab 自定义函数与导数应用
实验目的
1.学习matlab 自定义函数.
2.加深理解罗必塔法则、极值、最值、单调性.
实验内容
1.学习matlab 自定义函数及求函数最小值命令.
函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我们输入自变量时,计算机才会给出函数值,matlab 软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab 允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab 函数库中,显然这为matlab 提供了扩展的功能,无庸置疑,这也正是matlab 的精髓所在.因为matlab 的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab 自定义函数是一个指令集合,第一行必须以单词function 作为引导词,存为具有扩展名“.m ”的文件,故称之为函数M -文件.
函数M -文件的定义格式为:
function 输出参数=函数名(输入参数)
函数体
……
函数体
一旦函数被定义,就必须将其存为M -文件,以便今后可随时调用.比如我们希望建立函数12)(2++=x x x f ,在matlab 工作区中输入命令:
syms x ;y=x^2+2*x+1;
不能建立函数关系,只建立了一个变量名为y 的符号表达式,当我们调用y 时,将返回这一表达式.
y ↵
y=x^2+2*x+1
当给出x 的值时,matlab 不能给出相应的函数值来.
x=3;y ↵
y=x^2+2*x+1
如果我们先给x 赋值.
x=3;y=x^2+2*x+1
得结果:y=16
若希望得出2|=x y 的值,输入:
x=2;y ↵
得结果:y=16,不是2=x 时的值.读者从这里已经领悟到在matlab 工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill 打开matlab 文本编辑器,输入:
function y=f1(x)
y=x^2+2*x+1;
存为f1.m .调用该函数时,输入:
syms x ;y=f1(x)↵
得结果:y= x^2+2*x+1.输入:
y1=f1(3)↵
得结果:y1=16
matlab 求最小值命令fmin 调用格式:
fmin(‘fun’,a ,b) 给出)(x f 在),(b a 上的最小值点.
2.自定义函数
例5.1.建立正态分布的密度函数
222)(21),.,(σμ--
σπ=μσx e x f
解:打开文本编辑器,输入:
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)
得结果:y=0.2420.此即)0,1,1(f 的值.如果想画出标准正态分布的密度函数的图象,输入: ezplot(zhengtai(x ,1,0))
例5.2.解一元二次方程02=++c bx ax .
解:我们希望当输入c b a ,,的值时,计算机能给出方程的两个根.在文本编辑器中建立名为rootquad.m 的文件.
function [x1,x2]=rootquad(a ,b ,c)
d=b*b-4*a*c ;
x1=(-b+sqrt(d))/(2*a)
x2=(-b-sqrt(d))/(2*a)
比如求方程07322=-+x x 的根,可用语句:
[r1,r2]=rootquad(2,3,-7)
得结果:r1=1.2656
r2=-2.7656
2.验证罗必塔法则. 罗必塔法则是指在求00及∞
∞的极限时,可用导数之比的极限来计算(如果导数之比的极限存在或∞)
例5.3.以x
b a x x x -→0lim 为例验证罗必塔法则. 解:这是0
0型极限 f=a^x-b^x ;g=x ;L=limit(f/g ,x ,0)
得结果:L=log(a)-log(b)
df=diff(f ,x);dg=diff(g ,x);L1=limit(df/dg ,x ,0)
得结果:L1=log(a)-log(b)
从结果看出:L=L1,即
x
b a x x x -→0lim =x b a x x x '-→'0)(lim 4.函数的单调性与极值.
例5.4.求函数396)(23++-=x x x x f 的单调区间与极值.
解:求可导函数的单调区间与极值,就是求导函数的正负区间与正负区间的分界点,利用matlab 解决该问题,我们可以先求出导函数的零点,再画出函数图象,根据图象可以直观看出函数的单调区间与极值.输入命令:
f=x^3-6*x^2+9*x+3;df=diff(f ,x);s=solve(df)
得结果:ans=[1,3],画出函数图象.
ezplot(f ,[0,4])
从图上看,)(x f 的单调增区间为)1,(-∞、),1(+∞,单调减区间是)3,1(,极大值7)1(=f ,极小值3)3(=f .
我们可以建立一个名为dandiao.m 的M —文件,用来求求函数的单调区间.
disp(‘输入函数(自变量为x )’)
syms x
f=input('函数f(x)=')
df=diff(f);
s=solve(df)
a=[];
for i=1:size(s);
a(i)=s(i); end
ezplot(f ,[min(a)-1,max(a)+1])
要求函数)1ln(x x y +-=的单调区间与极值,可调用dandiao.m .输入:
dandiao ↵
在matlab 工作区出现以下提示:
输入函数(自变量为x )
函数f(x)=
在光标处输入:x-log(1+x),可得结果s=0.从图上看,)(x f 的单调增区间为),0(+∞,单调减区间是)0,(-∞,极小值0)0(=f .
5.函数的最值
调用求函数最小值命令fmin 时,可得出函数的最小值点,为求最小值,必须建立函数M —文件.
例5.5.求函数1)3()(2--=x x f 在区间)5,0(上的最小值.
解:我们可以建立一个名为f.m 的函数M -文件.
function y=f(x)
y=(x-3).^2-1;
并且调用fmin
x=fmin((‘f’,0,5)
得:x=3,)(x f 在最小值点处的值(函数最小值)是1)3(-=f . 求最大值时可用x=fmin(‘-f(x)’,a ,b)
练习
1.建立函数x x a a x f 3sin 31sin ),(+=,当a 为何值时,该函数在3π=x 处取得极值,它是极大值还是极小值,并求此极值.
2.确定下列函数的单调区间.
(1)7186223---=x x x y (2))0(8
2>+=x x x y
(3))1ln(2x x y ++= (4)3)1)(1(+-=x x y
3.求下列函数的最大值、最小值.
(1)2
332x x y -=41≤≤-x (2)312
824≤≤-+-=x x x y。