Метод секущих в excel
При прохождении темы численные методы учащиеся уже умеют работать с электронными таблицами и составлять программы на языке паскаль. Работа комбинированного характера.Расчитана на 40 минут. Цель работы повторить и закрепить навыки паботы с программами EXCEL, ABCPascal. Материал содержит 2 файла. Один содержит теоретический материал, так как он и предлагается ученику . Во 2-м файле пример работы ученика Иванова Ивана.
Скачать:
Вложение | Размер |
---|---|
материал для ученика | 57.5 КБ |
работа ученика | 27 КБ |
Предварительный просмотр:
Аналитическое решение некоторых уравнений, содержащих, например тригонометрические функции может быть получено лишь для единичных частных случаев. Так, например, нет способа решить аналитически даже такое простое уравнение, как cos x=x
Численные методы позволяют найти приближенное значение корня с любой заданной точностью.
Приближённое нахождение обычно состоит из двух этапов:
1) отделение корней, т.е. установление возможно точных промежутков [a,b], в которых содержится только один корень уравнения;
2) уточнение приближённых корней, т.е. доведение их до заданной степени точности.
Мы будем рассматривать решения уравнений вида f(x)=0. Функция f(x) определена и непрерывна на отрезке [а.Ь]. Значение х 0 называется корнем уравнения если f(х 0 )=0
Для отделения корней будем исходить из следующих положений:
- Если f(a)* f(b] a, b существует, по крайней мере, один корень
- Если функция y = f(x) непрерывна на отрезке [a, b], и f(a)*f(b) и f ‘(x) на интервале (a, b) сохраняет знак, то внутри отрезка [а, b] существует единственный корень уравнения
Приближённое отделение корней можно провести и графически. Для этого уравнение (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, а х=х*, то есть
, откуда
процесс вычисления приближённых значений продолжается до тех пор, пока для двух последовательных приближений корня х„ и х п _1 не будет выполняться условие abs(xn-x n-1 ) е – заданная точность
Сходимость метода гораздо выше предыдущего
Алгоритм различается только в пункте вычисления серединной точки- пересечения хорды с осью абсцисс и условия останова (разность между двумя соседними точками пересечения)
Уравнения для самостоятельного решения: (отрезок в excel ищем самостоятельно)
Метод секущих [9] может быть получен из метода Ньютона при замене производной приближенным выражением — разностной формулой:
(2.7)
В формуле (2.7) используются два предыдущих приближения xn и xn–1. Поэтому при заданном начальном значении x необходимо вычислить следующее приближение x1 каким-нибудь методом, например, методом Ньютона с приближенной заменой производной по формуле
Алгоритм метода секущих:
.
Создадим макрос — функцию метода секущих в программе Excel для примера 2.7:
Function f(ByVal x)
f = Sin(5 * x) + x ^ 2 – 1
Function Sec(ByVal x0, eps, Kmax)
x1 = x0 – f(x0) * eps / (f(x0 + eps) – f(x0))
1 x2 = (f(x1) * x0 – x1 * f(x0)) / (f(x1) – f(x0))
absErr = Abs(x2 – x1)
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;
x1 = x0 – f(x0)*eps/(f(x0+ eps) – f(x0));
x2 = (f(x1)*x0 – x1*f(x0))/(f(x1) – f(x0));
xerr = fabs(x2 – x1); x0 = x1; x1 = x2;
>while (xerr > eps);
Приведем результат расчета корня уравнения из примера 2.7:
Press any key & Enter
Дата добавления: 2015-04-25 ; Просмотров: 1053 ; Нарушение авторских прав? ;
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
Метод секущих — итерационный численный метод приближённого нахождения корня уравнения.
Немного теории о методе секущих под калькулятором.
Метод секущих
Метод секущих
Метод секущих — модификация метода Ньютона, в котором производная (вычислять ее не всегда удобно) заменена на секущую.
Секущая — прямая, проходящая через две точки на графике функции. В данном методе процесс итераций состоит в том, что в качестве приближений корню уравнения принимаются последовательные значения точек пересечения секущей с осью абсцисс.
Положим, что у нас есть две точки, x0 и x1, в которых значения функции равны соответственно f(x0) и f(x1). Тогда уравнение прямой, проходящей через эти точки, будет
Для точки пересечения с осью абсцисс (у=0) получим уравнение
Это и есть наша итерационная формула. Графическое отображение метода — на рисунке ниже.
Метод работает и в случае, если начальные точки выбраны по одну и ту же сторону от корня (то есть, корня нет на отрезке между начальными приближениями), но при этом возможны случаи, когда метод не сходится.
Метод секущих является двухшаговым, то есть, новое приближение определяется двумя предыдущими итерациями. Поэтому необходимо задавать два начальных приближения корня.
В качестве критерия останова берут один из следующих:
— значение функции на данной итерации стало меньше заданого ε.
— изменение хk в результате итерации стало меньше заданого ε.