Главная страница
Навигация по странице:

  • Решение дифференциальных уравнений

  • Цель работы.

  • Основные теоретические положения. Функциями решения дифференциальных уравнений являются ode 23

  • Пример 1 Уравнение, описывающее движение, имеет вид y ′′

  • Пример 2

  • Решение дифференциальных уравнений


    Скачать 125.5 Kb.
    НазваниеРешение дифференциальных уравнений
    Дата27.10.2022
    Размер125.5 Kb.
    Формат файлаdoc
    Имя файла9laba.doc
    ТипРешение
    #758608


    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра РАПС


    отчет

    по лабораторной работе 9

    по дисциплине «Информатика»

    Тема: Решение дифференциальных уравнений


    Студент гр. 2421




    Масловский Д.Ю.

    Преподаватель




    Пожидаев А.К.



    Санкт-Петербург

    2022

    Цель работы.

    Изучение возможностей, предоставляе­мых MatLab, для численного решения обыкновенных дифференциальных урав­нений произвольного порядка и систем с начальными условиями, т. е. задачи Коши.

    Основные теоретические положения.

    Функциями решения дифференциальных уравнений являются ode23(), ode45() и другие, имеющие вид:

    [t, x] = ode23('fun', t0, tf, x0)

    [t, x] = ode45('fun', t0, tf, x0)

    [t, x] = ode23('fun', t0.tf.x0, tol, trace)

    [t, x] = ode45('fun', t0.tf.x0, tol, trace)

    где: 'fun' – имя m-файла, в котором содержатся правые части системы дифференциальных уравнений; t0 – начальное значение аргумента; tf – конечное значение аргумента; х0 – вектор начальных условий; tol – задаваемая точность решения дифференциальных уравнений; trace – выдача промежуточных результатов.

    Схема решения задач с начальными условиями

    Задача Коши для дифференциального уравнения состоит в нахождении функции, удовлетворяющей дифференциальному уравнению произвольного порядка y(n) = f(t, y, y, …, y(n– 1) и начальным условиям при t= t0 y(t0) = u0, y(t0) = u1, …, y(n– 1)(t0) = un– 1.

    Схема реше­ния состоит из следующих этапов:

    1. Приведение дифференциального уравнения к системе дифференциальных уравнений первого порядка.

    2. Написание специальной файл - функции для системы уравнений.

    3. Вызов подходящего солвера.

    4. Визуализация результата.

    Пример 1

    Уравнение, описывающее движение, имеет вид y′′ + 2·y + 10·y = sin t.


    =
    у1 = y2 ; у1(0) 0

    у2 = –2·y2 – 10·yl + sin t у2(0) 1 .

    F= @[y(2); –2*y(2) – 10*y(l) + sin(t)];

    % формирование вектора начальных условий

    »Y0 = [1; 0];

    % вызов солвера от файл-функции diff1, начального и конечного

    % момента времени и вектора начальных условий

    »[Т, Y] = ode45('F', [0 15], Y0) ;

    % вывод графика решения исходного дифференциального уравнения

    »plot(T, Y(:, l), 'r')

    % вывод графика производной от решения исходного

    % дифференциального уравнения

    »hold on

    »plot(T, Y(:, 2), 'k--')

    %вывод пояснений на график

    »title(' Solve {\ity} \prime\prime+2{\ity} \prime+10{\ity} = sin{\itt}')

    »xlabel('\itt')

    »ylabel('{\ity}, {\ity} \prime ')

    »legend('coordinates', 'speed')

    »grid on

    »hold off



    Из графика видно, что при­ближенное решение и его производная удовлетворяют начальным условиям, колебание происходит в установившемся режиме, начиная с t = 5.

    Пример 2. Решите систему дифференциальных уравнений

    у 1 = y2 ;

    у2 = –1/t2

    на отрезке [а, 100] при начальных условиях у1(а) = ln а, у2(а) = 1/а,взяв а = 0.001. Легко проверить, что точным решением этой системы является у1= ln t,

    у2 = 1/t.


    Надо уменьшить относительную погрешность вычислений при помощи формирования options с использованием odeset и включении options дополнительным четвертым аргументом в солвер. Для задания от­носительной погрешности служит аргумент ' RelTol ', например

    options = odeset(' RelTol ', 1.0е–04)
    Только точность 10–6 обеспечивает получение приближенного решения, график которого почти совпадает с графиком точного решения.

    »а = 0.001;

    f=@(t,y)[y(2);-1/t.^2];

    % задание начальных условий

    »Y0 = [log (а); 1/а];

    % вызов солвера ode45 при различных погрешностях

    %и вывод графиков приближенных решений

    % точность 0.001

    »options = odeset('RelTol', 1.0e–3);

    »[T, Y] = ode45(f, [a 100], Y0, options);

    »plot(T, Y(:, 1), 'k:')

    % точность 0.0001

    »options = odeset('RelTol', 1.0e–4);

    »[T, Y] = ode45(f, [a 100], Y0, options);

    »hold on

    »plot(T, Y(:, 1), 'k--')

    % точность 0.000001

    »options = odeset('RelTol', 1.0e–6);

    »[T, Y] = ode45('f', [a 100], Y0, options);

    »hold on

    »plot(T, Y(:, 1), 'k-')

    % вывод графика точного решения

    »t = [a:4:100];

    »у = log(t) ;

    »hold on

    »plot(t, y, 'ko')

    % нанесение информации на график

    »xlabel('\itt')

    »ylabel('\ity')

    »title('Comparison of the decision at various errors')

    »legend('10^{-3}', '10^{-4}', '10^{-6}', 'The exact decision',)

    »grid on

    »hold off

    Ход работы.

    Пример 1:

    >> F=@(t,y)[y(2);-2*y(2)-10*y(1)+sin(t)];

    >> % формирование вектора начальных условий

    >> Y0=[1;0];

    >> % вызов солвера от файл-функции diff1, начального и конечного

    >> % момента времени и вектора начальных условий

    >> [T, Y] = ode45(F, [0 15], Y0) ;

    >> % вывод графика производной от решения исходного

    >> plot(T, Y(:, 1), 'r')

    >> % вывод графика производной от решения исходного

    >> % дифференциального уравнения

    >> hold on

    >> plot(T, Y(:, 2), 'k--')

    >> % вывод пояснений на график

    >> title(' Solve {\ity} \prime\prime+2{\ity} \prime+10{\ity} = sin{\itt}')

    >> xlabel('\itt')

    >> ylabel('{\ity}, {\ity} \prime ')

    >> legend('coordinates', 'speed')

    >> grid on

    >> hold off



    Пример 2:

    >> a = 0.001;

    >> f=@(t,y)[y(2);-1/t.^2];

    >> % задание начальных условий

    >> Y0 = [log (a); 1/a];

    Error using log

    Not enough input arguments.

    >> Y0 = [log(a); 1/a];

    >> % вызов солвера ode45 при различных погрешностях

    >> % и вывод графиков приближенных решений

    >> % точность 0.001

    >> options = odeset('RelTol', 1.0e-3);

    >> [T, Y] = ode45(f, [a 100], Y0, options);

    >> plot(T, Y(:, 1), 'k:')

    >> % точность 0.0001

    >> options = odeset('RelTol', 1.0e-4);

    >> [T, Y] = ode45(f, [a 100], Y0, options);

    >> hold on

    >> plot(T, Y(:, 1), 'k--')

    >> % точность 0.000001

    >> options = odeset('RelTol', 1.0e-6);

    >> [T, Y] = ode45(f, [a 100], Y0, options);

    >> hold on

    >> plot(T, Y(:, 1), 'k-')

    >> % вывод графика точного решения

    >> t = [a:4:100];

    >> y = log(t) ;

    >> hold on

    >> plot(t, y, 'ko')

    >> % нанесение информации на график

    >> xlabel('\itt')

    >> ylabel('\ity')

    >> title('Comparison of the decision at various errors')

    >> legend('10^{-3}', '10^{-4}', '10^{-6}', 'The exact decision')

    >> grid on

    >> hold off



    Вывод.

    Численные решения обыкновенных дифференциальных урав­нений произвольного порядка и систем с начальными условиями, т. е. задачи Коши-с ними MatLab способен справиться и показать всё наглядно.



    написать администратору сайта