Метод ньютона для решения нелинейных уравнений vba
Обновлено
Поделиться
Научный форум dxdy
Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Видео:МЗЭ 2021 Лекция 11 Метод Ньютона для решения систем нелинейных уравненийСкачать
Метод Ньютона (VBA)
02/04/11 44 Киев
Доброго времени суток! Возникла проблема с решением задачи по VBA. В общем сама задача: Написать языке VВА программу приближение корня уравнения f (x) = 0 методом Ньютона. Программ должна состоять из подпрограммы (Sub), реализует собственно метод Ньютона и двух функций (Function), которые возвращают значения функций f (x) и d (x) соответственно. Подпрограмму (SUB) и функции (FUNCTION) оформить как отдельные модули, сделав их видимыми во всем проекте.
Метод Ньютона предназначен для нахождения корня уравнений вида f (x) = 0, где f (x) — дифференцированная функция и d (x) — ее производная. Метод состоит в следующем. Выбирается начальное приближение корня x0. Для облегчения нахождения приближенного значения корня x0 уравнения f (x) = 0, это уравнение часто целесообразно представить в виде g (x) = t (x). Построить графики левой и правой частей и приближенно найти абсциссу точки, в которой графики пересекаются. Затем по формуле xk +1 = xk — f (xk) / d (xk) для k = 0, 1, 2, . по предварительному (k-ом) приближению исчисляется следующее ((k + 1)-е) . Процедура выполняется до тех пор, пока | xk + 1 — xk |> , где — некоторое достаточно малое число, например, 0,0001.
функция:
У меня вышло написать только 1 модуль:
Option Explicit Function f(x) As Double f = x ^ -2 + Sin(x) + 3
End Function Function d(x) As Double
d = -2 / x ^ 3 + Cos(x)
А остальное у меня не выходит. Расскажите как дальше, если можно с кусочками кода.
caesarus
02/04/11 44 Киев
Dim x1, E, x2, l As Double
x1 = Val(InputBox( «ââåñòè ïî÷. íàáë.» ))
E = Val(InputBox( «ââåñòè òî÷í³ñü» ))
x2 = x1 — f(x1) / d(x1)
Loop Until l «x2 =» & x2
Option Explicit Function d(x) As Variant
d(x) = -2 / x ^ 3 + Cos(x)
Option Explicit Function f(x) As Variant
f(x) = x ^ (-2) + Sin(x) + 3
но после ввода данных выходит сообщение типа: Out of stack space. И выделяет строчку с нач. функцией. Скажите, в чем тут причина?
Circiter
Заслуженный участник
26/07/09 1559 Алматы
lim0n
caesarus
02/04/11 44 Киев
Страница 1 из 1
[ Сообщений: 5 ]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей
Видео:Метод Ньютона (метод касательных) Пример РешенияСкачать
Метод Ньютона в Excel
Как видно, процесс нахождения корней нелинейного уравнения методом Ньютона состоит из следующих этапов:
Получения шаблона.
Уточнение интервалов в ячейках B2 , B3 .
Замена в формуле ЕСЛИ запятую ( , ) на точку с запятой ( ; ).
Копирование строки итераций до требуемой точности (столбец E ).
Примечание: столбец A — номер итерации, столбец B — корень уравнения X , столбец C — значение функции F(X) , столбец D — значение первой производной dF(X) , столбец E — точность eps .
Видео:Решение нелинейного уравнения методом Ньютона (касательных) (программа)Скачать
Метод Ньютона VBA Excel
Нахождение корней методом Ньютона
Давайте рассмотрим простейший пример. Пусть f(x)=x*x-2. Тогда производная этой функции будет f’(x)=2x. Попробуем вообще обойтись без геометрических построений.
Очевидно, что графиком функции f(x)=x*x-2 будет парабола y=x*x, опущенная на 2 единицы вниз. Координаты вершины параболы в точке (0;-2). Парабола будет пересекать ось Х в двух точках х1=-корень(2) и корень(2), т.е. корни будут равны + -корень(2)
За начальное приближение Х0 возьмем значение=2.
Тогда начальное значение функции f(x)=f(2)=2. График производной является касательной к графику функции в заданной точке. (Не забывайте, что угол наклона касательной к графику равен тангенсу угла наклона).- Если из точки Х0=2 восстановить перпендикуляр до пересечения с графиком функции, то она пересечет график в точке (2,2). Ордината образует вертикальную сторону треугольника, а график производной будет являться гипотенузой. Третий катет – это отрезок Х0-Х1. Зная, что производная численно равна тангенсу наклону прямой, из полученного треугольника будем иметь f'(X0)=f(X0)/(X0-X1. Решая это уравнение получим координаты точки X1=X0-f(X0)//f'(X0). Производя послдовательные вычисления, соответственно заменяя Х0 на Х1, получим координаты точки Х2 и т.д. Процесс итераций закончим, если разница между новым значением Хк+1 и старым Хк станет меньше наперед заданного числа эпсилон, задающего точность вычислений.
Для нашего случая попробуем последователь вычислить все значения Х.
И уже на 4-ой итерации один из корней фактически найден. Для нахождения второго корня достаточно задать новое начальное значение = -2
Рисунок и теорию достаточно посмотреть, например, здесь http://www.bestreferat.ru/referat-258487.html или здесь
Примеры нахождения корней методом Ньютона, разобранные в примерах Обращаю ещё раз внимание на то, что необходимо определит в начале диапазон поиска корня, в чем помогает построение графика.
💡 Видео
15 Метод Ньютона (Метод касательных) Ручной счет Численные методы решения нелинейного уравненияСкачать
Методы решения систем нелинейных уравнений. Метод Ньютона. Численные методы. Лекция 14Скачать
Алгоритмы С#. Метод Ньютона для решения систем уравненийСкачать