【问题标题】:Matlab finite difference methodMatlab有限差分法
【发布时间】:2015-08-24 17:38:08
【问题描述】:

matlab 中的代码有点问题。我找到了代码:

% Finite difference example: cubic function
% f(x)=x^3+x^2-1.25x-0.75
% finite difference approximation to 1st derivative, error O(h)
x=-2:0.1:1.2;
plot(x, polyval([3 2 -1.25],x), 'g-');  % analytical 1st derivative
h=0.4;    % step size
n=(1.2-(-2))/h+1;
x=-2:h:1.2
f=polyval([1, 1, -1.25, -0.75], x)
f1=conv([1, -1], f)  % finite differences, only f1(2:9) are useful
f1=f1(2:9)/h % approximation to 1st derivative
hold on; % keep the above graph
plot(x(1:8)+h/2, f1,'r-');  % FD approximation to 1st derivative
hold off;

我需要编辑代码,而不是固定的“x^3+x^2-1.25x-0.75”,我可以自己在 matlab 的主窗口中定义参数。也就是说我想把它改成函数。

【问题讨论】:

  • 您的问题是什么?如何把它变成一个函数?
  • 我的问题是,如何更改此代码,我可以每次通过 x 定义参数,而不是将其放入代码“x^3+x^2-1.25x-0.75”中。
  • 您想根据x 对其进行参数化吗?或者hn,多项式的系数?您是否有输出/行为的示例或您尝试过的失败的示例?抱歉,如果我遇到困难,但我只是想确定问题的范围,因为根据预期的应用程序对这样的函数进行参数化可能很简单,也可能非常复杂。
  • 我的意思很简单,我相信。问题是,在我复制的代码中,函数是“x^3+x^2-1.25x-0.75”。它是一个函数,其中参数 A、B、C、D 为:1、1、-1.25、-0.75。我只是想在使用这个函数时有可能自己确定这些参数,所以我可以有另一个函数(例如 3x^2+7x^2-3x+4)。

标签: matlab


【解决方案1】:

要将此函数用于任意多项式,您需要定义一个向量p,其中包含n 次多项式的n+1 系数。在这种情况下:

p = [1, 1, -1.25, -0.75];
f = polyval(p, x);

解析导数的计算可以使用polyder来实现,它返回导数的系数:

dfdx = polyval(polyder(p),x);

【讨论】:

  • 太好了,这就是我的意思。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2023-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2016-03-25
  • 2016-10-08
  • 2022-01-04
相关资源
最近更新 更多