- •Тема 1. Численные методы решения уравнений
- •Отделение корня
- •Графический метод отделения корня
- •Уточнение корня методом деления отрезка пополам
- •1.3 Метод касательных
- •Тема 2. Аппроксимация
- •2.1 Меры погрешности аппроксимации
- •Метод наименьших квадратов
- •2.3 Неполиномиальная регрессия
- •2.2 Нахождение коэффициентов cj при точечной аппроксимации методом наименьших квадратов
- •Тема 3. Интерполяция
- •3.1 Интерполяция по Лагранжу
- •3.2 Интерполяция при постоянном шаге
- •3.3 Обратная интерполяция
- •3.4 Численное дифференцирование
- •Тема 3. Численное интегрирование
- •Квадратурные формулы прямоугольников, трапеций, Симпсона для вычисления определенных интегралов
- •Тема 4. Численные методы решения обыкновенных дифференциальных уравнений
- •Задача Коши для обыкновенного дифференциального уравнения 1-го порядка
- •Метод Эйлера
- •4.1 Решение систем дифференциальных уравнений первого порядка
- •Решение дифференциальных уравнений первого порядка и систем дифференциальных уравнений первого порядка в Scilab
4.1 Решение систем дифференциальных уравнений первого порядка
Запишем систему дифференциальных уравнений первого порядка:
(4.10)
Здесь x – независимая переменная, f1, f2, …, fn – заданные функции.
Решением
(4.10) называют совокупность функций
,
которые после подстановки в систему
уравнений (4.10) обращают их в тождество.
Задача Коши для системы (4.10) ставится так:
Найти
такие, что
,
-
некоторые заданные числа.
Метод
Эйлера для решения задачи Коши заключается
в вычислении
по формулам:
(4.11)
Пример:
Ф
ормулы
для вычислений будут такими:
Здесь
Решение дифференциальных уравнений первого порядка и систем дифференциальных уравнений первого порядка в Scilab
Для
того чтобы решить обыкновенное
дифференциальное уравнение вида
,
необходимо вызвать функцию y=ode(y0,x0,x,f).
Здесь y0 - вектор начальных условий; x0 - начальная точка интервала интегрирования ; x - координаты узлов сетки, в которых происходит поиск решения; f - функция, определяющая правую часть уравнения или системы уравнений (4.7) или (4.10); y - вектор решений.
Рассмотрим использование функции на примере следующих задач.
ЗАДАЧА.
Решить задачу Коши
Решение
Перепишем
уравнение следующим образом:
Далее представим его в виде внешней функции и применим функцию z=ode(y0,x0,x,f), в качестве параметров которой будем использовать следующие:
f - предварительно созданная функция f(x, y) (f(x,y)=-y+sin(xy) – правая часть нашего дифуравнения);
x - координаты сетки;
y0, x0 - начальное условие y(0)=1.5;
z - результат работы функции.
Приведем листинг программы, которая строит график, моделирующий процесс, описанный данным уравнением. Здесь х меняется от 0 до 35 с шагом 1. Решение уравнения в точках 0, 1,2,…,35 задается вектором z, координаты которого можно распечатать, убрав точку с запятой в конце 5 строки.
clc
xbasc()
function w=f(x,y),w=-y+sin(x*y),endfunction;
x0=0;y0=1.5;x=0:1:35;
z=ode(y0,x0,x,f);plot(x,z);xgrid(5)
Графическое решение дифференциального уравнения
Заменив пятую строку на z=ode("rkf",y0,x0,x,f), получим решение уравнения методом Рунге-Кутта.
Пример. Решить задачу Коши для системы двух дифференциальных уравнений первого порядка
на интервале [0; 10].
Приведем функцию, описывающую заданную систему обыкновенных дифференциальных уравнений, и команды Scilab, необходимые для ее численного и графического решения.
xbasc()
//Функция, описывающая систему дифференциальных уравнений
function g=syst(x,w)
g=zeros(2,1);
g(1)=cos(w(1)*w(2));
g(2)=sin(w(1)+w(2)*x);
endfunction
//Решение системы дифференциальных уравнений
w0=[1;2];x0=0;x=0:.1:10;w=ode(w0,x0,x,syst);xgrid(2)
//Формирование графического решения
plot(x,w),legend('y','z')
Графическое решение задачи
В программе zeros(2,1) матрица, состоящая из нулей, размерностью 2х1.
Первый аргумент вектора w - это y(0), второй z(0).
