exponenta event banner

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.

Решите уравнение van der Pol с λ = 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 для создания или изменения структуры опций ODE.

Типы данных: 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