Метод секущих в excel
Нелинейные, трансцендентные уравнения функции одной переменной – это уравнения вида f (x) = 0, в которых нельзя найти алгебраическими методами корни. Функция f (x) – это, как правило, достаточно сложная и громоздкая функция, содержащая в своем составе.
. тригонометрические, логарифмические, степенные и иные нелинейные функции с различной глубиной вложенности. Например: f (x) = sin (3,14^x) + cos (x) = 0. Уравнения такого вида решаются численными методами.
В этой статье я постараюсь доступно и кратко рассказать и показать на примерах, как и когда такие задачи возникают и как их сегодня быстро и просто можно решать в Excel.
Чуть-чуть истории и теории.
Вы задумывались когда-нибудь — откуда и зачем в головах людей, живших в XVI…XVII веках, родились понятия дифференциалов, производных, интегралов? Объяснение, в общем-то, достаточно простое и понятное – эти ученые искали аналитические пути решения прикладных практических задач. И успешно находили.
Мне сегодня видится приблизительно такая «лестница» с качественными «ступенями инструментов» математики для решения практических и научных задач, которую изобрело человечество:
1. Арифметика — сложение, вычитание, умножение, деление.
2. Алгебра – применение элементарных функций (степенной, логарифмической, тригонометрической, …) и алгебраических уравнений функции одной переменной.
3. Гауссовские системы линейных уравнений.
4. Численные методы решения трансцендентных уравнений.
5. Численные методы решения систем трансцендентных уравнений функций нескольких переменных.
6. Дифференцирование и интегрирование функций одной переменной.
7. Дифференцирование и интегрирование функций нескольких переменных.
8. Системы дифференциальных и интегральных уравнений.
9. Масса разнообразных новых и старых специальных методик и подходов мне не известных и известных, но, безусловно, существующих и работающих.
Предлагаю остановиться и разобраться с достаточно высокой четвертой ступенью «лестницы».
Для численного решения нелинейных уравнений успешно применяются: метод половинного деления, метод простых итераций, метод хорд, метод касательных Ньютона, комбинированный метод секущих-хорд на основе итерационной формулы Ньютона. Для чего ученые-математики придумали множество различных методов решения трансцендентных уравнений? Они старались упростить и ускорить процесс расчетов. Надо помнить и понимать, что у них компьютеров не было, и расчеты выполнялись вручную.
Каждый из методов имеет свои достоинства и недостатки — они подробно описаны в литературе, и углубляться в них мы не будем. Скажу только, что из вышеперечисленных методов мне на практике довелось использовать все. При решении различных (в основном геометрических и теплотехнических) задач по разным причинам было удобно использовать то один, то другой подход. Метод Ньютона хорош своей быстрой сходимостью и простотой формулы. Комбинированный метод секущих-хорд на основе итерационной формулы Ньютона не требует нахождения производных, быстро «сходится», и главное – не требует анализа функции на сходимость. Метод половинного деления медленно сходится, но не требует никакого предварительного анализа функции.
Трансцендентные уравнения. Два метода решения в Excel.
Если у вас на компьютере нет программы MS Excel, то расчеты можно выполнить в программе OOo Calc из бесплатного пакета Open Office.
Задач, которые требуют для получения ответа составления и решения трансцендентных уравнений, вокруг нас очень много. Это — задачи и физики, и теплотехники, и астрономии, и элементарной геометрии в обычной жизни… Инженерам-конструкторам и программистам в повседневной работе необходимо уметь составлять и быстро решать численными методами нелинейные уравнения. На мой взгляд — это один из критериев профессионализма. Более того, уравнения, которые решаются аналитически, сегодня иногда гораздо проще и быстрее при наличии вычислительной техники решить численными методами, поэтому нужно уметь это делать.
Вычисление угла зацепления зубчатой передачи методом Ньютона (методом касательных)
Рассмотрим пример из статьи «Расчет геометрии зубчатой передачи». Необходимо найти угол зацепления зубчатой передачи atw . Я обещал в той статье рассказать, как это делается. Выполняю обещание.
Если расстояние между центрами колеса и шестерни не задано, то угол зацепления можно вычислить путем решения трансцендентного уравнения:
inv ( atw )=tg ( atw ) — atw =2* xs *tg ( a )/( z2 + T * z1 )+ tg ( at ) — at
Подставив данные из примера, рассмотренного в вышеупомянутой статье, получим после преобразований следующее уравнение:
inv ( atw )=0,020910
f ( atw )=tg ( atw )— atw -0,020910=0
Используем метод Ньютона, потому что взять производную представленной выше функции элементарно просто, а итерационная формула очень проста и компактна:
f’( atw )=1/(cos ( atw ))^2—1
atw (i+1) = atw i — f ( atw ) i/ f’( atw ) i
Открываем файл Excel и начинаем работу.
Исходные данные будем традиционно писать в ячейки со светло-бирюзовой заливкой. Результаты расчетов будем считывать в ячейках со светло-желтой заливкой.
1. Инволюту угла зацепления inv( atw ) заносим
в ячейку D3: 0,020910
2. Значение угла зацепления в нулевом приближении atw 0 в радианах записываем
3. Итерационную формулу atw (i+1)= atw i— f( atw )i/ f’( atw )i заносим
в D5: =D4- (TAN (D4) -D4-$D$3)/(1/(COS (D4))^2-1) =0,591706
atw 1= atw 0- (tg ( atw 0) — atw 0- inv ( atw ))/(1/(cos ( atw 0))^2-1)
и копируем в ячейки D6… D14
4. Видим, что уже после шестой итерации угол зацепления atw в радианах вычислен с нулевой абсолютной и относительной ошибкой:
atw =D13- (TAN (D13) -D13-$D$3)/(1/(COS (D13))^2-1) =0,389140
Решение найдено, расчет в Excel завершен!
Решение задачи ландшафтного дизайна с помощью сервиса «Подбор параметра» в Excel
Задача:
Вдоль отмостки стены дома длиной 14 метров необходимо разбить цветник в виде сегмента круга площадью ровно 16 квадратных метров. На сколько метров цветник будет отстоять от края отмостки по центру стены? Каким радиусом необходимо выполнить границу цветника?
1. Длину отмостки стены дома — хорды сегмента круга x в метрах записываем
в ячейку D17: 14,000
2. Площадь цветника – сегмента круга S в квадратных метрах вписываем
в D18: 16,000
3. Предположительное произвольное (не нулевое) значение центрального угла сегмента a в радианах пишем
в D19: 1,000
Трансцендентное уравнение a / sin( a /2 ) -2*cos ( a /2) — (8* S / x ^2) *sin( a /2)=0 вводим
в объединенную ячейку E19F19: =D19/SIN (D19/2) -2*COS (D19/2) — (8*D18/D17^2)*SIN (D19/2)
Включаем сервис «Подбор параметра» в Excel: «Сервис» – «Подбор параметра». Пишем в появившемся окне все как на рисунке слева и нажимаем кнопку OK.
В появившемся новом окне видим, что решение найдено, снова нажимаем на кнопку OK.
Считываем искомое значение центрального угла сегмента a в радианах
в D19: 0,950057
При этом видим, что значение трансцендентного уравнения равно нулю; считываем
в объединенной ячейке E19F19: =D19/SIN (D19/2) -2*COS (D19/2) — (8*D18/D17^2)*SIN (D19/2) =0
4. Радиус наружной границы цветника – радиус сегмента круга r в метрах рассчитывается
в D20: =D17/2/SIN (D19/2) =15,305
r = x /2/sin( a /2)
5. Максимальная ширина цветника – высота сегмента круга h в метрах рассчитывается
в ячейке D21: =D20*(1-COS (D19/2)) =1.695
h = r *(1- cos( a /2))
Ответы получены, вторая задача успешно решена!
Я не приводил вывода использованных формул потому, что это не по теме поста, и, думаю, с геометрией и тригонометрией вы легко разберетесь. Будут вопросы – обращайтесь.
Чтобы получать информацию о выходе новых статей вам нужно подписаться на анонсы в окне, расположенном вверху страницы. Введите адрес своей электронной почты и нажмите на кнопку «Получать анонсы статей». С этого момента к вам на почтовый ящик будет приходить небольшое уведомление о появлении на моем блоге новой статьи.
Краткие выводы
1. Итерационными численными методами удобно и быстро можно решать трансцендентные уравнения и громоздкие нелинейные алгебраические.
2. При написании расчетных модулей программ в Excel, если нежелательны лишние остановки по ходу вычислений, можно использовать вставки блоков с классическими методами решения нелинейных уравнений или макросов с вызовом инструмента «Подбор параметра».
3. Использование инструмента «Подбор параметра» в Excel является сегодня, безусловно, наиболее оптимальным и эффективным методом решения нелинейных, трансцендентных уравнений функций одной переменной, а также проведения анализа типа «Что будет? Если…».
Умение применять в работе сервис «Подбор параметра» существенно повышает ваш уровень, как специалиста вообще, так и как пользователя Excel – в частности.
Рассмотрим рис.1а. Проведем через точки А и В хорду. Уравнение хорды
.
В точке x=x1, y=0, в результате получим первое приближение корня
. (3.8)
Проверяем условия
(а) f(x1)f(b)<0,
(б) f(x1)f(a)<0.
Если выполняется условие (а), то в формуле (3.8) точку a заменяем на x1, получим
Продолжая этот процесс, получим для n-го приближения
. (3.9)
Здесь подвижен конец a, то есть f(xi)f(b)<0. Аналогичная ситуация на рис 2а.
Рассмотрим случай, когда неподвижен конец a .
f’’(x)<0 f’’(x)>0
f(b)f’’(b)<0 f(a)f’’(a)<0
На рис 1б,2б выполняется f(xi)f(a)<0. Записав уравнение хорды, мы на первом шаге итерационного процесса получим x1 (см. (3.8)). Здесь выполняется f(x1)f(a)<0. Затем вводим b1=x1 (в формуле (3.8) точку b заменяем на x1), получим
.
Продолжая процесс, придем к формуле
. (3.10)
Останов процесса
Рис. 3
На рис.3 f’’(x) меняет знак, поэтому подвижными будут оба конца.
Прежде чем перейти к вопросу о сходимости итерационного процесса метода хорд введем понятие выпуклой функции.
Теорема 3. Если функция f(x) выпукла (вогнута) на отрезке [a,b], то на любом отрезке [x1,x2]⊂[a,b] график функции f(x) лежит не выше (не ниже) хорды, проходящей через точки графика с абсциссами x1 и x2.
Доказательство:
Для вогнутой функции доказательство аналогично.
Доказательство сходимости итерационного процесса рассмотрим для случая выпуклой (вогнутой) функции.
Алгоритм метода хорд
Для начала нам необходимо проверить границы интервала. Для этого разбиваем интервал на 10 частей и в цикле проверяем условие наличия корня:
Реализация алгоритма метода хорд на Pascal
Примеры решения
Пример 2 . В задачах определить количество действительных корней уравнения f(x) = 0, отделить эти корни и, применяя метод хорд и касательных, найти их приближенные значения с точностью до 0.001.
Если итерации xn и xn+1 расположены достаточно близко друг к другу, то производную f’(xn) в алгоритме Ньютона можно заменить ее приближенным значением
.
Таким образом, из формулы метода Ньютона получим формулу секущих
Геометрический смысл такого изменения алгоритма Ньютона состоит в том, что от аппроксимации f(x) касательной мы переходим к секущей (см. рис.).
Достоинства и недостатки метода секущих
Метод секущих уступает методу Ньютона в скорости сходимости, однако не требует вычисления производной функции f(x).
Алгоритм метода секущих
При нахождении нулей функции f , для которой вычисление f'(x) затруднено, часто лучшим выбором, чем метод Ньютона, является метод секущих. В этом алгоритме начинают с двумя исходными числами x1 и х2. На каждом шаге xk+1 получают из xk и xk-1 как единственный нуль линейной функции, принимающей значения f(xk) в xk и f(xk-1) в xk-1. Эта линейная функция представляет секущую к кривой у = f(х), проходящую через ее точки с абсциссами xk и xk-1 - отсюда название метод секущих.
Реализация метода секущих на языке программирования Pascal.
Пример решения
Найти нули функции, используя метод секущих.
x 3 -2x-5=0, x Î [1.9, 2.94].
Найдем корни уравнения:
x 3 -2•x-5 = 0
Находим вторую производную:
d 2 F/dx 2 = 6•x
Уточним интервалы, в которых будут находиться корни уравнения. Для этого исходный интервал [1.9;2.94] разобьем на 10 подынтервалов.
h1 = 1.9 + 1*(2.94-1.9)/10 = 2.004
h2 = 1.9 + (1+1)*(2.94-1.9)/10 = 2.108
Поскольку F(2.004)*F(2.108)<0, то корень лежит в пределах [2.004;2.108].
Вычисляем значения функций в точке a = 2.004.
f(2.004) = -0.96
f ''(2.004) = 12.024
Поскольку f(a)•f ''(a) < 0, то x0 = b = 2.108
Остальные расчеты сведем в таблицу.
При прохождении темы численные методы учащиеся уже умеют работать с электронными таблицами и составлять программы на языке паскаль. Работа комбинированного характера.Расчитана на 40 минут. Цель работы повторить и закрепить навыки паботы с программами EXCEL, ABCPascal. Материал содержит 2 файла. Один содержит теоретический материал, так как он и предлагается ученику . Во 2-м файле пример работы ученика Иванова Ивана.
Вложение | Размер |
---|---|
материал для ученика | 57.5 КБ |
работа ученика | 27 КБ |
Предварительный просмотр:
Аналитическое решение некоторых уравнений, содержащих, например тригонометрические функции может быть получено лишь для единичных частных случаев. Так, например, нет способа решить аналитически даже такое простое уравнение, как cos x=x
Численные методы позволяют найти приближенное значение корня с любой заданной точностью.
Приближённое нахождение обычно состоит из двух этапов:
1) отделение корней, т.е. установление возможно точных промежутков [a,b], в которых содержится только один корень уравнения;
2) уточнение приближённых корней, т.е. доведение их до заданной степени точности.
Мы будем рассматривать решения уравнений вида f(x)=0. Функция f(x) определена и непрерывна на отрезке [а.Ь]. Значение х 0 называется корнем уравнения если f(х 0 )=0
Для отделения корней будем исходить из следующих положений:
Приближённое отделение корней можно провести и графически. Для этого уравнение (1) заменяют равносильным ему уравнением р(х) = ф(х), где функции р(х) и ф(х] более простые, чем функция f(x). Тогда, построив графики функций у = р(х) и у = ф(х), искомые корни получим, как абсциссы точек пересечения этих графиков
Для уточнения корня разделим отрезок [а, b] пополам и вычислим значение функции f(х) в точке x sr =(a+b)/2. Выбираем ту из половин [a, x sr ] или [x sr ,b], на концах которых функция f(x) имеет противоположные знаки.. Продолжаем процесс деления отрезка пополам и проводим то же рассмотрение до тех пор, пока. длина [a,b] станет меньше заданной точности . В последнем случае за приближённое значение корня можно принять любую точку отрезка [a,b] (как правило, берут его середину). Алгоритм высокоэффективен, так как на каждом витке (итерации) интервал поиска сокращается вдвое; следовательно, 10 итераций сократят его в тысячу раз. Сложности могут возникнуть с отделением корня у сложных функций.
Для приближенного определения отрезка на котором находится корень можно воспользоваться табличным процессором, построив график функции
ПРИМЕР : Определим графически корень уравнения . Пусть f1(х) = х , a и построим графики этих функций. (График). Корень находится на интервале от 1 до 2. Здесь же уточним значение корня с точностью 0,001(на доске шапка таблицы)
Алгоритм для программной реализации
- а:=левая граница b:= правая граница
- m:= (a+b)/2 середина
- определяем f(a) и f(m)
- если f(a)*f(m)
- если (a-b)/2>e повторяем , начиная с пункта2
Точки графика функции на концах интервала соединяются хордой. Точка пересечения хорды и оси Ох (х*) и используется в качестве пробной. Далее рассуждаем так же, как и в предыдущем методе: если f(x a ) и f(х*) одного знака на интервале , нижняя граница переносится в точку х*; в противном случае – переносим верхнюю границу. Далее проводим новую хорду и т.д.
Осталось только уточнить, как найти х*. По сути, задача сводится к следующей: через 2 точки с неизвестными координатами (х 1 , у 1 ) и (х 2 , у 2 ) проведена прямая; найти точку пересечения этой прямой и оси Ох.
Запишем уравнение прямой по двум точках:
В точке пересечения этой прямой и оси Ох у=0, а х=х*, то есть
, откуда
Сходимость метода гораздо выше предыдущего
Алгоритм различается только в пункте вычисления серединной точки- пересечения хорды с осью абсцисс и условия останова (разность между двумя соседними точками пересечения)
Уравнения для самостоятельного решения: (отрезок в excel ищем самостоятельно)
Метод секущих [9] может быть получен из метода Ньютона при замене производной приближенным выражением — разностной формулой:
В формуле (2.7) используются два предыдущих приближения xn и xn–1. Поэтому при заданном начальном значении x необходимо вычислить следующее приближение x1 каким-нибудь методом, например, методом Ньютона с приближенной заменой производной по формуле
Алгоритм метода секущих:
Создадим макрос — функцию метода секущих в программе Excel для примера 2.7:
Function f(ByVal x)
Function Sec(ByVal x0, eps, Kmax)
If (absErr Kmax) Then GoTo 5
Введем в произвольную ячейку формулу =Sec(0,2;0,001;100), получим значение 0,24458888, которое с заданной точностью (тремя знаками после запятой) совпадает с корнем, найденным методом Ньютона.
Решение примера 2.7 методом секущих в программе Mathcad:
Эти результаты с заданной точностью совпадают со значениями, полученными по методу Ньютона.
Программа на C++ для решения уравнения примера 2.7 методом секущих:
double f(double x);
typedef double (*PF)(double);
double sec(PF f,double x0,double eps, int Kmax);
double x0, x, eps;PF pf; int Kmax;
x = sec(pf,x0,eps, Kmax); cout > x;
double f(double x)<
double sec(PF f, double x0, double eps,int Kmax)<
double x2, x1, xerr; int k = 0;
>while (xerr > eps);
Приведем результат расчета корня уравнения из примера 2.7:
Press any key & Enter
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Метод секущих — итерационный численный метод приближённого нахождения корня уравнения.
Немного теории о методе секущих под калькулятором.
Метод секущих
Метод секущих
Метод секущих — модификация метода Ньютона, в котором производная (вычислять ее не всегда удобно) заменена на секущую.
Секущая — прямая, проходящая через две точки на графике функции. В данном методе процесс итераций состоит в том, что в качестве приближений корню уравнения принимаются последовательные значения точек пересечения секущей с осью абсцисс.
Положим, что у нас есть две точки, x0 и x1, в которых значения функции равны соответственно f(x0) и f(x1). Тогда уравнение прямой, проходящей через эти точки, будет
Для точки пересечения с осью абсцисс (у=0) получим уравнение
Это и есть наша итерационная формула. Графическое отображение метода — на рисунке ниже.
Метод работает и в случае, если начальные точки выбраны по одну и ту же сторону от корня (то есть, корня нет на отрезке между начальными приближениями), но при этом возможны случаи, когда метод не сходится.
Метод секущих является двухшаговым, то есть, новое приближение определяется двумя предыдущими итерациями. Поэтому необходимо задавать два начальных приближения корня.
Читайте также: