Министерствообразования и науки Российской Федерации
Новосибирскийгосударственный технический университет
Кафедраэкономической информатикиКурсовая работа по дисциплине «Численныеметоды»на тему:
«Интеграционныйметод Эйлера для решения линейных систем алгебраических уравнений»
Факультет: Бизнеса
Преподаватель: СарычеваО.М.
Новосибирск, 2010
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИ
2. ОПИСАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.1 Общие сведения
2.2 Функциональное назначение
2.3 Логическая структура
2.4 Входные данные
2.5 Вызов и загрузка
2.6 Выходные данные
3. ОПИСАНИЕ ТЕСТОВЫХ ЗАДАЧ
3.1 Для обычных линейных ОДУ
3.2 Для жестких ОДУ
4. АНАЛИЗ РЕЗУЛЬТАТОВ. ВЫВОДЫ
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЯ
ВВЕДЕНИЕ
Метод Эйлерадля решения линейных систем алгебраических уравнений является итерационнымметодом, который предполагает задание достаточно близких к искомому решениюисходных данных.
В даннойработе требуется проанализировать влияние шага на ошибки интегрирования и числоитераций, а также сравнить решение обычных и жестких систем. Для этогонеобходимо составить программу на языке MatLAB,реализующую метод, и протестировать ее при различных исходных данных.
1.МАТЕМАТИЧЕСКАЯ ПОСТАНОВКА ЗАДАЧИ
Пусть заданасистема ОДУ:
/>
Численное интегрированиеэтой системы заключается в определении значений x(t) на интервалевремени от 0 до Т при заданных начальных условиях х(0). При этом интервалвремени от 0 до Т разбивается на шаги с интервалом Dtm=hm=(tm+1-tm), здесь m – номер шага, m=/>. Очередное значение хm+1 вычисляется на основании предыдущихзначений х:
xm+1=xm+hmF(xm,tm)
Для дальнейшего решениясистемы ОДУ методом Эйлера линеаризируем ее в точке xm,tm:
/>
Матрица />, при этом /> суть константы,вычисленные в точке линеаризации:
/>=/>/>
Входной сигнал прилинеаризации является известной функцией времени и при фиксированном tm на шаге hm может считаться константой. Элементыматрицы А меняются лишь с изменением точки линеаризации.
Характеристикиметода:
1. Точность. Формула xm+1=xm+hmF(xm,tm) аппроксимирует ряд Тейлора дляфункции x(tm — 1) до линейного по h члена включительно. Поэтому εamiпропорциональна hm2. Можно сказать, что существует такое значение /> в интервале/>, при котором
ε />
2. Устойчивость. Дляанализа устойчивость матрицу А приводят к диагональному виду: A = PλP-1. Тогда система примет вид: x’ = PλP-1x. Нулевое состояние равновесиясистемы /> асимптотически устойчивопри a, такжеасимптотически устойчив. При a>0 нулевое состояние равновесия системы неустойчиво. Следовательно,система /> также неустойчива.
3. Шаг интегрирования.При соблюдении абсолютной или относительной устойчивости:
h
В любых случаях шаг нужнокорректировать по условиям точности.
эйлерлинейный уравнение программа интерация
2. ОПИСАНИЕ ПРОГРАММНОГООБЕСПЕЧЕНИЯ
В этом разделе будутрассмотрены параметры программы и ее логическая структура.
2.1 Общие сведения
Программа написана наязыке MatLAB в среде MatLAB 6.5. Для работы программы необходимо наличиеоперационной системы Windows95 и выше, а также наличие среды MatLAB 6.5(на более поздних версиях среды программа не тестировалась). Программа включаетв себя 4 файлов: Start.m – головной файл, необходимый длязапуска программы на выполнение и построения графика функций и ошибок, Fun.m – содержит ОДУ для вычисления, FunT – функция вычисления точного решения системы, RK1.m – содержит решение системы методом Эйлера.
2.2 Функциональноеназначение
Программа предназначенадля решения систем линейных ОДУ методом Эйлера. Вывод решения производится пографикам. На них отображены зависимости решения от времени интегрирования.
2.3 Логическая структура
Работу программы можнопредставить с помощью схемы, изображенной на рис.1:
/>
Рис. 1. Блок-схема программы
Рассмотрим каждый изэтапов работы программы подробнее.
Ввод исходных данныхосуществляется путем внесения изменений в текст программы.
Далее программа вызывает RK1.m, где происходит решение системыметодом Эйлера, следуя алгоритму:
1. задание исходныхданных, инициализация переменных
2. вычислениезначений х, если выбран способ решения с переменным шагом, то происходитвычисление шага и его сравнение с максимальным, который задан изначально
3. формирование t_out, y_out, в которые заносятся соответственновремя интегрирования и значения х.
Далее происходит вызов FunT, где вычисляется точное решениесистемы.
После чего происходитпостроение графиков.
2.4 Входные данные
В качестве входных данныхвыступают:
a) линейное ОДУ
b) шагинтегрирования
c) допустимая ошибкааппроксимации
d) начальные значениях
2.5 Вызов и загрузка
Вызов программыпроисходит через среду MatLAB.Для этого надо указать директорию доступа к файлам программы и ввести вкомандную строку имя головного файла – start.m.Программа занимает 1.5 Кб места жесткого диска (начальное время интегрирования).При вычислении результата и построении графиков используется незначительныйобъем памяти.
2.6 Выходные данные
Выходная информацияпредставляется в графическом виде. Значения всех переменных можно просмотретьчерез среду MatLAB.
3. ОПИСАНИЕ ТЕСТОВЫХЗАДАЧ
В ходетестирования программ, реализующих метод Эйлера для обычных и жестких линейныхОДУ, исследовалось влияние шага интегрирования на ошибку аппроксимации и числоитераций. Для этого исследования вводились различные значения.
3.2 Для обычных линейныхОДУ
Программатестировалась на системе:
/>Величина шага Ошибка аппроксимации число итераций 0,1 0,0099 256 0,01 0,01 1932 0,001 0,0073 358 0,0001 0,01 2569 0,00001 0,0015 1
При решении этой жесистемы c переменным шагом число итераций возрослодо 2530, при этом ошибка аппроксимации составила 0,0099.
3.3 Для жестких ОДУ
Программа тестироваласьна системе:
/>
Числоитераций при решении системы составило 2016, ошибка аппроксимации равна 0,01.
Величина шага Ошибка аппроксимации число итераций 0,1 0,0091 157 0,01 0,01 1169 0,001 0,01 7129 0,0001 0,01 25258 0,00001 0,0012 1
В Приложении 2 содержаться графики итераций для шага 0,01 и0,001 для обычных систем и для шага 0,01 – для жестких.
4. АНАЛИЗ РЕЗУЛЬТАТОВ. ВЫВОДЫ
Проведя анализрезультатов тестирования, можно сказать, что наиболее эффективна программа пришаге интегрирования равном 0,00001, так как именно тогда ошибка аппроксимацииминимальна и число итераций равно 1.
Видно, что чем меньшеошибка аппроксимации, тем меньше итераций требуется для решения.
При шаге 0,00001 награфики были в виде прямых, что можно списать на округление значений привычислении.
Исходя из графиков, такжеможно сказать, что решения совпадают, однако, при заданном максимумеитерационного шага количество итераций в этом методе значительно превышаетколичество итераций при том же шаге в методе с постоянным шагом, практически невлияя при этом на ошибку аппроксимации.
Проанализироваврезультаты решения жесткой системы, можно сказать, что плохая обусловленностьматрицы делает практически непоказательным графическое решение, так как по немуочень сложно судить о поведении обеих переменных, в силу того что на фоне однойиз них (х2) не заметна другая.
То есть:
· величина шагавлияет на число итераций
· точность решениязависит от величины шага
· решение систем спеременным или постоянным шагом, равным максимальному шагу способа с переменнымшагом, одинаково
· жесткость системызатрудняет анализ результата решения
ЗАКЛЮЧЕНИЕ
В данной работе былисследован явный метод Эйлера для решения обычных и жестких систем ОДУ. Былопроанализировано влияние величины шага интегрирования на ошибку аппроксимации,и ее влиянии на число итераций. Для этого была написана программа (Приложение1), реализующая метод, и протестирована при различных исходных данных.
СПИСОК ИСПОЛЬЗОВАННЫХИСТОЧНИКОВ
1 Ортега Дж.,Рейнболдт В. Итерационные методы решения нелинейных систем уравнений со многиминеизвестными.-М.: Мир, 1975.- 558 стр.
2 Самарский А.А.,Гулин А.В. Численные методы: Учеб. Пособие для вузов.- М.: Наука,1989.- 432стр.
3 Сарычева О.М.Численные методы в экономике / О.М. Сарычева.- Новосибирск, 1995.- 67 стр.
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1
Текст головной программы:
h=0.01; % шагинтегрирования
t0=0; % начальное времяинтегрирования
x0=[0;0];
Edop=0.01;
[t_out,y_out]=RK1(t0,x0,h,Edop);% вызов RK1
ytoch=FunT(t_out);% точное решение
% построение графикарешения методом Рунге-Кутта 1
plot(t_out,y_out);
grid;
title('Solutionfor x1 and x2 by method Runge-Kutta 1');
ylabel('x');
xlabel('t');
Текст программы длярешения ОДУ методом Эйлера с постоянным шагом:
function[t_out,y_out]=RungeKutta1(t0,x0,h,Edop);
% функция решения методомРунге-Кутта 1
t=t0;
x=x0;
t_out=t;
y_out=x0;
E=[1;1];
whileE>Edop
K1=Fun(t,x);
dx=h*K1;
x0=x;
x1=x0+(h/2)*Fun(t+h,x);
x1=x1+(h/2)*Fun(t+h,x1);
x=x+dx;
E=abs(x1-x);
t=t+h;
t_out=[t_out,t];
y_out=[y_out,x];
end
Текст программы длярешения ОДУ методом Эйлера с переменным шагом:
function[t_out,y_out]=RungeKutta1(t0,x0,h,Edop);
% функция решения методомРунге-Кутта 1
t=t0;
hmax=h;
x=x0;
xmax=max(x0)
t_out=t;
y_out=x0;
E=[1;1];
whileE>Edop
K1=Fun(t,x);
dx=h*K1;
x0=x;
x1=x0+(h/2)*Fun(t+h,x);
x1=x1+(h/2)*Fun(t+h,x1);
x=x+dx;
E=abs(x1-x);
hi=(0.001*xmax)./(abs(Fun(t,x))+(0.001*xmax)./hmax);
h=min(hi);
if h>hmax
hmax=h;
end
t=t+h;
t_out=[t_out,t];
y_out=[y_out,x];
end
ПРИЛОЖЕНИЕ 2
График функции для явного метода Эйлера для обычной системы ОДУ спостоянным шагом интегрирования 0,01:
/>
График функции для явного метода Эйлера для обычной системы ОДУ спостоянным шагом интегрирования 0,001:
/>
График функции для явного метода Эйлера для обычной системы ОДУ спеременным шагом интегрирования менее 0,01:
/>
График функции для явного метода Эйлера для жесткой системы ОДУ спостоянным шагом интегрирования 0,01:
/>
График функции для явного метода Эйлера для жесткой системы ОДУ спостоянным шагом интегрирования 0,001:
/>
График функции для явного метода Эйлера для жесткой системы ОДУ спеременным шагом интегрирования менее 0,01:
/>