我在Matlab编写了一个程序,目的是计算某个函数的积分。我应该使用梯形方法进行积分。目前,代码如下所示:
a=0; b=2.5; n=2; % n is the number of intervals
h=(b-a)/n; %the width of every interval
x=a:h:b
y=labb2uppg1Funkfil(x)
trapets=h*(sum(y)-(y(1)+y(length(y)))/2)
plot(x,y)
% This is located in a different file named labb2uppg1Funkfil
function y = funk(x)
y = exp(-x/3)/(2-cos(pi*x));
我认为问题是我的函数只返回y的单个值,当它应该是更多的时候!如何重写函数以返回多个值?或者这是其他错误吗?
提前致谢! 端
答案 0 :(得分:3)
您需要使用逐元素划分(./
)而不是矩阵划分(/
)。 Documentation here.
y = exp(-x/3) ./ (2-cos(pi*x));
另请注意,强烈建议功能和文件名保持一致。两者都应该是'labb2uppg1Funkfil'或'funk'。
答案 1 :(得分:3)
@DanilAsotsky是对的。如果希望函数为插入的每个x返回y,则应重写函数以进行元素运算
function y = funk(x)
y = exp(-x./3)./(2-cos(pi.*x));
会做的工作