gpt4 book ai didi

matlab - 如何使用 derive.m 函数获得 f(x) 的中心微分

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:14 24 4
gpt4 key购买 nike

我有一个函数可以计算 f(x) 的中心差,但我是 matlab 的基本用户,我无法为我提到的函数定义 f(x)。任何机构都可以帮助我并为此功能定义 f(x) 吗?

输入是一个函数f;一个值小时;特定点 a;行数 n。输入函数 f(x)应定义为 M 文件。

我的f(x) 是:S(x) = 10*x-sin(x)步数:0.1

我想在 piont=pi/6 附近获取 df(x)

我写道:

clc
syms x
derive(10*x-sin(x),0.1,pi/6,14)

但是我遇到了这个错误:

使用 feval 时出错参数必须包含字符串或函数句柄。

派生错误(第 7 行)D(1,1)=(feval(f,a+h)-feval(f,a-h))/(2*h);

中心错误(第 2 行)

========================================

函数 derive.m 在这里:

function derive(f,h,a,n)
% Approximate the derivative of a function at x = a.
disp(' Derivative table')
disp('______________________________________________')
disp(' i h Di,1 Di,2 Di,3 ... ')
disp('______________________________________________')
D(1,1)=(feval(f,a+h)-feval(f,a-h))/(2*h);
fprintf('%2.0f %8.4f %12.4f\n',1,h,D(1,1));
for i=1:n-1
h=h/2;
D(i+1,1)=(feval(f,a+h)-feval(f,a-h))/(2*h);
fprintf('%2.0f %8.4f %12.4f',i+1,h,D(i+1,1));
for k=1:i
D(i+1,k+1)=D(i+1,k)+(D(i+1,k)-D(i,k))/((4^k)-1);
fprintf('%12.4f',D(i+1,k+1));
end
fprintf('\n');
end

最佳答案

feval 需要一个函数句柄,即 MatLab 函数句柄。您提供的 (10*x-sin(x)) 是一个符号表达式。您可以按如下方式定义函数句柄:

f(x) = 10*x-sin(x);

现在f是一个MatLab函数句柄,你可以随意使用它:

derive(f,0.1,pi/6,14)

编辑

您还可以使用 anonymous functions

derive((x)(10*x-sin(x)),0.1,pi/6,14)

结束编辑

注意,你不需要syms x,它将x定义为一个符号,但是在你的函数定义中你使用了参数xf(x) 中定义。

编辑

如果要使用符号函数,可以使用 matlabFunction 将其转换为 MatLab 函数句柄

关于matlab - 如何使用 derive.m 函数获得 f(x) 的中心微分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380692/

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