首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Matlab的for循环中自动计算导数?

如何在Matlab的for循环中自动计算导数?
EN

Stack Overflow用户
提问于 2020-04-30 22:08:35
回答 1查看 88关注 0票数 1

为了推广的目的,我希望Matlab能自动计算相关函数f(x)的一阶和二阶导数。(如果我将f(x) = sin(6x)改为f(x) = sin(8x))

我知道有名为diff()syms的内置命令,但我不知道如何在i循环中处理它们。这是我正在努力解决的关键问题。

如何对以下代码集进行更改?我正在使用MATLAB R2019b。

代码语言:javascript
运行
复制
n = 10;
h = (2.0 * pi) / (n - 1);
for i = 1 : n
  x(i) = 0.0 + (i - 1) * h;
  f(i) = sin(6 * x(i));
  dfe(i) = 6 * cos(6 * x(i));   % first derivative
  ddfe(i) = -36 * sin(6 * x(i));   % second derivative 
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 22:45:28

您可以简单地使用subsdouble来完成此操作。对于您的案例:

代码语言:javascript
运行
复制
% x is given here
n = 10;
h = (2.0 * pi) / (n - 1);
syms 'y';
g = sin(6 * y);
for i = 1 : n
  x(i) = 0.0 + (i - 1) * h;
  f(i) = double(subs(g,y,x(i)));
  dfe(i) = double(subs(diff(g),y,x(i)));   % first derivative
  ddfe(i) = double(subs(diff(g,2),y,x(i)));   % second derivative 
end

通过@Daivd注释,您还可以向量化循环:

代码语言:javascript
运行
复制
% x is given here
n = 10;
h = (2.0 * pi) / (n - 1);
syms 'y';
g = sin(6 * y);
x = 0.0 + ((1:n) - 1) * h;
f = double(subs(g,y,x));
dfe = double(subs(diff(g),y,x));   % first derivative
ddfe = double(subs(diff(g,2),y,x));   % second derivative 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61525324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档