2014-09-01 64 views
0

我正在嘗試編寫一個循環來計算每個步驟中定積分的值。函數F非常複雜。簡單地說,它集成了一系列關於s的項,從s = tn-(n/2)到s = tn +(n/2)。整合後,F仍然有一個變量t。所以你可以說F(t)=積分(f(s,t)),其中f(s,t)是「int(」在行「F = @t ...」之後的大混亂項。在最後一行中,我想在F計算f(s,t)的積分後,在t = tn時計算F(t)。在計算卷積積分時,未定義的函數或變量's'

但是,運行此操作後,出現錯誤「Undefined function or variable' S'。」

function [ bigTheta_n ] = Untitled(bigTheta_o, bigOmega_o) 
nt=5001; %since (50-0)/.01 = 5000 
dt = .01; % =H 
H=.01; 
l=.05; 

bigTheta_n = ones(nt,1); 
bigTheta_n(1)=bigTheta_o; %theta_o 

bigOmega_n = ones(nt,1); 
bigOmega_n(1)=bigOmega_o; %omega_o 
littleOmega_n = ones(nt,1); 

epsilon=10^(-6); 
eta = epsilon*10; 

t_o=0; 

    function Keta = K(t) 
     Keta = (422.11/eta)*exp((5*(4*((t-tn)^2)/eta^2)-1)^(-1))   
    end 

    function F = F(t) 
     F = int(Keta(eta*t-s)*littleOmega_n,s,tn-(n/2),tn+(n/2)) 
    end 

for n=1:4999 
    tn=t_o+n*dt; 
    littleOmega_n(n) = bigOmega_n(n) - sin(bigTheta_n(n))*cos(2*pi*tn/epsilon)/(2*pi*l); 
    F = @(t) int(Keta(eta*t-s)*littleOmega_n,s,tn-(n/2),tn+(n/2)); 
    bigTheta_n(n+1) = bigTheta_n(n) + H*F(tn) 
end 

end 

即使我擺脫了線的‘F = @(T)...’,並替換爲以下(並將其置於其中凱塔= K(T)的定義)

function F = F(t, ti, tf) 
    F = int(Keta(eta*t-s)*littleOmega_n,s,ti,tf) 
end 

然後更換最終與

bigTheta_n(n+1) = bigTheta_n(n) + H*F(tn, tn-(n/2), tn+(n/2)) 

bigTheta_n(n+1) = bigTheta_n(n) + H*F(tn) 

我仍然得到同樣的錯誤 「未定義的函數或變量的'。」

+0

什麼是這行'sys s'? – JayInNyc 2014-09-01 02:34:49

+0

我刪除它,並沒有什麼區別 – 2014-09-01 02:39:39

回答

0

試試這個

F = @(t) int(@(s) Keta(eta*t-s)*littleOmega_n,s,tn-(n/2),tn+(n/2)); 

這使得積一個匿名函數輸入s

+0

即使嘗試仍然收到消息「未定義的函數或變量」。「,」錯誤 Untitled/@(t)int(@(s)Keta(eta (n + 2),tn +(n/2))「和」無標題中的錯誤(第34行) bigTheta_n(n + 1)= bigTheta_n(n)+ H * F (TN);」 – 2014-09-02 21:14:37

+0

's'應該做什麼?它是你正在整合的變量還是其他的?如果是別的東西,那麼在使用它之前需要定義它。 – David 2014-09-03 23:31:38