Как построить график дифференциального уравнения методом эйлера

Дифференциальное уравнение Эйлера и методы его решения

Более общее уравнение Эйлера имеет вид:
.
Это уравнение подстановкой t = ax+b приводится к более простому виду, которое мы и будем рассматривать.

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

Рассмотрим уравнение Эйлера:
(1) .
Оно сводится к линейному уравнению с постоянными коэффициентами подстановкой:
x = e t .
Действительно, тогда
;
;
;

;
;
.

Таким образом, множители, содержащие x m , сокращаются. Остаются члены с постоянными коэффициентами. Однако на практике, для решения уравнений Эйлера, можно применять методы решения линейных ДУ с постоянными коэффициентами без использования указанной выше подстановки.

Решение однородного уравнения Эйлера

Рассмотрим однородное уравнение Эйлера:
(2) .
Ищем решение уравнения (2) в виде
.
;
;
.
.
Подставляем в (2) и сокращаем на x k . Получаем характеристическое уравнение:
.
Решаем его и получаем n корней, которые могут быть комплексными.

Рассмотрим действительные корни. Пусть ki – кратный корень кратности m . Этим m корням соответствуют m линейно независимых решений:
.

Рассмотрим комплексные корни. Они появляются парами вместе с комплексно сопряженными. Пусть ki – кратный корень кратности m . Выразим комплексный корень ki через действительную и мнимую части:
.
Этим m корням и m комплексно сопряженным корням соответствуют 2 m линейно независимых решений:
;
;
.
.

После того как получены n линейно независимых решений, получаем общее решение уравнения (2):
(3) .

Примеры

Решение неоднородного уравнения Эйлера

Рассмотрим неоднородное уравнение Эйлера:
.
Метод вариации постоянных (метод Лагранжа) также применим и к уравнениям Эйлера.

Сначала мы решаем однородное уравнение (2) и получаем его общее решение (3). Затем считаем постоянные функциями от переменной x . Дифференцируем (3) n – 1 раз. Получаем выражения для n – 1 производных y по x . При каждом дифференцировании члены, содержащие производные приравниваем к нулю. Так получаем n – 1 уравнений, связывающих производные . Далее находим n -ю производную y . Подставляем полученные производные в (1) и получаем n -е уравнение, связывающее производные . Из этих уравнений определяем . После чего интегрируя, получаем общее решение уравнения (1).

Пример

Неоднородное уравнение Эйлера со специальной неоднородной частью

Рассмотрим уравнение Эйлера со специальной неоднородной частью:
(4)
,
где – многочлены от степеней и , соответственно.

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

Автор: Олег Одинцов . Опубликовано: 14-08-2013 Изменено: 24-10-2020

Курсовая работа: Решение дифференциальных уравнений по методу Эйлера

Министерство образования Республики Беларусь

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Кафедра вычислительной математики и программирования

к курсовому проекту

« Решение дифференциальных уравнений по методу Эйлера »

2. Математическое объяснение метода

2.1 Метод Эйлера

2.2 Исправленный метод Эйлера

2.3 Модифицированный метод Эйлера

3. Блок-схема алгоритма программы

4. Описание программы

Список использованной литературы

Приложение 1 (Текст программы)

Приложение 2 (Результаты работы программы)

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

Решение обыкновенных дифференциальных уравнений (нелинейных) первого порядка с начальными данными (задача Коши) – классическая область применения численных методов. Имеется много разностных методов, часть из которых возникла в домашинную эпоху и оказалось пригодным для современных ЭВМ.

В этой программе использовался метод Эйлера, один из самых старых и широко известных методов численного интегрирования дифференциальных уравнений. Этот метод имеет довольно большую ошибку; кроме того, он очень часто оказывается неустойчивым – малая начальная ошибка быстро увеличивается с ростом Х. Поэтому чаще используют более точные методы, такие как: исправленный метод Эйлера и модифицированный метод Эйлера. Нужно, однако, заметить, что метод Эйлера является методом Рунге – Кутта первого порядка.

2. Математическое объяснение метода

2.1 Метод Эйлера

Решить дифференциальное уравнение у / =f(x,y) численным методом — это значит для заданной последовательности аргументов х0 , х1 …, хn и числа у0 , не определяя функцию у=F(x), найти такие значения у1 , у2 ,…, уn , что уi =F(xi )(i=1,2,…, n) и F(x0 )=y0 .

Таким образом, численные методы позволяют вместо нахождения функции

