Как получить значения из NMaximize в цикле For

Я использую NMaximize для получения значений из функции NDSolve:

Flatten[NDSolve[{x''[t] == (F Cos[\[CapitalOmega] t] - 
c x'[t] - (k + \[Delta]kb) x[t] + \[Delta]kb y[t])/m, 
y''[t] == (-c y'[t] - (k + \[Delta]kb) y[t] + \[Delta]kb x[t])/m, 
x'[0] == 0, y'[0] == 0, x[0] == 0, y[0] == 0}, {x[t], y[t]}, {t, 0, 10}]];

NMaximize[{Evaluate[y[t] /. s], 8 < t < 9}, t]

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

Я пытаюсь использовать цикл For для получения различных максимумов, достигнутых для диапазона «CapitalOmega», скажем, от 80 до 130 с шагом 1/2.

В настоящее время я получаю результат в форме:

{a, {t -> b}}

Как можно поместить This в список для всех значений «a», полученных из цикла For? Это так, что они могут быть построены с использованием

ListLinePlot[]

person edwincool2    schedule 27.09.2013    source источник


Ответы (1)


Если для каждого значения CapitalOmega вы получаете несколько {a,{t->b}} из своего NDSolve и вам просто нужен список значений «a», тогда

Table[First[NDSolve[...],{CapitalOmega,80,130,1/2}]

должен сделать это. The First будет извлекать «a» каждый раз, и использование Table вместо For поместит их в список для вас. Если мой пример не совсем соответствует вашему фактическому коду, вы все равно сможете использовать эту идею для достижения того, чего хотите.

Примечание. Когда я пытаюсь вставить только ваш NDsolve[...] в Mathematica, я получаю

NDSolve::ndnum: Обнаружено нечисловое значение для производной в момент времени t==0.`.

что может быть реальной проблемой или может быть просто из-за того, как вы вырезали и вставляли свое сообщение.

person Bill    schedule 27.09.2013
comment
мы не можем запустить код, не зная значений, которые нужно использовать для всех констант. - person agentp; 28.09.2013