酷987移动端

酷987 > 教程攻略 > 问题攻略 >

matlab怎么对函数求导

t=0:0.02:0.18 y=[415.7 415.68 415.65 415.55 415.38 415.2 415.07 414.96 414.85 414.5 ] n=5 p=polyfit(t,y,n)%5次多项式 dp=polyder(p)%导函数 tt=linspace(-.05,0.2); plot(t,y,'ro');hold on a=plotyy(tt,polyval(p,tt),tt,polyval(dp,tt)

在分析函数的时候,往往需要求解函数的导数,用matlab其实是可以求解导数的,本文以arctan的求导为例。

材料/工具

matlab软件

用matlab对函数求导及其极值 ,可以先用diff()函数求出y',然后令y'=0,用vpasolve()解出x值。实现代码如下: syms x z=exp(4.1399-0.0235*x); y=0.000157*z*(1-z)*(1+z)^3/((1+z)^4+0.00004476*z^2)^(3/2); dy=diff(y,1) x=vpasolve(dy==0)

方法

打开matlab软件;

首先,求导属于符号运算,对于一般的数值型的变量是不能进行求导的。 其次,用@ 定义的匿名函数只是一个函数句柄,必需对其进行调用才能真正使得函数生效。 其实,也并非用@ 定义的函数就不能求导,重要的是满足上面的两点:要调用函数,而且得

输入一下指令,清空工作空间;

本来不想说的。 你的前几个数据的y是相同的,也就是说是它们的数值导数肯定为零。但不意味着这些点都是极值点,这些绝对是你的数据精度的问题。 解析式比数值的优势,我觉得就是“精度”,解析式能求出任何一点的值,而数值只是有限的几个点是己知

clear;

matlab求导命令diff调用格式: diff(函数) , 求的一阶导数; diff(函数, n) , 求的n阶导数(n是具体整数); diff(函数,变量名), 求对的偏导数; diff(函数, 变量名,n) ,求对的n阶偏导数;

clc;

输入一下指令定义一个符号变量,如图所示;

matlab的求导命令与求导法 建立符号变量命令sym和syms调用格式: x=sym('x'), 建立符号变量x; syms x y z , 建立多个符号变量x,y,z; matlab求导命令diff调用格式: diff(函数) , 求的一阶导数; diff(函数, n) , 求的n阶导数(n是具体整数

sysm x;

MATLAB中,diff函数用于求一阶导数 例如y=x^2+3*x 求在x=2下的一阶导数值 程序为:x = 2;subs(diff(y,x)); 具体到题主的问题,程序为 syms t m=0.650; b=0.97; g=9.79; h=7.86; y=h+(g-0.2233)*(1-exp(-b*t))/b^2-(g-0.2233)*t/b; T=0:0.1:1.5;

输入一下指令,定义一个函数;

dy=diff(y);plot(x(2:end),dy,'b');xlim([0,86]);

f1=atan(x);

diff(f,v,n) %对符号函数f以v为自变量求n阶导,返回的是符号函数(表达式)。 代码案例: y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然对数 y11=diff(y1) %求导 simple(y11) %化简 y2 = 'sin(e^(x^2+3*x-2))' y21=diff(y2) simple

输入一下指令求解导函数的符号解;

diff(f,v,n) %对符号函数f以v为自变量求n阶导,返回的是符号函数(表达式)。 代码案例: y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然对数 y11=diff(y1) %求导 simple(y11) %化简 y2 = 'sin(e^(x^2+3*x-2))' y21=diff(y2) simple

df1=diff(f1,x);

在matlab中,可以利用diff函数对隐函数求导。其调用格式如下: diff(函数) % 求一阶导数;diff(函数, n) % 求n阶导数(n是具体整数);diff(函数,变量名) % 求偏导数;diff(函数, 变量名,n) % 求n阶偏导数; 下面通过示例来说明diff函数对隐函

输入一下指令查看求导的结果,如图所示;

你好! 我依照你举得例子,简单编写了一个程序,为了清晰起见,语句写得比较简单,你看看: syms x1 x2 x3 f = x1^2+x2^2+x3^2; fx1 = diff(f,x1); fx2 = diff(f,x2); fx3 = diff(f,x3); x11 = input('请输入整数x1:'); x22 = input('请输入整

subplot(1,2,1);

可通过syms将函数句柄转换为符号函数用diff求导后再通过matlabFunction转换为函数句柄 clc;clearf = @(x) x.^2 + 2.* x + 1 % 通过函数句柄建立匿名函数syms x % 通过符号变量将匿名函数转换为符号函数y = f(x)g = matlabFunction(diff(y)) % 通

ezplot(f1),grid on;

你写个函数就行了。F求导看都能看出来,用啥diff,求导后函数为: f=exp(x)+3*x^2; 你可以写个函数 function f=fdiff(x) f=exp(x)+3*x^2; 然后在写你的循环: for i=1:50 f(i)=feval(fdiff,i); end 即可。

subplot(1,2,2);

>> sol=dsolve('DI=I*(100-I)') sol = 0 100 -100/(exp(C3 - 100*t) - 1) >> I=str2func(['@(t,C3)',vectorize(char(sol(3)))]) I = @(t,C3)-100./(exp(C3-100.*t)-1) >> C3=1;t=-0:0.01:0.5; plot(t,I(t,C3)) 应该有初值,有初值就简单了,我假

ezplot(df1),grid on;

例如: 如果e是自然对数的底,那么 syms x y; y=(exp(x)-exp(-x))/(exp(x)+exp(-x)); diff(y) ans = 1-(exp(x)-exp(-x))^2/(exp(x)+exp(-x))^2 如果e是某常量,那么 syms x y e; y =(e^x-e^(-x))/(e^x+e^(-x)); diff(y) ans = (e^x*log(e)+e^(-x

查看求导结果如下

可以用syms命令先令未知量为符号变量。然后对符号式子diff求导 再用subs命令将符号未知量代为数值,进式子里。 具体用法参见 help syms help subs 为什么非要把求导的东西放在函数里调用呢。试试能不能把求导放在主函数里。

扩展阅读,以下内容您可能还感兴趣。

matlab语言怎样表示x的导数

diff(f,v,n) %对符号函数f以v为自变量求n阶导,返回的是符号函数(表达式)。

代码案例:

y1 = 'log((2*tan(x)+1)/(tan(x)+2))' %log在matlab中求自然对数

y11=diff(y1) %求导

simple(y11) %化简

y2 = 'sin(e^(x^2+3*x-2))'

y21=diff(y2)

simple(y21)。

如何用matlab对隐函数求导

在matlab中,可以利用diff函数对隐函数求导。其调用格式如下:

diff(函数)    % 求一阶导数;

diff(函数, n)   % 求n阶导数(n是具体整数);

diff(函数,变量名)   % 求偏导数;

diff(函数, 变量名,n)    % 求n阶偏导数;

下面通过示例来说明diff函数对隐函数求导的方法。

题目:隐函数y^3 - x^3 - 1 = 0的导数。

syms x y  % 定义变量

F = y^3 - x^3 - 1  % 隐函数  F = y^3 - x^3 - 1 = 0

dy1 = - diff(F,x)/diff(F,y)  %  一阶导数

dy2 = diff(dy1,x) + diff(dy1,y)*dy1;  %  二阶导数

dy2 = simplify(dy2);

计算结果:

dy1 = x^2/y^2

dy2 = -2*x*(-y^3+x^3)/y^5

matlab中,一个函数有多个自变量,怎么分别求导并代入具体数值,举个例子f=x1+x2+x3,分

你好!

我依照你举得例子,简单编写了一个程序,为了清晰起见,语句写得比较简单,你看看:

syms x1 x2 x3

f = x1^2+x2^2+x3^2;

fx1 = diff(f,x1);

fx2 = diff(f,x2);

fx3 = diff(f,x3);

x11 = input('请输入整数x1:');

x22 = input('请输入整数x2:');

x33 = input('请输入整数x3:');

subs(fx1,x1,x11)

subs(fx2,x2,x22)

subs(fx3,x3,x33)

输出的subs就是赋值之后的每一个偏导的结果,你可以试着运行一下。

diff默认对x求导,如果有好几个x,则默认对x1求导,默认求一介导。

祝好~更多追问追答追问可是我有7个变量,这样写程序是不是太长了,老师说可以简化,能不能用循环或者向量简化追答我觉得是可以的,不过我自己没法尝试,你可以试试~追问多谢

matlab 用句柄传入的函数如何应用diff函数对其求导数?或者有无替代方法把一个函数传进来并且求导。

可通过syms将函数句柄转换为符号函数

用diff求导后

再通过matlabFunction转换为函数句柄    

clc;clear

f = @(x) x.^2 + 2.* x + 1    % 通过函数句柄建立匿名函数

syms x                       % 通过符号变量将匿名函数转换为符号函数

y = f(x)

g = matlabFunction(diff(y))  % 通过matlabFunction将符号函数转换为匿名函数

matlab对函数求导后的调用

你写个函数就行了。F求导看都能看出来,用啥diff,求导后函数为:

f=exp(x)+3*x^2;

你可以写个函数

function f=fdiff(x)

f=exp(x)+3*x^2;

然后在写你的循环:

for i=1:50

f(i)=feval(fdiff,i);

end

即可。

(责任编辑:ku987小孩)