odextend

Расширьте решение ОДУ

Синтаксис

solext = odextend(sol,odefun,tfinal)
solext = odextend(sol,[],tfinal)
solext = odextend(sol,odefun,tfinal,y0)
solext = odextend(sol,odefun,tfinal,y0,options)

Описание

пример

solext = odextend(sol,odefun,tfinal) расширяет решение sol путем интеграции odefun от sol.x(end) до tfinal, использования того же решателя ОДУ, который создал sol. Функциональный odefun может отличаться, чем исходная функция раньше вычисляла sol. Нижняя граница для независимой переменной в solext эквивалентна в sol, то есть, sol.x(1) x1 . По умолчанию, использование odextend:

  • Начальные условия y = sol.y(:,end) для последующего интегрирования.

  • Те же свойства интегрирования и дополнительные входные параметры, что решатель ОДУ первоначально раньше вычислял sol. Эта информация хранится в структуре решения sol и позже возвращена в solext. Если вы не хотите изменить эти значения, вы не должны передавать их odextend.

solext = odextend(sol,[],tfinal) расширяет решение той же функции ОДУ, которая была решена, чтобы получить sol.

solext = odextend(sol,odefun,tfinal,y0) задает новые начальные условия y0 для расширенного интегрирования вместо того, чтобы использовать sol.y(:,end) .

Для решателя ode15i: y0 должен быть m-2 матрицей, содержащей векторы - столбцы начальных условий для компонентов решения и их производных, y0 = [yinit ypinit].

solext = odextend(sol,odefun,tfinal,y0,options) использует опции интегрирования, заданные options, который является созданным использованием аргумента функции odeset. Заданные опции заменяют опции, что решатель ОДУ первоначально раньше вычислял sol. Можно опционально задать y0 = [], чтобы использовать начальные условия по умолчанию.

Примеры

свернуть все

Уравнение Ван дер Поля является ОДУ второго порядка

Решите уравнение Ван дер Поля с использованием ode45. Функциональный vdp1.m поставляется с MATLAB® и кодирует уравнения. Задайте единственный вывод, чтобы возвратить структуру, содержащую информацию о решении, таком как точки оценки и решатель.

tspan = [0 20];
y0 = [2 0];
sol = ode45(@vdp1,tspan,y0)
sol = struct with fields:
     solver: 'ode45'
    extdata: [1x1 struct]
          x: [1x60 double]
          y: [2x60 double]
      stats: [1x1 struct]
      idata: [1x1 struct]

Используйте linspace, чтобы сгенерировать 250 точек в интервале [0 20]. Оцените решение в этих точках с помощью deval.

x = linspace(0,20,250);
y = deval(sol,x);

Постройте график первого компонента решения.

plot(x,y(1,:))

Расширьте решение использования odextend и добавьте результат к исходному графику.

sol_new = odextend(sol,@vdp1,35);
x = linspace(20,35,350);
y = deval(sol_new,x);
hold on
plot(x,y(1,:),'r')

Входные параметры

свернуть все

Структура решения, заданная как структура, возвращенная решателем ОДУ. Когда вы вызываете решатель ОДУ с единственным выходным аргументом, это возвращает структуру решения.

Пример: sol = ode45 (myode, tspan, y0)

Типы данных: struct

Функция, чтобы решить, заданный как указатель на функцию. Используйте этот входной параметр, чтобы расширить решение с помощью новой или измененной функции ОДУ. Чтобы продолжить использовать исходную функцию ОДУ, используемую, чтобы создать структуру решения sol, задайте odefun как пустой входной параметр [].

Типы данных: function_handle

Итоговое время интегрирования, заданное как скаляр.

Типы данных: single | double

Начальные условия, заданные как скаляр, вектор или матрица. odextend по умолчанию использует начальные условия y = sol.y(:,end), чтобы расширить интегрирование. Используйте этот входной параметр, чтобы задать новые начальные условия для расширенного интегрирования.

Для решателя ode15i: y0 должен быть m-2 матрицей, содержащей векторы - столбцы начальных условий для компонентов решения и их производных, y0 = [yinit ypinit].

Типы данных: single | double

Структура опций. По умолчанию odextend использует те же опции и дополнительные входные параметры, как решатель ОДУ первоначально раньше вычислял sol. Используйте этот входной параметр, чтобы задать новую структуру опций, которая заменяет опции, используемые, чтобы создать sol.

Используйте функцию odeset, чтобы создать или изменить структуру опций ОДУ.

Типы данных: struct

Выходные аргументы

свернуть все

Расширенное решение, возвращенное как структура. Используйте эту структуру с функцией deval, чтобы оценить решение в любой точке в интервале [t0 tf]. Массив структур solext всегда включает эти поля:

Поле структурыОписание

sol.x

Вектор строка с шагом, выбранным решателем.

sol.y

Каждый столбец sol.y(:,i) содержит решение во время sol.x(i) .

sol.solver

Имя решателя.

Кроме того, если вы задаете опцию Events, и события обнаруживаются, затем solext также включает эти поля:

Поле структурыОписание

sol.xe

Точки, когда события имели место. sol.xe(end) содержит точное место терминального события, если таковые имеются.

sol.ye

Решения, которые соответствуют событиям в sol.xe.

sol.ie

Индексы в вектор, возвращенный функцией, заданы в опции Events. Значения указывают, какое событие решатель обнаружил.

Представлено до R2006a

Была ли эта тема полезной?