Минимизация функции, содержащей интеграл - PullRequest
2 голосов
/ 13 февраля 2010

Кто-нибудь знает, как минимизировать функцию, содержащую интеграл в MATLAB? Функция выглядит так:

L = Int(t=0,t=T)[(AR-x)dt], A is a system parameter and R and x are related through:  
dR/dt = axRY - bR, where a and b are constants.  
dY/dt = -xRY

Я где-то читал, что я могу использовать fminbnd и quad в комбинации, но я не могу заставить его работать. Есть предложения?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2010

Если я не понял неправильно, вы пытаетесь свести к минимуму уважение к т:

\int_0^t{(AR-x) dt}

ну тогда вам просто нужно найти нули:

AR-x

Это просто математика, а не матлаб;)

0 голосов
/ 15 февраля 2010

Вот некоторые манипуляции с вашими уравнениями, которые могут помочь.

Объединение второго и третьего уравнений, которые вы дали, дает

dR/dt = -a*(dY/dt)-bR

Теперь, если мы выберем для R правую часть и вставим его в первое уравнение, которое вы дали, мы получим

L = Int(t=0,t=T)[(-A/b*(dR/dt + a*dY/dt) - x)dt]

Теперь мы можем интегрировать первый член, чтобы получить:

L = -A/b*[R(T) - R(0) + Y(T) - Y(0)] - Int(t=0,t=T)[(x)dt]

Так что теперь все, что имеет отношение к R и Y, является конечными точками. Фактически, вы также можете определить новую функцию Z, которая равна Y + R. Тогда вы получите

L = -A/b*[Z(T) - Z(0)] - Int(t=0,t=T)[(x)dt]

В следующей части я не уверен в этом. Интеграл от x по t даст некоторую функцию, которая вычисляется при t = 0 и t = T. Эту функцию мы будем вызывать X, чтобы дать:

L = -A/b*[Z(T) - Z(0)] - X(T) + X(0)

Это уравнение справедливо для всех T, поэтому мы можем установить T на t, если захотим.

L = -A/b*[Z(t) - Z(0)] - X(t) + X(0)

Кроме того, мы можем сгруппировать много констант вместе и назвать их C, чтобы дать

X(t) = -A/b*Z(t) + C

где

C = A/b*Z(0) + X(0) - L

Поэтому я не уверен, что еще с этим делать, но я показал, что интеграл от x (t) линейно связан с Z (t) = R (t) + Y (t). Мне кажется, что есть много уравнений, которые решают это. Кто-нибудь еще видит, куда идти отсюда? Есть проблемы с моей математикой?

0 голосов
/ 13 февраля 2010

Возможно, вы могли бы дать более подробную информацию о вашем интеграле, например, где пропущенная скобка в [AR-x)dt]? Есть ли зависимость x от t, или мы можем интегрировать dR/dt = axR - bR, чтобы дать R=C*exp((a*x-b)*t)? В любом случае, чтобы ответить на ваш вопрос по fminbnd и quad, вы можете установить A,C,T,a,b,xmin и xmax (последние два - диапазон, который вы хотите найти для минимального превышения) и использовать:

 [x fval] = fminbnd(@(x) quad(@(t)A*C*exp((a*x-b)*t)-x,0,T),xmin,xmax)

Это находит x, который минимизирует интеграл.

...