odextend

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

Описание

пример

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

Примеры

свернуть все

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

y1-μ(1-y12)y1+y1=0.

Решите уравнение Ван дер Поля с μ=1 использование 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,:))

Figure contains an axes. The axes contains an object of type line.

Расширьте решение tf=35 использование odextend и добавьте результат в исходный график.

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

Figure contains an axes. The axes contains 2 objects of type line.

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

свернуть все

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

Пример: 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