辛普森的3/8规则错误

时间:2013-12-18 04:52:41

标签: matlab

%Simpson's 3/8 rule
b=3;
a=0;
x=1;
y(x) = (exp(x)*sin(x)) /( 1 + x^2); 
I=((b-a)/8)*(y(a)+3*y((2*a+b)/3)+3*((a+2*b)/3)+y(b));
disp(I);

在这段代码中我只是尝试使用Simpson的3/8规则但是当我尝试测试它时。我收到这个错误:

Attempted to access y(0); index must be a positive integer or
logical.

Error in simpson38 (line 5)
I=((b-a)/8)*(y(a)+3*y((2*a+b)/3)+3*((a+2*b)/3)+y(b));

那我该怎么做才能解决这个问题呢?谢谢你们。

1 个答案:

答案 0 :(得分:3)

如果您尝试定义函数y(x),则需要创建匿名函数:

y = @(x) (exp(x)*sin(x)) / (1 + x^2); 

在您的代码y(x) = ...x=1只设置y的元素1,从而创建标量y