2013-10-14 63 views
0

我已經在matlab中定義了一個非常基本的函數。它不需要輸入並返回10個浮點數的數組。 我遇到的問題是,當我運行函數返回數組我想我得到不正確的值,但是當我替換一個值,並簡單地打印出的函數內的值我得到正確的答案?! 從下面的代碼我已經張貼樣本:函數中的基本算術問題(Matlab)

% Calculate the terms in our expression 
FirstTerm = sin(Alpha)*(atan(x+d)-atan(x-d)); 
SecondTerm = cos(Alpha)*0.5*log(((x+d).^2+h.^2)/((x-d).^2+h.^2)); 

% Combine and return result 
Result = 2 * (FirstTerm - SecondTerm) 

FirstTermTemp = sin(Alpha)*(atan(-8+d)-atan(-8-d)); 
SecondTermTemp = cos(Alpha)*0.5*log(((-8+d).^2+h.^2)/((-8-d).^2+h.^2)); 
ResultTemp = 2 * (FirstTermTemp - SecondTermTemp) 

我想計算,在-8開始這樣的成績應該比賽數組。有誰知道爲什麼他們不會? 乾杯 傑克

+0

你能告訴什麼號碼,你也希望他們是什麼呢?我有一種感覺,這是一個浮點精度誤解 – Dan

+0

是的肯定的事情,我期望(我已經使用mathematica /楓/手工驗證了這一點)得到0.0979,這是我從運行中得到的直接使用-8當我在數組上運行時,我得到了0.0181 – JMzance

+0

是的,但是你對'alpha','d'和'h'使用了什麼?請提供一切,以便可以複製問題 – Dan

回答

1

你都不放過一個.之前你/

% //Calculate the terms in our expression 
FirstTerm = sin(Alpha)*(atan(x+d)-atan(x-d)); 
SecondTerm = cos(Alpha)*0.5*log(((x+d).^2+h.^2)./((x-d).^2+h.^2)); 
% //Combine and return result 
Result = 2 * (FirstTerm - SecondTerm) 

Result = 

Columns 1 through 7: 

    0.097944 0.133866 0.208270 0.425797 0.692904 -0.140347 -0.124798 

Columns 8 and 9: 

    -0.095581 -0.076166