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

Функция для решения, заданная как указатель на функцию. Используйте этот вход для расширения решения с помощью новой или измененной функции ODE. Чтобы продолжить использование исходной функции ОДУ, используемой для создания структуры решения 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]. The 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
Для просмотра документации необходимо авторизоваться на сайте