У=F(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина h=xk -xk-1 называется шагом интегрирования.

Метод Эйлера относиться к численным методам, дающим решение в виде таблицы приближенных значений искомой функции у(х). Он является сравнительно грубым и применяется в основном для ориентировочных расчетов. Однако идеи, положенные в основу метода Эйлера, являются исходными для ряда других методов.

Рассмотрим дифференциальное уравнение первого порядка

с начальным условием

Требуется найти решение уравнения (1) на отрезке [а,b].

Разобьем отрезок [a, b] на n равных частей и получим последовательность х0 , х1 , х2 ,…, хn , где xi =x0 +ih (i=0,1,…, n), а h=(b-a)/n-шаг интегрирования.

В методе Эйлера приближенные значения у(хi )»yi вычисляются последовательно по формулам уi +hf(xi , yi ) (i=0,1,2…).

При этом искомая интегральная кривая у=у(х), проходящая через точку М00 , у0 ), заменяется ломаной М0 М1 М2 … с вершинами Мi (xi , yi ) (i=0,1,2,…); каждое звено Мi Mi+1 этой ломаной, называемой ломаной Эйлера, имеет направление, совпадающее с направлением той интегральной кривой уравнения (1), которая проходит через точку Мi , смотри рисунок 1.

Если правая часть уравнения (1) в некотором прямоугольнике R<|x-x0 |£a, |y-y0 |£b>удовлетворяет условиям:

|df/dx|=|df/dx+f(df/dy)| £ M (M=const),

то имеет место следующая оценка погрешности:

где у(хn )-значение точного решения уравнения(1) при х=хn , а уn — приближенное значение, полученное на n-ом шаге.

Формула (3) имеет в основном теоретическое применение. На практике иногда оказывается более удобным двойной просчет : сначала расчет ведется с шагом h, затем шаг дробят и повторный расчет ведется с шагомh/2. Погрешность более точного значения уn * оценивается формулой

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

2.2 Исправленный метод Эйлера

В исправленном методе Эйлера мы находим средний тангенс наклона касательнй для двух точек: xm , ym и xm +h, ym +hy’m . Последняя точка есть та самая, которая в простом методе обозначалась xm+1 , ym+1 . Геометрический процесс нахождения точки xm+1 , ym+1 можно проследить по рисунку 2. С помощью метода Эйлера находится точка xm +h, ym +hy’m, лежащая на прямой L1. В этой точке снова вычисляется тангенс угла наклона касательной, на рисунке этому значению соответствует прямая L2 . Усреднение двух тангенсов дает прямую L’3 . Наконец, через точку xm , ym мы проводим прямую L3 параллельную L’3 . Точка, в которой прямая L3 пересечется с ординатой, восстановленной из x= xm+1 =xm +h, и будет искомой точкой y= ym+1 = ym +hy’m . Тангенс угла наклона L3 равен:

Уравнение линии L3 при этом записывается в виде:

Соотношения 5, 6, 7 и 8 описывают исправленный метод Эйлера. (рис. 2)

2.3 Модифицированный метод Эйлера

Этот метод более точен. Рассмотрим дифференциальное уравнение (1) с начальным условием y(x0 )=y0 . Разобьем наш участок интегрирования на n равных частей. На малом участке [x0 ,x0 +h] интегральную кривую заменимпрямой линией. Получаем точкуМккк ). (рис. 3)

Название: Решение дифференциальных уравнений по методу Эйлера
Раздел: Рефераты по математике
Тип: курсовая работа Добавлен 20:43:28 26 декабря 2010 Похожие работы
Просмотров: 1331 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать

Nk / y=y(x)

Мк Мк /

Yk+1

Yk

хк хк1/2 xk+h =xk1 X

Получаем точку Nk / . В этой точке строим следующую касательную:

Из точки Мк проводим прямую с угловым коэффициентом αк и определяем точку пересечения этой прямой с прямой xк1 . Получаем точку Мк / . В качестве ук+1 принимаем ординату точки Мк / . Тогда:

Эти формулы называются рекуррентными формулами метода Эйлера.

Сначала вычисляют вспомогательные значения искомой функции yк+1/2 в точках xк+1/2 , затем находят значение правой части уравнения (1) в средней точке

3. Блок-схема алгоритма

где A — начальное значение x, B — конечное значение x, F(x) — значение функции в точке xn , N — количество промежутков, st – выбор операции, C1,C2,C3 – константы для формул, nom — сохраняет номер используемой функции.

На рисунке представлена блок-схема процесса решения дифференциального уравнения методом Эйлера

