2014-09-01 5 views
0

각 단계에서 한정 분모의 값을 계산하는 루프를 작성하려고합니다. 함수 F는 매우 복잡합니다. 간단히 말하면, s = tn- (n/2)에서 s = tn + (n/2)까지 s와 관련하여 여러 용어를 통합합니다. 통합 후, F는 여전히 변수 t를가집니다. 따라서 F (s, t)는 "F = @t ..."에서 "int ("다음에 오는 용어의 큰 혼란입니다. 마지막 줄에서, F가 f (s, t)의 적분을 계산 한 후에 t = tn에서 F (t)를 계산하려고합니다.정의되지 않은 함수 또는 변수 's'를 회귀 적분 계산시 Matlab에서

그러나 이것을 실행하면 "정의되지 않은 함수 또는 변수 ' 의 '. "

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 

I 라인을 제거하더라도"... 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

+0

나는 그것을 제거하고 아무런 차이가 없었습니다. –

답변

0

이 적분을 만드는이

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

시도를 얻을 수 입력을받는 익명의 함수 s.

+0

"아직 정의되지 않은 함수 나 변수가 있습니다."라는 메시지가 계속 표시 되더라도 " 무명/@ (t) int (@) Keta (eta * ts) * littleOmega_n, s, tn- (n/2), tn + (n/2)) "및"제목 없음 오류 (라인 34) bigTheta_n (n + 1) = bigTheta_n (n) + H * F (tn); " –

+0

''해야 할 일은 무엇입니까? 그것은 당신이 존중과 통합하는 변수입니까, 아니면 다른 것입니까? 그것이 다른 것이면 사용하기 전에 정의해야합니다. – David