2013-02-13 29 views
2

我在Matlab中編寫了一個程序,目的是計算某個函數的積分。我應該用積分的梯形方法。目前,代碼如下所示:在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的單個值!我如何重寫函數來返回多個值?還是在這裏有什麼不對嗎?

在此先感謝! end

+1

我看到你用矩陣劃分的問題,而不是在按元素功能funk – 2013-02-13 13:59:39

+0

謝謝!它現在很完美,不是我第一次忘記我不得不承認的點,但我將來會更加小心! – Nekroz 2013-02-13 16:35:47

回答

3

@DanilAsotsky是Rigth。如果你想在函數返回AY每X你插入你應該重寫功能,使操作的elementwise

function y = funk(x) 
y = exp(-x./3)./(2-cos(pi.*x)); 

會做的工作

+0

非常感謝,夥伴。奇蹟般有效!你們都挽救了我的夜晚! – Nekroz 2013-02-13 16:36:37

3

您需要使用基於元素的分割(./)而不是矩陣分割(/)。 Documentation here.

y = exp(-x/3) ./ (2-cos(pi*x)); 

另外請注意,我們強烈推薦的功能和文件名是相同的。兩者都應該是'labb2uppg1Funkfil'或'funk'。

+0

非常感謝,我按照你的建議更改了名稱,並將在未來繼續這樣做:) – Nekroz 2013-02-13 16:38:22