Подсчитывая каждый раз новое значение уравнения F(x), получаем последовательность значений xn yn , n=1,2,…

По этим значениям строим график.

4. Описание программы

Программа весьма проста. В ней много предусмотрено моментов неправильного ввода данных, о которых программа предупреждает пользователя и сразу же просит повторно ввести данные.

С самого начала программа предоставляет пользователю меню выполняемых функций, которые выделяются при помощи стрелок ↑ и ↓ выбор клавишей Enter:

После запуска программы нужно выбрать Formyla -> Enter, эта опция позволит из предложенного списка формул выбрать одну, по которой компьютер будет производить расчет и строить график. Все предложенные формулы имеют номерацию; чтобы выбрать интересующий вас пример нажмите на цифру равную номеру примера, и сразу же появится новое окно, в котором сверху будет записан ваш пример. Также в окне будет этот же пример но с нулями на месте констант. Под примером будет высвечена большая буква С, это используется для ввода констант. Для этого вам нужно нажать номер константы, он появится, и после знака равно запишите чему она равна (вводятся целые и вещественные значения). По окончании набора нажать Enter. Операцию повторять пока не будут введены все числа. По окончании нажать Esc. После появится строчка «уточните границы изменения Х, от A= до B= » здесь нужно занести данные на каком промежутке абсциссы будет рассматриваться функция. Следующая строчка попросит ввести начальные данные y(A)=. Следующей строчкой будет вопрос: «сохранить данные в файле? Да/Нет» ответить на этот вопрос с помощью клавиш Д и Н (рус), после чего программа вернется в первоначальное меню. Если данные были сохранены (в папке с программой появляется файл form.txt), то в следующий раз чтобы не набирать снова выберите в меню опцию Formyla -> Open in fails и на экране появятся введенные данные с пометкой снизу, сообщая что данные были прочитаны из файла.

Следующая опция Reshenie. После нажатия в окне просят ввести N(целое число) – число промежутков, на которые разделится рассматриваемый участок (ось ОХ). После появится таблица рассчитанных данных (номер точки, значение абсциссы, значение ординаты). При нажатии любой клавиши произойдет переход в меню.

