2011-11-25 2 views
1

에서 재귀 함수의 적분 :내가 재귀되는 다음과 같은 상징적 통합을 계산하려는 MATLAB

function [y] = myfunc(i,T) 
    s = sym('s'); 
    x= sym('x'); 
    h=[....] %matrix n*n (function of x) 
    d=[....] %matrix n*1 (constants) 
    for k=1:n 
     if (T>0) 
      y= int(exp(-s*x)*h(i,k)*myfunc(k,T-x/d(i)),'x',0,T); 
    end 
end 

적분을 계산하는 동안 내가 MATLAB을 예상, 호출 0에서 'X'의 다른 값에 대한 myfunc(k,T-x/d(i)) T. 그러나 myfunc은 실제 값이 아닌 기호 값 'x'로 호출되므로 오류를 반환합니다. 실제로, if (T>0) 표현식이 참인지 거짓인지를 판단 할 수 없습니다.

이 재귀 적분을 어떻게 계산할 수 있는지 제안 할 수 있다면 고맙겠습니다. 감사

+0

나는 너를 도울 수있을 것이라고 생각하지 않지만, 너의 문제를 이해하려고 노력할 때, 'h'와 'd'에 들어있는 것이 아직도 불분명하다. 또한 재귀 적 구성표에서 함수를 전달할 때 왜 'i'가 변경되지 않습니까? – Vidar

+0

나는 질문에만 집중할 수 있도록 간단하고 간단한 첫 번째 코드를 작성했습니다. 그러나 질문했을 때, 나는 그것에 대한 자세한 내용을 편집하고 추가했습니다. 또한, 'h'의 요소는 'x'의 함수 인 확률 밀도 함수이고 'd'는 상수 값을 포함합니다 ... thanks – Joseph

+0

심볼릭 통합은 다른 값으로 재귀 적으로'myfunc'를 호출하여 작동하지 않습니다. 이 접근법은 수치 구적 법 (numeric quadrature)에 대해서만 작용합니다 (분명히 적분을 근사 적으로 나타냅니다. –

답변

0

재귀 함수의 각 단계에서 다른 실수 값을 사용하려면 변수가 얼마나 깊은지를 정의 할 수 있습니다. 우리가 depth를 호출하고 최고 수준에 그 때마다 당신은 당신이 숫자에 대응 얻으려면 당신이 지금 1

에 의해 depth을 증가 한 단계 더 깊게 1로 동일

가정하자 오른쪽 깊이는 y(depth)으로 부를 수 있습니다.

관련 문제