使函数在Matlab中返回多个值

时间:2013-02-13 13:56:16

标签: matlab integral

我在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的单个值,当它应该是更多的时候!如何重写函数以返回多个值?或者这是其他错误吗?

提前致谢! 端

2 个答案:

答案 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));

会做的工作