gpt4 book ai didi

Scilab:如何使用“numderivative”函数

转载 作者:行者123 更新时间:2023-12-05 03:38:09 26 4
gpt4 key购买 nike

  • 我是 Scilab 的新用户,我不是数学家。
  • 作为我的最终目标,我想计算(并绘制)分段定义函数的导数,请参阅 here .
  • 我尝试从小处着手,只使用一个简单的(连续的)函数:f(x) = 3*x
  • 我的 Google-Fu 将我带到了 numderivative功能。
  • 问题:我似乎不明白参数 x 是如何工作的,因为结果不是一维数组,而是一个矩阵。<
  • 更新 1:也许我使用了错误的函数,diff 是正确的选择。但是 numderivative 的目的是什么?

PS:这里是否适合提出 Scilab 相关问题?似乎有几个 StackOverflow 社区提出了与 Scilab 相关的问题。


// Define limits
x0 = 0;
x1 = 2;
// Define array x for which the derivative will be calculated.
n = 100;
x = linspace (x0, x1, n);

// Define function f(x)
deff('y=f(x)','y=3*x');

// Calculate derivative of f(x) at the positions x
myDiff = numderivative(f,x)

enter image description here

(我希望结果 3 3 而不是矩阵。)

https://help.scilab.org/docs/6.1.1/en_US/numderivative.html

最佳答案

numderivative(f,x) 将为您提供 f 在单个向量 x 处的近似导数/雅可比矩阵。对于您的示例,它产生 3 倍的单位矩阵,这是自 f(x)=3*x 以来的预期结果。如果您更愿意将 f 的导数视为 x=1 和 x=2 处的单个标量 变量的函数,则 numderivative 不方便,因为您必须进行显式循环。自己编写公式(这里是一阶公式):

// Define limits
x0 = 0;
x1 = 2;
// Define array x for which the derivative will be calculated.
n = 100;
x = linspace (x0, x1, n);

// Define function f(x)
deff('y=f(x)','y=3*x');x = [1 2];
h = sqrt(%eps);
d = (f(x+h)-f(x))/h;

可以改进公式(二阶或复阶公式)。

关于Scilab:如何使用“numderivative”函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69059245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com