Опубликован: 12.03.2015 | Уровень: для всех | Доступ: платный | ВУЗ: Компания ALT Linux
Лекция 9:

Решение обыкновенных дифференциальных уравнений и систем

9.3 Реализация численных методов

Ниже приведены тексты функций, реализующие рассмотренные в п. 9.2 численные методы решения дифференциальных уравнений.

	
function[x, t]= eiler(a, b, n, x0)
% Функция решения задачи Коши x'(t) = g(t, x) x(a) = x0 методом Эйлера.
% n — количество отрезков, на которые разбивается интервал [a, b].
	h=(b-a)/n; % Вычисление шага h.
	x(1)=x0;
	for i =1:n+1 % Формирование системы равноотстоящих узлов ti
		t(i)=a+(i-1)*h;
	end
	% Вычисление значений функции в узловых точках по формуле (9.11)
	for i =2:n+1
		x(i)=x(i-1)+h*g(t(i-1),x(i-1));
	end
end
Листинг 9.1. Функция решения задачи Коши методом Эйлера.
	
function[x, t]= eiler_m(a, b, n, x0)
% Функция решения задачи Коши x'(t) = g(t, x)x(a) = x0
% модифицированным методом Эйлера.
% n — количество отрезков, на которые разбивается интервал [a, b].
	h=(b-a)/n;% Вычисление шага h.
	x(1)=x0;
	for i =1:n+1 % Формирование системы равноотстоящих узлов ti
		t(i)=a+(i-1)*h;
	end
	% Вычисление значений функции по формулам (9.13) — (9.14).
	for i =2:n+1
		tp=t(i-1)+h/2;
		xp=x(i-1)+h/2*g(t(i-1), x(i-1));
		x(i)=x(i-1)+h*g(tp, xp);
	end
end
Листинг 9.2. Функция решения задачи Коши модифицированным методом Эйлера.
	
function[x, t]= runge_kut(a, b, n, x0)
% Функция решения задачи Коши x'(t) = g(t, x) x(a) = x0 методом Рунге-Кутта
% n — количество отрезков, на которые разбивается интервал [a, b].
	h=(b-a)/n;% Вычисление шага h.
	x(1)=x0;
	for i =1:n+1 % Формирование системы равноотстоящих узлов ti
		t(i)=a+(i-1)*h;
	end
	% Вычисление значений функции формуле (9.16).
	for i =2:n+1
		% Расчёт коэффициентов K1, K2, K3, K4
		K1=g(t(i-1), x(i-1));
		K2=g(t(i-1)+h/2, x(i-1)+h/2*K1);
		K3=g(t(i-1)+h/2, x(i-1)+h/2*K2);
		K4=g(t(i-1)+h, x(i-1)+h-K3);
		% Расчёт приращения delt
		delt=h/6*(K1+2*K2+2*K3+K4);
		x(i)=x(i-1)+delt;
	end
end
Листинг 9.3. Функция решения задачи Коши методом Рунге-Кутта..
Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?

Владимир Мельников
Владимир Мельников
Россия, г. Омск
анна тихонова
анна тихонова
Россия