- Saved searches
- Use saved searches to filter your results more quickly
- mdmxfry/DE-methods
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Решение дифференциального уравнения методом Рунге-Кутта
- Решение систем дифференциальных уравнений N-го порядка методом Эйлера
- Решение уравнений
- Решение
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Differential Equations Course Assignment
mdmxfry/DE-methods
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Variant 19 (Sukach Maxim, BS17-03)
В итоге, наше решение принимает вид:
Метод Эйлера дает возможность приближенно выразить функцию теоретически с любой наперед заданной точностью. Суть метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Метод Эйлера является методом 1-го порядка точности и называется методом ломаных.
Для вычисления используются следующие формулы:
def next_y(xi, yi): return yi + self.h * self.f(xi, yi) ys = [] xs = np.arange(x0 + h, xf + h, h) # вектор всех значений x for x in xs: ys.append(y) y = next_y(x, y) # В результате ys будет содержать все значения метода Эйлера
Метод Эйлера и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1
Метод Эйлера и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1
Метод Эйлера и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1
Усовершенствованный метод Эйлера
Суть усовершенствованного метода Эйлера в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Усовершенствованный метод Эйлера является методом 2-го порядка точности и называется модифицированным методом Эйлера.
Разница между данным методом и методом Эйлера минимальна и заключается в использовании следующих формул:
# Заменяем next_y функцию на эту: def next_y(xi, yi): h2 = h / 2 delta_y = h * f(xi + h2, yi + h2 * f(xi, yi)) return yi + delta_y
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 9, y0 = 1, h = 0.1
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 3, y0 = 1, h = 0.1
Усовершенствованный Метод Эйлера и точное решение при
x0 = 0, xf = 1, y0 = 1, h = 0.1
Классический метод Рунге-Кутты
Суть метода Рунге-Кутты в пошаговом вычислении значений решения y=y(x) дифференциального уравнения вида y’=f(x,y) с начальным условием (x0;y0). Классический метод Рунге-Кутты является методом 4-го порядка точности и называется методом Рунге-Кутты 4-го порядка точности.
# Заменяем next_y функцию на эту: def next_y(xi, yi): h2 = h / 2 k1 = f(xi, yi) k2 = f(xi + h2, yi + h2 * k1) k3 = f(xi + h2, yi + h2 * k2) k4 = f(xi + h, yi + h * k3) return yi + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 9, y0 = 1, h = 0.1
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 3, y0 = 1, h = 0.1
Классический метод Рунге-Кутты и точное решение при x0 = 0, xf = 1, y0 = 1, h = 0.1
Сравнение методов для заданной задачи
Размер ошибки всех методов на промежутке [0, 9] с шагом 0.1
Размер ошибки всех методов на промежутке [0, 3] с шагом 0.1
Размер ошибки всех методов на промежутке [0, 1] с шагом 0.1
Очевидно что, классический метод Рунге-Кутты справляется с задачей аппроксимации в случае данного уравнения намного лучше чем Метод Эйлера и Усовершенствованный метод Эйлера.
График глобальной средней ошибки
Глобальная ошибка в зависимости от размера шага H на промежутке от 0.01 до 0.91 для x0 = 1, xf = 9
- Установить Python3
- Все пакеты необходимые для работы находятся в requirements.txt matplotlib
numpy - Запустить run.py в корневой директории проекта.
Все настройки находятся в run.py в виде констант (строки 12-16). configparser очень не хотелось подключать. После запуска скрипт покажет 6 графиков (в диком разрешении, там ничего не видно толком) и сохранит их нормальные версии (dpi=300) в папке results.
Latex Редактор: https://www.codecogs.com/latex/eqneditor.php
Метод Эйлера: Wikipedia
Усовершенствованный метод Эйлера: Mathprofi (кык)
Метод Рунге — Кутты: Wikipedia
About
Differential Equations Course Assignment
Решение дифференциального уравнения методом Рунге-Кутта
Всем привет)) хочу создать программу в PHP которая решает диф уравнения с помощью метода Рунге-Кутта но не могу понять как сделать также как и в матлабе, а именно, запись функции что бы можно было к ней обратится и немного изменить, а в php такого нет или я просто не смог найти, я думал как то циклами заменить функцию и просто писать как выражение но тогда я не смогу с формы передавать функцию. в общем мне нужно сделать так что бы я мог в переменную записать функцию а потом к ней обращаться вот пример в MATLAB. Может кто-то писал такое в PHP и поможет заранее спасибо.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
f = @(X, Y) ( X+Y); Y1_r_k = 0; X1_r_k = 0; Y2_r_k = 0; X2_r_k = 0; for i = 1:1:10 h = h1; x = X1_r_k(i); y = Y1_r_k(i); k1 = h * f(x, y); k2 = h * f(x + h/2, y + k1/2); k3 = h * f(x + h/2, y + k2/2); k4 = h * f(x + h, y + k3); dy = (k1 + 2*k2 + 2*k3 + k4)/6; X1_r_k(i+1) = x + h; Y1_r_k(i+1) = y + dy; end for i = 1:1:20 h = h2; x = X2_r_k(i); y = Y2_r_k(i); k1 = h * f(x, y); k2 = h * f(x + h/2, y + k1/2); k3 = h * f(x + h/2, y + k2/2); k4 = h * f(x + h, y + k3); dy = (k1 + 2*k2 + 2*k3 + k4)/6; X2_r_k(i+1) = x + h; Y2_r_k(i+1) = y + dy; end
Решение систем дифференциальных уравнений N-го порядка методом Эйлера
Решение дифференциальных уравнений 1 порядка методом Эйлера
Вот я написал программу, которая решает дифференциальные уравнения 1 порядка методом Эйлера (в.
Решение дифференциальных уравнений четвертого порядка методом Эйлера и методом Рунге-Кутта
Форумчане прошу помочь решить уравнение f :=y+y’*x+y»+y»’*x методами Рунге-Кутта и Эйлера. Если.
Решение системы дифференциальных уравнений методом Эйлера и Рунге-Кутты 4 порядка
Здравствуйте уважаемые форумчани. Есть следующая задача: решить методом Эйлера и Рунге-Кутты 4.
Решение систем дифференциальных уравнений методами Эйлера
Здравствуйте, дорогие программисты и просто любители языка С++! В принципе, моя будущая.
Сообщение от Сергей Ьыченко
Решение дифференциальных уравнений методом Эйлера
Не могу найти ошибку, программа не компилируется. #include <iostream> #include <cmath> #include.
Решение дифференциальных уравнений методом ЭЙлера
сделано только с 1 по 3 задания function F=oscil(t,y) F=; y0=; =ode113(@oscil,,y0);.
Решение дифференциальных уравнений методом Эйлера-Коши
Исправьте ошибку в программе, пожалуйста. y’+2y=2e^(-x)*cos(x) y(0)=1; ; h=0.025 var i,n:integer;.
Решение обыкновенных дифференциальных уравнений методом Эйлера
помогите пожалуйста не могу понять в чем проблема. у меня не работает Odesolve. задача коши.
Решение дифференциальных уравнений методом Эйлера (с центрированием)
В общем досталась такая программа на лабораторной, на самостоятельное изучение, но инфы мало.
Численное решение дифференциальных уравнений методом Эйлера
Помогите найти ошибку в программе, по логике все верно, но почему то не работает. Задача относится.
Решение уравнений
Решение системы уравнений методом Жордана-Гаусса
Доброе время суток! Мне задали сделать код PHP который решает систему уравнений методом.
Решение систем дифференциальных уравнений N-го порядка методом Эйлера
Добрый день. Помогите решить дифференциальное уравнение первого порядка методом Эйлера
Приблеженное решение обыкновенных дифференциальных уравнений методом эллера
Дамы и Господа, я проболел весь семестр и не успел освоить нормально язык пхп, а мне на следующей.
Решение системы нелинейных уравнений (для двух уравнений)
Нужна написать программный модуль для решения систем неленейных уравнений методом ньютона и методом.
Ну или бесконечное количество решений)
Сообщение было отмечено Lex_96 как решение
Решение
x и y это наверно неизвестные. а v и w это константы. Возможно. Тогда это уравнение надо решать относительно x и y.
Lex_96, а почему Вы этот вопрос задали в разделе программирования? Это алгебра.
Можно конечно как то через цикл найти решения. И то если известно диапазоны в которых лежат значения x и y.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
$v = 1; $w = 1; $approximation = 0.1; for( $node = 0; $node 1000; $node ++ ) { $x = mt_rand(-10, 10)*0.1; $y = mt_rand(-10, 10)*0.1; if( abs($v - log($y + 0.95, M_E) - sin(pow($x, 4))) $approximation && abs($v - (pow($y + 2*$w, 3))/log($y + 0.75, M_E)) $approximation ) { echo 'Найдено решение .$x.';'.$y.'>
'; } } ?>
Может кто-то поправит. Вот что выдает
Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение Найдено решение .