Интеграл рекурсивной функции в MATLAB - PullRequest
1 голос
/ 25 ноября 2011

Я хочу вычислить следующий символический интеграл, который является рекурсивным:

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, вычисляя интеграл, вызывает myfunc(k,T-x/d(i)) для различных значений 'x' от 0 до T. Однако, он возвращает ошибку, поскольку myfunc будет вызываться с символическим значением 'x', а не с реальным значением.Действительно, он не может определить if (T>0) выражение, истинное или ложное.

Буду признателен, если вы подскажете, как можно вычислить этот рекурсивный интеграл?Спасибо

1 Ответ

0 голосов
/ 11 января 2013

Если вы хотите убедиться, что на каждом шаге рекурсивной функции используется другое действительное значение, вы можете определить переменную, чтобы учесть, насколько вы глубоки.

Предположим, мы называем это depth,а на верхнем уровне он равен 1. Каждый раз, когда вы идете на один шаг глубже, вы увеличиваете depth на 1.

Теперь, если вы хотите получить число, соответствующее правильной глубине, вы можете простоНазовите это как y(depth).

...