如何在matlab中集成该函数
我对matlab是新手 如何集成这行代码如何在matlab中集成该函数,matlab,integration,Matlab,Integration,我对matlab是新手 如何集成这行代码 p2= polyfit(x,y,length(x)); from= x(1); to= x(length(x)); 我需要集成p2 我尝试了很多集成功能: value = integral(p2,from,to); 但是我有 使用整数时出错(第82行)第一个输入参数必须是函数 处理 这是因为在您的代码中,p2,不是一个函数。它只是一个系数向量。integral的第一个参数需要处理要集成的函数 从代码判断,似乎需要定义一个函数来计算多项式p2。如果是
p2= polyfit(x,y,length(x));
from= x(1);
to= x(length(x));
我需要集成p2
我尝试了很多集成功能:
value = integral(p2,from,to);
但是我有
使用整数时出错(第82行)第一个输入参数必须是函数
处理
这是因为在您的代码中,
p2
,不是一个函数。它只是一个系数向量。integral
的第一个参数需要处理要集成的函数
从代码判断,似乎需要定义一个函数来计算多项式p2
。如果是这样,您可以执行以下示例:
% take an example set of x and y
x = linspace(0, pi, 1000); % uniform samples between 0 to pi
y = sin(x); % assume, for sake of example, output is sine function of input
% polynomial fit
p2 = polyfit(x,y,4); % 4th order polynomial
% Note that, in general, the order should be much smaller than length(x).
% So you probably should review this part of your code as well.
% define a function to evaluate the polynomial
fn = @(x) polyval(p2, x);
% this means: fn(x0) is same as polyval(p2, x0)
% compute integral
value = integral(fn,x(1),x(end));
您可以使用该函数获得多项式的精确积分的多项式系数:
p2 = polyfit(x,y,length(x));
int = diff(polyval(polyint(p2),x([1 end])));
将函数
y
传入,而不是y的系数
非常感谢,您还说了一件事-顺序应该比长度(x)小得多。实际上,正如我们的指导老师所写的那样:将数据拟合成n次多项式,其中n是x的元素数,他是指其他意思还是他可能错了?@程序员:假设n=length(x)
,一个n-1次多项式就足以在fn(x)
和y
之间得到精确的拟合,无论您选择什么y
。因此,在我看来,没有很好的理由去拟合次数n
或更高的多项式(实验除外)。
p2 = polyfit(x,y,length(x));
int = diff(polyval(polyint(p2),x([1 end])));