Graphic эта опция позволяет визуально видеть решение, а так же на этом графике прописываются все данные: начальная формула, шаг и промежуток построения графика, масштаб, данные об его изменении(клавишами +(увеличить) и -(уменьшить), а также возможность определить точное значение функции в любой точке.

Опция Exit применяется для выхода из программы.

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

Данная программа решает заданную пользователем дифференциальное уравнение за минимальный промежуток времени. При этом пользователю предоставляется возможность визуально оценить решение, рассматривая график полученного решения.

К достоинствам программы можно отнести также удобный пользовательский интерфейс, возможность ввода пользовательских дифференциальных уравнений, а также давольно высокая стабильность работы. Однако имеются и некоторые недостатки. К недостаткам программы можно отнести: критичность к вводимым пользователем урававней, отсутствие обработки исключительных событий. Это, естественно, ограничивает возможности программы.

Список использованной литературы

1. Д. Мак-Кракен, У. Дорн. Численные методы и программирование на фортране. –М.: Мир,1977.-389,396-408 с.

2. А.А. Самарский. Введение в численные методы. – М.:Наука,1987.-176 с.

3. Алгоритмы вычислительной математики: Лабораторный практикум по курсу «Программирование» для студентов 1 — 2-го курсов всех специальностей БГУИР/А.К. Синицын, А.А. Навроцкий.- Мн.: БГУИР, 2002.- 65-69 с.

4. ГОСТ 2.105-95. Общие требования к текстовым документам.

5. ГОСТ 7.32-91. Система стандартов по информации, библиотечному и издательскому делу. Отчет о НИР. Структура и правила оформления.

Приложение 1. Текст программы.

void formyl(int p)

if(p==1) printf(«\n 1. C1*y’ = C2*y + C3*x + C4*x*y»);

else if(p==2) printf(«\n 2. y’/(C1-100) = C2*y + C3*x + (C4+x)*y»);

else if(p==3) printf(«\n 3. pow(e,C1)*y’ = C2*y + C3*cos(x) + (C4+x+y)»);

else if(p==4) printf(«\n 4. C1*sin(x)*y’ = e*C2*y + C3*arcsin(x) + C4*y/x»);

else if(p==5) printf(«\n 5. C1*y’ = sin(C2)*y + tg(C3*x) + C4*ln(x)*y»);

else if(p==6) printf(«\n 6. C1*y’ = y*C2 + C3*sin(x) + C4*cos(x)*y»);

else if(p==7) printf(«\n 7. (C1+C2+C3+C4)*y’ = C2*y + (C3-x) + lg(C4*x)*y»);

else if(p==8) printf(«\n 8. y’/C1 = y/C2 + C3*sin(x) + C4*x*y»);

else if(p==9) printf(«\n 9. sin(C1)*y’ = C2*y + |C3|*x + x*y/C4»);

void formyl2(int p,double C1,double C2,double C3,double C4)

else if(p==2) printf(«y’/(%.2f-100)=%.2f*y+%.2f*x+(%.2f+x)*y»,C1,C2,C3,C4);else if(p==3) printf(«pow(e,%.2f)*y’=%.2f*y+%.2f*cos(x)+(%.2f+x+y)»,C1,C2,C3,C4);

else if(p==4) printf(«%.2f*sin(x)*y’=e*%.2f*y+%.2f*arcsin(x)+%.2f*y/x»,C1,C2,C3,C4);

else if(p==5) printf(«%.2f*y’=sin(%.2f)*y+tg(%.2f*x)+%.2f*ln(x)*y»,C1,C2,C3,C4);

else if(p==6) printf(«%.2f*y’=y*%.2f+%.2f*sin(x)+%.2f*cos(x)*y»,C1,C2,C3,C4);

else if(p==8) printf(«y’/%.2f=y/%.2f+%.2f*sin(x)+%.2f*x*y»,C1,C2,C3,C4);

else if(p==9) printf(«sin(%.2f)*y’=%.2f*y+|%.2f|*x+x*y/%.2f»,C1,C2,C3,C4);

double formyl3(int p,double h,double x,double y,double C1,double C2,double C3,double C4)

else if(p==2) Y=h*(C1-100)*(y*C2+C3*x+(C4+x)*y)+y;

else if(p==3) Y=h*(C2*y+C3*cos(x)+C4+x+y)/exp(C1)+y;

else if(p==4) Y=h*(exp(1)*C2*y+C3*asin(x)+C4*y/x)/(C1*sin(x))+y;

else if(p==5) Y=h*(sin(C2)*y+tan(C3*x)+C4*log10(x)*y)/C1+y;

else if(p==6) Y=h*(y*C2+C3*sin(x)+C4*cos(x)*y)/C1+y;

else if(p==7) Y=h*(C2*y+(C3-x)+log10(C4*x)*y)/(C1+C2+C3+C4)+y;

else if(p==8) Y=h*(y/C2+C3*sin(x)+C4*x*y)*C1+y;

else if(p==9) Y=h*(C2*y+abs(C3)*x+x*y/C4)/sin(C1)+y;

int vv=0,vv1=0; // руководит операциями

int N=0,W; // кол промежутков

int i,j,k; // используются во всех «for»

int nom; // номер примера

int st=4,vst=0; // строчка в меню

double C1,C2,C3,C4; // константы

double M; // масштаб

double xtoch,ytoch; // считает y(x) по графику

double A=0,B=0,ii,jj,kk; // пределы интегрирования

double x[102],y[102]; // главные переменные x,y

int g_driver=9,g_mode=2, g_error;

printf(«\n error=%d, reason=%s\n», g_error, grapherrormsg(g_error));

IT Novella

y ‘ = f ( x , y ) , ( 1 )

f ( x , y ) — заданная непрерывная функция в области D. Задача нахождения решения этого уравнения, удовлетворяющего начальному условию

называется задачей Коши.

Метод Эйлера

Пусть требуется найти решение задачи Коши (1)-(2) на отрезке [a,b].

Разобьем отрезок [a,b] на n равных частей точками

i = 0 , 1 , … , n , h = b − a n .

Заменяя в уравнении (1) производную разностным отношением, получим y 1 − y 0 h = f ( x 0 , y 0 ) . Перепишем последнее уравнение в виде

y 1 = y 0 + h · f ( x 0 , y 0 ) Повторяя этот процесс, получим приближенное решение задачи (1)-(2).

Таким образом, итерационная формула метода Эйлера имеет вид

x i + 1 = a + i · h , y i + 1 = y i + h · f ( x i , y i ) , i = 0 , 1 , … , n

Пример. Решить методом Эйлера дифференциальное уравнение

y ‘ = 3 s i n 2 y + x

с начальным условием y(0)=2 на отрезке [0,1] с шагом h=0,1.


источники:

http://www.bestreferat.ru/referat-238024.html

http://itnovella.com/post/2020/1/13/euler-cpp-62/