实验5matlab自定义函数与导数应用(精)
- 格式:doc
- 大小:128.50 KB
- 文档页数:4
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函数求极大值和极小值。
实验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 数值计算一、实验目的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帮助文件。
matlab的自定义函数Matlab是一种数学软件,可以用于解决各种数学问题。
在Matlab中,我们可以定义自己的函数来实现我们自己的算法或操作,并将它们存储为独立的文件,以便在需要时调用。
在本文中,我们将讨论Matlab自定义函数的创建过程。
function [output_var1, output_var2, ..., output_varn] =function_name(input_var1, input_var2, ..., input_varn)% Function bodyend其中,function_name为函数的名称,并且必须和函数脚本的文件名相同。
input_vars和output_vars则是输入和输出变量的名称,可以按需要进行命名。
function 关键字指示Matlab这是一个函数定义,并告诉Matlab返回的变量是什么。
在函数的主体内,我们可以按照Matlab语法进行各种运算和操作。
可以使用Matlab 中的任何工具箱或函数,要调用其他函数,则需要在函数主体中调用该函数。
例如,我们要在函数中计算两个变量a和b的和,可以使用以下代码:c = a + b;该代码实际上将a和b相加,并将结果保存到变量c中。
在函数主体内,我们还可以使用一些控制流结构,例如if语句和for循环等。
这样我们就可以编写更复杂的程序来解决更复杂的问题。
对于函数的输出,我们需要使用关键字“return”或通过指定输出变量来返回输出结果。
例如,如果我们的函数返回两个变量c和d,则我们可以使用以下代码:function [c, d] = calculate(a, b)% The function bodyc = a + b;d = a - b;end在这个例子中,我们返回了两个变量c和d,它们由a和b计算得到。
之后,在主程序中,我们可以使用这个函数来计算a和b的和与差:[cval, dval] = calculate(a_val, b_val);在这个例子中,我们将a_val和b_val传递给函数calculate(),并且我们将得到的结果保存到变量cval和dval中。
MATLAB导数的计算1.符号求导法符号求导是使用MATLAB中的符号计算工具箱进行求导的一种方法。
首先,需要定义符号变量,然后再使用diff函数对符号表达式进行求导。
例如,假设要求函数f(x) = x^2的导数,可以按照以下步骤进行:```matlabsyms xf=x^2;df = diff(f, x);disp(df);```上述代码中,首先使用syms命令定义了一个符号变量x,然后定义了函数f(x) = x^2,最后使用diff函数对f进行求导,并将结果保存在df变量中。
最后,使用disp函数输出导数df的值。
2.数值求导法数值求导是一种通过计算函数在其中一点的左右两个邻近点的函数值来估计导数的方法。
在MATLAB中,可以使用diff函数来实现数值求导。
例如,假设要计算函数f(x) = x^2在x = 1处的导数,可以按照以下步骤进行:```matlabx=1;h=0.001;df = (f(x+h)-f(x-h))/(2*h);disp(df);```上述代码中,首先定义了要计算导数的点x = 1,然后定义了一个小的步长h,在此示例中,h的值为0.001、然后通过定义一个匿名函数f来表示要计算的函数f(x),最后使用数值求导公式计算导数df的近似值,并使用disp函数输出导数的值。
3.数值微分法数值微分是使用数值方法估计离散数据集的导数。
在MATLAB中,可以使用gradient函数来实现数值微分。
例如,假设有一组数据点(x, y),要计算y关于x的导数,可以按照以下步骤进行:```matlabx=[1,2,3,4,5];y=[1,4,9,16,25];dy = gradient(y, x);disp(dy);```上述代码中,首先定义了一组数据点x和y,然后使用gradient函数对y关于x进行数值微分,并将结果保存在dy变量中。
最后,使用disp函数输出导数的值。
4.使用符号求导的数值计算方法在MATLAB中,还可以将符号计算与数值计算相结合,使用符号求导的结果计算数值导数。
MATLAB函数的使用方法及示例详解引言:MATLAB是一种用于算法开发、数据可视化、数据分析和数值计算的强大工具。
它不仅具备丰富的内置函数库,还可由用户编写函数,以满足各种复杂的计算需求。
本文将详细介绍MATLAB函数的使用方法,并通过示例来解释其具体应用。
一、MATLAB函数的定义与调用在MATLAB中,函数是一段封装了特定操作的可重复使用的代码,它可以接受输入参数,并返回输出结果。
函数的定义与调用是使用MATLAB的重要基础。
函数的定义:MATLAB中函数的定义以关键词"function"开头,后面跟着函数名和一对圆括号。
函数名用于函数的调用,圆括号内可定义输入参数。
函数体代码位于圆括号之后,用于实现函数的具体功能。
举个例子,定义一个简单的函数用于计算两个数的和:```function result = add(a, b)result = a + b;end```在这个例子中,`add`是函数名,`a`和`b`是输入参数,`result`是输出结果。
函数的调用:函数的调用通过函数名和相应的参数实现。
调用函数时,需要提供参数的值。
调用函数后,函数会执行其功能,并返回结果。
我们使用上面定义的`add`函数来进行示例调用:```x = 3;y = 5;sum = add(x, y);disp(sum);```在这个例子中,我们定义了两个变量`x`和`y`,分别赋值为3和5,然后调用`add`函数,并将结果赋值给变量`sum`。
最后,使用`disp`函数显示`sum`的值。
二、MATLAB内置函数的使用方法MATLAB提供了丰富的内置函数库,涵盖了数学、统计、信号处理、图像处理等各个领域。
下面我们将介绍几个常用的内置函数及其使用方法。
1. `sin`函数:`sin`函数用于计算给定角度的正弦值。
其使用方法为:```result = sin(angle);```其中,`angle`为角度的值,`result`为计算得到的正弦值。
matlab 曲线导数在MATLAB中,你可以使用不同的方法来计算曲线的导数。
下面我将从多个角度来回答你关于MATLAB中曲线导数的问题。
方法一,使用符号计算工具箱。
MATLAB的符号计算工具箱提供了一种简单的方法来计算曲线的导数。
你可以使用`sym`函数创建符号变量,并使用`diff`函数对符号表达式求导。
下面是一个示例:matlab.syms x.f = sin(x); % 定义曲线函数。
df = diff(f, x); % 计算导数。
这将给出函数f的导数df,你可以通过使用`subs`函数将具体的数值代入导数表达式中来计算导数的值。
方法二,使用数值方法。
如果你有一个离散的数据集,你可以使用数值方法来近似计算曲线的导数。
在MATLAB中,你可以使用`diff`函数来计算离散数据的差分,从而近似计算导数。
下面是一个示例:matlab.x = linspace(0, 2pi, 100); % 定义自变量的取值范围。
y = sin(x); % 定义曲线函数。
dy = diff(y) ./ diff(x); % 计算近似导数。
这将给出曲线函数y的近似导数dy。
请注意,由于差分方法的近似性质,计算得到的导数可能会有一定的误差。
方法三,使用数值微分工具箱。
MATLAB还提供了一个数值微分工具箱,其中包含了多种计算导数的方法。
你可以使用`gradient`函数来计算曲线的梯度,即导数的近似值。
下面是一个示例:matlab.x = linspace(0, 2pi, 100); % 定义自变量的取值范围。
y = sin(x); % 定义曲线函数。
dy = gradient(y, x); % 计算梯度。
这将给出曲线函数y的梯度dy,其中x是自变量,y是因变量。
使用数值微分工具箱可以得到更精确的导数近似值。
以上是关于在MATLAB中计算曲线导数的多个方法。
你可以根据具体的需求选择适合的方法来计算曲线的导数。
希望这些信息对你有帮助!。
数学建模matlab例题参考及练习数学实验与数学建模实验报告学院:专业班级:姓名:学号:完成时间:年⽉⽇承诺书本⼈承诺所呈交的数学实验与数学建模作业都是本⼈通过学习⾃⾏进⾏编程独⽴完成,所有结果都通过上机验证,⽆转载或抄袭他⼈,也未经他⼈转载或抄袭。
若承诺不实,本⼈愿意承担⼀切责任。
承诺⼈:年⽉⽇数学实验学习体会(每个⼈必须要写字数1200字以上,占总成绩的20%)练习1 ⼀元函数的图形 1.画出x y arcsin =的图象.2.画出x y sec =在],0[π之间的图象. 3.在同⼀坐标系中画出x y =,2x y =,3x y =,3x y =,x y =的图象.4.画出3232)1()1()(x x x f ++-=的图象,并根据图象特点指出函数)(x f 的奇偶性.5.画出)2ln(1++=x y 及其反函数的图象.6.画出321+=x y 及其反函数的图象.练习2 函数极限1.计算下列函数的极限.(1)xxx1lim4-+π→.程序:sym x;f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4)运⾏结果:lx21ans =1(2).程序:sym x;f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2)运⾏结果:lx22ans =exp(3)(3)22)2xx-ππ→.程序:sym x;f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2)运⾏结果:lx23ans =-1/8(4)212lim xxex→.程序:x xx sec32)sym x ;f=x^2*exp(1/x); limit(f,x,0) limit(f,x,0,'right') limit(f,x,0,'left')运⾏结果:lx24ans = NaNans = Infans = 0%左极限为零,存在,右极限为⽆穷⼤,在x 趋近于零时函数没有极限(5))215(lim 122x x x x +-∞→.程序:sym x ;f=5*x^2/(1-x^2)+2^(1/x); limit(f,x,inf)运⾏结果:>> lx25ans = -4(6)x x x x x -+-→32112lim .程序:sym x ;f=(x^2-2*x+1)/(x^3-x); limit(f,x,1)运⾏结果:>> lx26ans = 0(7)x x x 11lim 20-+→.程序:sym x ;f=(sqrt(1+x^2)-1)/x; limit(f,x,0))3sin(cos 21lim 3π--π→x x x . 程序:sym x ;f=(1-2*cos(x))/sin(x-pi/3); limit(f,x,pi/3)运⾏结果:>> lx28ans = 3^(1/2)(9)tgxx x )1(lim 0+→.程序:sym x ;f=(1/x)^tan(x); limit(f,x,0,'right')运⾏结果:>> lx29ans =(10)xx arctgx )2(lim π+∞→.程序:sym x ;f=(2/pi*atan(x))^x; limit(f,x,inf,'left')运⾏结果:>> lx210ans =Inf2.解⽅程012=-?x x . 程序:sym x ;X=solve(x*2^x-1)运⾏结果:>> lx202 X =lambertw(0, log(2))/log(2)%⽅程有两个解X=solve(3*sin(x)+1-x)运⾏结果:>> lx203 X =-0.53847936154.解⽅程03=++q px x .(p 、q 为实数) 程序:X=solve('x^3+p*x+q=0','x')运⾏结果: X =((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3) - p/(3*((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)) p/(6*((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)) -((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)/2 - (3^(1/2)*i*(p/(3*((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)) + ((p^3/27 + q^2/4)^(1/2) -q/2)^(1/3)))/2 p/(6*((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)) - ((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)/2 + (3^(1/2)*i*(p/(3*((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)) + ((p^3/27 + q^2/4)^(1/2) - q/2)^(1/3)))/2练习 3 导数及偏导数计算1.求下列函数的导数.(1))11)(1(-+=x x y程序:sym x ;f=(sqrt(x)+1)*(1/sqrt(x)-1); diff(f)运⾏结果:>> lx31ans =(1/x^(1/2) - 1)/(2*x^(1/2)) - (x^(1/2) + 1)/(2*x^(3/2))(2)x x x y ln sin =程序:sym x ;f=x*sin(x)*log(x); diff(f)运⾏结果:>> lx32ans =sin(x) + log(x)*sin(x) + x*cos(x)*log(x)2.求下列参数⽅程所确定的函数的导数.(1)??==t y t x 44程序:ans =1/t^3(2)??-=+=arctgt t y t x )1ln(2程序:sym t ;f1=log(1+t^2);f2=t-atan(t); diff(f2)/diff(f1)运⾏结果:>> lx322ans =-((t^2 + 1)*(1/(t^2 + 1) - 1))/(2*t) 3.求下列隐函数的导数.(1)22ln y x xyarctg+=程序:syms x y ;f=atan(y/x)-log(sqrt(x^2+y^2));yx=-diff(f,x)/diff(f,y)运⾏结果;>> lx331 yx =(x/(x^2 + y^2) + y/(x^2*(y^2/x^2 + 1)))/(1/(x*(y^2/x^2 + 1)) - y/(x^2 + y^2)) (2)x y y x=程序:syms x y ; f=x^y-y^xyx=-diff(f,x)/diff(f,y)运⾏结果:>> lx332 f =x^y - y^x yx =f=exp(x)*sin(x); diff(f,x,4)运⾏结果:>> lx34 ans =(-4)*exp(x)*sin(x)5.验证x e y xsin =满⾜关系式:022=+'-''y y y程序:sym x ;f=exp(x)*sin(x); y2=diff(f,x,2); y1=diff(f,x,1); y=f;y2-y1*2+2*y=='0' 运⾏结果:>> lx35ans =1%运⾏结果为1表⽰y2-y1*2+2*y=='0'成⽴6.设)ln(y x x u +=,求22x u ??,22y u,y x u 2. 程序:syms x y ; f=x*log(x+y); uxx=diff(f,x,2) uyy=diff(f,y,2) f1=diff(f,x); uxy=diff(f1,y)运⾏结果: >> lx36uxx =2/(x + y) - x/(x + y)^2uyy =-x/(x + y)^2uxy =1/(x + y) - x/(x + y)^27.求下列多元隐函数的偏导数y zx z ,.(1)1cos cos cos 222=++z y x程序:syms x y z ;-(cos(x)*sin(x))/(cos(z)*sin(z)) zy =-(cos(y)*sin(y))/(cos(z)*sin(z))(2)xyz e z= 程序:syms x y z ; f=exp(z)-x*y*zzx=-diff(f,x)/diff(f,z) zy=-diff(f,y)/diff(f,z)运⾏结果:>> lx372 f =exp(z) - x*y*z zx =(y*z)/(exp(z) - x*y) zy =(x*z)/(exp(z) - x*y) 8.证明函数22)()(lnb y a x u -+-=(b a ,为常数)满⾜拉普拉斯⽅程:02222=??+??y u x u (提⽰:对结果⽤simplify 化简)练习4 积分计算1.计算下列不定积分.(1)?+dxx x 12 (2)+x xdx 2sin 12sin2.计算下列定积分.(1)?exdxx 1ln (2)ππ342sin dxxx3.求?+tdx x x x4.求摆线)cos 1(),sin (t a y t t a x -=-=的⼀拱(π≤≤20t )与x 轴所围成的图形的⾯积.5.计算⼆重积分 (1)??≤++122)(y x dxdyy x (2)??≤++xy x dxdyy x 22)(226.计算?+Ldsy x 22 L 为圆周)0(22>=+a ax y x7.计算?++-L dy y x dx y x )()(2222,其中L 为抛物线2x y =上从点(0,0)到点(2,4)的⼀段弧.练习5 matlab ⾃定义函数与导数应⽤1.建⽴函数x x a a x f 3sin 31sin ),(+=,当a 为何值时,该函数在3π=x 处取得极值,它是极⼤值还是极⼩值,并求此极值.2.确定下列函数的单调区间.(1)7186223---=x x x y (2))0(82>+=x xx y3.求下列函数的最⼤值、最⼩值.(1)2332x x y -=41≤≤-x(2)312824≤≤-+-=x x x y练习6 matab 矩阵运算与数组运算1.计算(1)???--521111204321+???21(2)??-01301213?03010*******????? ??-205101(3)52422??- 2.设????? ??-=243121013A ,??-=112111201B ,求满⾜关系B X A =-23的X .练习7 矩阵与线性⽅程组1.求下列矩阵的秩.(1)???-321110021 (2)4820322513454947513253947543173125 2.求下列矩阵的⾏列式,如可逆,试⽤不同的⽅法求其逆矩阵.(1)??--285421122 (2)??---6201111121324321 3.设X ????? ?-111012111==--+=+-+=+-+=+-+6223312433862344224221432143214321x x x x x x x x x x x x x x x x (2)-=+--=+--=-+-212201432143214321x x x x x x x x x x x x练习8 常微分⽅程与级数求1-6题微分⽅程的通解1.1222+='y y y x 2.x y x y dx dy -+= 3.x xx y y +='cos 4.1)2sin cos (='+y y y x 5.x e y y y x2cos 3=-'+'' 6.x x y y sin 14++=+'' 求7、8题初值问题的解7.==-++-+=10)2(212222x y dx dy x xy y y xy x8.===++==0000222,02V dt dx x x x a dt dxn dtx d t t9.给出函数x x e x f xx cos 2sin )(+=在点0=x 的7阶taylor 展开式以及在x=1处的 5阶taylor 展开式.10.判别下列级数的敛散性,若收敛求其和.(1)+++311(2)∑∞=+112n nntgπ11.求幂级数∑∞=--22)1(nnnnnx的和函数.12.求函数项级数∑∞=-1nnnn xπ的和函数.。
matlab 曲线导数在MATLAB中,计算曲线的导数可以使用不同的方法和函数。
以下是几种常见的方法:1. 数值方法:MATLAB提供了一些数值方法来近似计算曲线的导数,如差分法和微分法。
其中,差分法包括前向差分、后向差分和中心差分。
可以使用`diff`函数来计算差分导数,例如:matlab.x = linspace(0, 2pi, 100); % 创建一个包含100个点的等间距向量。
y = sin(x); % 计算sin(x)的值。
dy = diff(y) ./ diff(x); % 使用差分法计算导数。
这样,`dy`就是`y`的导数。
2. 符号计算方法:MATLAB还提供了符号计算的功能,可以使用符号变量和符号函数来进行导数计算。
通过使用`diff`函数和符号变量,可以直接计算函数的导数。
例如:matlab.syms x; % 定义符号变量x.y = sin(x); % 定义符号函数y.dy = diff(y, x); % 计算y对x的导数。
这样,`dy`就是`y`的导数。
3. 多项式拟合方法:如果曲线是由一组离散的点组成,可以使用多项式拟合方法来估计曲线的导数。
使用`polyfit`函数可以拟合多项式,并使用`polyder`函数求导。
例如:matlab.x = linspace(0, 2pi, 100); % 创建一个包含100个点的等间距向量。
y = sin(x); % 计算sin(x)的值。
p = polyfit(x, y, n); % 使用n次多项式拟合数据。
dp = polyder(p); % 求导。
这样,`dp`就是`y`的导数的多项式。
需要注意的是,以上方法适用于一维曲线的导数计算。
对于多维曲线,可以使用偏导数或梯度的概念来计算导数。
MATLAB提供了相应的函数和工具箱来处理多维曲线的导数计算,如`gradient`和`diff`函数。
希望以上回答能够满足你的需求。
如有其他问题,请随时提问。
实验三 导数及应用实验目的1. 深入理解导数与微分的概念,导数的几何意义。
掌握MATLAB 求导数与高阶导数的方法。
深入理解和掌握求隐函数的导数及由参数方程定义的函数的导数的方法。
2. 掌握用函数的导数确定函数的单调区间、凹凸区间和函数的极值的方法。
掌握用MATLAB 求方程的根和求函数的极值的方法。
实验内容● 求导数的命令为:diff ,常用格式为 >> syms x>> diff('f(x)',x)diff(f,x)给出f 关于x 的导数,而表达式f 中的其它字母看作常量。
因此如果表达式是多元函数,则给出的是偏导数。
>> diff('f(x)',x,n) 给出f 关于x 的n 阶导数或者偏导数。
● 多项式方程00111=+++--a x a xa x a n n n n 求根命令是:roots具体格式:roots (c)● 求一般方程0)(=x f 近似根的命令,一般形式为:⑴ 建立函数:f=inline('表达 式 ')⑵ 求函数零点:c=fzero(f, [a, b]) % 求函数f(x) 在区间[a, b] 内的零点c ; c=fzero(f, x0) % 求函数f(x) 在x0 附近的零点c ; fsolve 非线性方程求解fzero 标量非线性方程求解● 求非线性函数f(x) 的极小值,求一元函数极小值命令是 fminbnd,常用格式为: x=fminbnd(fun,x1,x2);[x,fav1]=fminbnd(fun,x1,x2);[x,fav1,exitflag,output]=fminbnd(fun,x1,x2);其中:x=fminbnd(fun,x1,x2) 是求(x1,x2)上fun 函数的最小值x 。
[x,fav1]=fminbnd(fun,x1,x2)返回解x 处目标函数的值。
matlab求函数在指定点的数值导数
在MATLAB中,我们可以使用diff函数来计算函数在指定点的数值导数。
diff函数的语法如下:
diff(y) % 求y的一阶差分
diff(y, n) % 求y的n阶差分
其中,y是要求导的函数,n是差分的阶数。
下面,我们来看一个例子,求函数f(x)=sin(x)在x=pi/2处的数值导数。
首先,我们定义函数f(x):
f = @(x) sin(x);
然后,我们计算一阶差分:
df = diff(f); % 求f的一阶差分
接着,我们计算x=pi/2处的导数:
df(pi/2) % 求f在x=pi/2处的导数
运行结果为1,说明函数f(x)=sin(x)在x=pi/2处的导数为1。
如果要求更高阶的导数,我们可以将n作为第二个参数传递给diff函数。
例如,要求f(x)=sin(x)在x=pi/2处的二阶导数,我
们可以这样计算:
d2f = diff(f, 2); % 求f的二阶差分
dd2f = d2f(pi/2) % 求f在x=pi/2处的二阶导数
运行结果为-1,说明函数f(x)=sin(x)在x=pi/2处的二阶导数为-1。
除了diff函数,MATLAB还提供了其他计算导数的函数,例
如gradient函数和polyder函数。
这些函数的使用方法可以参
见MATLAB的官方文档。
总之,求函数在指定点的数值导数在MATLAB中非常方便,
只需要使用diff函数即可,同时也不要忘记定义函数及其参数。
matlab对函数求导一元函数的导数matlab函数语法y =diff(fun, x)%y =diff(fun, x, n)%注:自变量为唯一符号变量时,可以省去 x x x。
应用举例例1 :普通函数求导给定函数 f ( x ) = s i n x x 2 + 4 x + 3f(x)=\frac{sin x}{x^2+4x+3} f(x)=x2+4x+3sinx分别求其一阶导数和四阶导数,并绘制原函数和一阶导数的图像,计算求解50阶导数时所用的时间。
syms x; f=sin(x)/(x^2+4*x+3);f1=diff(f)ezplot(f,[0,5]), hold on;ezplot(f1,[0,5])f4 =diff(f,x,4)f41 =collect(simplify(f4),sin(x))f42 =collect(simplify(f4),cos(x))tic,diff(f,x,50); toc根据结果可知diff函数的效率较高。
例2 :复合泛函求导已知函数 f ( t ) = t 2 ∗ s i n t ∗ f ( t )f(t)=t^2*sint*f(t) f(t)=t2∗sint∗f(t),推导其三阶导数公式。
分析:该题难点为如何定义 f ( t ) f(t) f(t)syms t f(t)g =simplify(diff(t^2*sin(t)*f,t,3))当 f ( t ) = e − t f(t)=e^{-t} f(t)=e−t时, f ( t ) f(t) f(t)的三阶导数为g0 =simplify(subs(g,f,exp(-t)))err =simplify(diff(t^2*sin(t)*exp(-t),3)-g0)例3 :矩阵函数求导对每个矩阵元素直接求导syms x;h=[4*sin(5*x),exp(-4*x^2);3*x^2+4*x+1,sqrt(4*x^2+2)], h1=diff(h,x,3)多元函数的偏导数matlab函数语法高阶偏导数的求法y =diff(diff(fun, x, m), y, n)y =diff(diff(fun, y, n), x, m)应用举例例1 :求偏导并绘图求函数 z = f ( x , y ) = ( x 2 − 2 x ) e − x 2 − y 2 − x y z=f(x,y)=(x^2-2x)e^{-x^2-y^2-xy}z=f(x,y)=(x2−2x)e−x2−y2−xy的一阶偏导数∂ z / ∂x , ∂ z / ∂ y \partial z/\partial x, \partialz/\partial y ∂z/∂x,∂z/∂y,并绘图。
实验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。