Mini-ats102.ru

ООО “Мультилайн”
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Численные методы решения систем нелинейных уравнений

Численные методы решения систем нелинейных уравнений

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

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

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

(1)

Обозначим через вектор неизвестных и определим вектор-функцию Тогда система (1) записывается в виде уравнения:

(2)

Теперь вернёмся к всеми любимому Python и отметим его первенство среди языков программирования, которые хотят изучать [1].

Этот факт является дополнительным стимулом рассмотрения числительных методов именно на Python. Однако, среди любителей Python бытует мнение, что специальные библиотечные функции, такие как scipy.optimize.root, spsolve_trianular, newton_krylov, являются самым лучшим выбором для решения задач численными методами.

С этим трудно не согласится хотя бы потому, что в том числе и разнообразие модулей подняло Python на вершину популярности. Однако, существуют случаи, когда даже при поверхностном рассмотрении использование прямых известных методов без применения специальных функций библиотеки SciPy тоже дают неплохие результаты. Иными словами, новое- это хорошо забытое старое.

Так, в публикации [2], на основании проведенных вычислительных экспериментов, доказано, что библиотечная функция newton_krylov, предназначенная для решения больших систем нелинейных уравнений, имеет в два раза меньшее быстродействие, чем алгоритм TSLS+WD
(two-step least squares), реализованный средствами библиотеки NumPy.

Целью настоящей публикации является сравнение по числу итераций, быстродействию, а главное, по результату решения модельной задачи в виде системы из ста нелинейных алгебраических уравнений при помощи библиотечной функции scipy.optimize.root и методом Ньютона, реализованного средствами библиотеки NumPy.

Возможности решателя scipy.optimize.root для численного решения систем алгебраических нелинейных уравнений

Библиотечная функция scipy.optimize.root выбрана в качестве базы сравнения, потому что имеет обширную библиотеку методов, пригодных для сравнительного анализа.

scipy.optimize.root(fun, x0, args=(), method=’hybr’, jac=None, tol=None,callback=None, ptions=None)
fun — Векторная функция для поиска корня.
x0 –Начальные условия поиска корней

method:
hybr -используется модификация Пауэлл гибридный метод;
lm – решает системы нелинейных уравнений методом наименьших квадратов.
Как следует из документации [3] методы broyden1, broyden2, anderson, linearmixing, diagbroyden, excitingmixing, krylov являются точными методами Ньютона. Остальные параметры являются «не обязательными» и с ними можно ознакомится в документации.

Методы решения систем нелинейных уравнений

Приведенный далее материал действительно можно прочитать в литературе, например в [4], но я уважаю своего читателя и для его удобства приведу вывод метода по возможности в сокращенном виде. Те, кто не любит формулы, этот раздел пропускают.

В методе Ньютона новое приближение для решения системы уравнений (2) определяется из решения системы линейных уравнений:

(3)

Определим матрицу Якоби:

(4)

Запишем(3) в виде:

(5)

Многие одношаговые методы для приближенного решения (2) по аналогии с двухслойными итерационными методами для решения систем линейных алгебраических уравнений можно записать в виде:

(6)

где — итерационные параметры, a — квадратная матрица n х n, имеющая обратную.

При использовании записи (6) метод Ньютона (5) соответствует выбору:

Система линейных уравнений (5) для нахождения нового приближения может решаться итерационно. В этом случае мы имеем двухступенчатый итерационный процесс с внешними и внутренними итерациями. Например, внешний итерационный процесс может осуществляться по методу Ньютона, а внутренние итерации — на основе итерационного метода Зейделя

При решении систем нелинейных уравнений можно использовать прямые аналоги стандартных итерационных методов, которые применяются для решения систем линейных уравнений. Нелинейный метод Зейделя применительно к решению (2) дает:

(7)

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

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

(8)

Выбор модельной функции

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

Читайте так же:
Как в биосе прописать загрузку с флешки

Функция f создаёт систему из n нелинейных уравнений, решение которой не зависит от числа уравнений и для каждой из n переменных равно единице.

Программа для тестирования на модельной функции c результатами решения системы алгебраических нелинейных уравнений с помощью библиотечной функции optimize.root для разных методов отыскания корней

Только один из методов, приведенных в документации [3] прошёл тестирование по результату решения модельной функции, это метод ‘krylov’.

Решение для n=100:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1.]
Krylov method iteration = 4219
Optimize root time 7.239 seconds:

Вывод: С увеличением числа уравнений вдвое заметно появление ошибок в решении. При дальнейшем увеличении n решение становится не приемлемым, что возможно из-за автоматической адаптации к шагу, эта же причина резкого падения быстродействия. Но это только моё предположение.

Программа для тестирования на модельной функции c результатами решения системы алгебраических нелинейных уравнений с помощью программы написанной на Python 3 с учётом соотношений (1)-(8) для отыскания корней по модифицированному методу Ньютона

Решение для n=100:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1.]
Newton iteration = 13
Newton method time 0.496 seconds

Решение для n=200:

Solution:
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1.]
Newton iteration = 14
Newton method time 1.869 seconds

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

Получим:
Solution:
[ 0.96472166 0.87777036 0.48175823 -0.26190496 -0.63693762 0.49232062
-1.31649896 0.6865098 0.89609091 0.98509235]
Newton iteration = 16
Newton method time 0.046 seconds

Вывод: Программа работает и при изменении модельной функции.

Теперь вернёмся к начальной модельной функции и проверим более широкий диапазон для n, например в 2 и 500.
n=2
Solution:
[1. 1.]
Newton iteration = 6
Newton method time 0.048 seconds
n=500

Читайте так же:
Мили газпромбанк личный кабинет

Алгоритм решения

Входные данные: f(x), f’’(x), a, b, ε.

  1. Еслиf(a) · f’’(a) > 0 , тоc = a , иначе еслиf(b) · f’’(b) > 0 , тоc = b .
  2. Еслиf(a) · f’’(a) < 0 , тоx = a , иначе еслиf(b) · f’’(b) < 0 , тоx = b .
  3. Δx = f(x) · (x − c) / (f(x) − f(c)) .
  4. x = x — Δx .
  5. Если|Δx| > ε , то идти к 3.

Выходные данные: x.

Значение x является решением с заданной точностью ε нелинейного уравнения вида f(x) = 0 .

Д. Л. Шилин Основы программирования в среде

Лабораторная работа №7. Алгоритмы поиска корней уравнений

Цель работы : изучить алгоритмы поиска корней нелинейных алгебраических уравнений с заданной точностью.

7.1. Краткие теоретические сведения

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

Итерационные методы основаны на построении сходящейся к точному решению x * бесконечной рекуррентной последовательности x 0 , x 1 , …, x k  x * при k  .

Последовательность называется рекуррентной порядка m, если каждый следующий ее член выражается через m предыдущих по некоторому правилу:

x k = ( x k  1 , x k  2 , …, x k  m ). (7.1)

Такой метод называется m — шаговым . Для его реализации требуется задать m первых членов < x 0 , x 1 , …, x m  1 >, называемых начальным приближением . Зная начальное приближение, по формуле (7.1) последовательно находят x m , x m +1 , …, x k , …. Процесс получения следующего k -го члена через предыдущие называется k -й итерацией . Итерации выполняются до тех пор, пока очередной член x k не будет удовлетворять заданной точности, т.е. пока не выполнится условие | x k  x k  1 | x k , при котором выполнилось указанное неравенство.

Чтобы использовать итерационный метод, исходную задачу преобразуют к виду, разрешенному относительно х :

При этом точное решение исходной задачи х * является и решением (7.2).

Используем выражение (7.2) в качестве рекуррентной формулы ( m = 1):

Далее, задав одно х 0 (начальное приближение), последовательно находим x 1 , x 2 , …, x k . Если полученная таким образом последовательность сходится к некоторому конечному пределу, то этот предел совпадает с точным решением х * .

Математической моделью многих физических процессов является функциональная зависимость y = f ( x ). Поэтому задачи исследования различных свойств функции f ( x ) часто возникают в инженерных расчетах. Одной из таких задач является нахождение корней этого уравнения на заданном отрезке [ a , b ], т.е. таких значений х, при которых f ( x ) = 0 .

На рис. 7.1 представлены три наиболее часто встречающиеся ситуации:

а) кратный корень:

б) простой корень:

в) вырожденный корень: не существует, .

Значения корней x 1 * и x 3 * (назовем их особенными ) совпадают с точкой экстремума функции, и для их нахождения можно использовать либо методы поиска минимума функции, либо алгоритм поиска интервала, на котором находится «особенный» корень.

Обычно для нахождения корней уравнения применяются численные методы, и этот поиск осуществляется в два этапа.

1. Приближенное определение местоположения – этап отделения корней (нахождение грубых корней).

2. Вычисление выбранного корня с заданной точностью .

Первая задача чаще всего решается графическим методом: на заданном отрезке [ a , b ] вычисляется таблица значений функции с некоторым шагом h , строится ее график, и определяются интервалы ( i ,  i ) – в дальнейшем [ a , b ] длиной h , на которых находятся корни.

Общий алгоритм поиска особенных корней

1. Начало цикла для x , изменяющегося от a до b с шагом h ( h  ).

2. Если f ( x ) xn – начало отрезка, на котором вероятно существует особенный корень уравнения f ( x ) – продолжаем цикл.

3. Если f ( x ) > , то xk – конец искомого отрезка.

4. Выводим на экран полученный интервал.

Общий алгоритм поиска простых корней

1. Начало цикла для x , изменяющегося от a до b с шагом h .

2. Если f ( x ) f ( x + h ) x , x + h ] существует простой корень уравнения f ( x ).

3. Обращаемся к созданной функции, реализующей выбранный алгоритм, параметрами которой являются: интервал [ x , x + h ], на котором существует корень, вид функции f ( x ), заданная точность .

4. Выводим на экран полученное значение.

Поиск простого корня с заданной точностью  осуществляется одним из итерационных методов. В соответствии с общей методикой, на найденном интервале выбирается m начальных значений (приближений) x 0 , x 1 , …, x m  1 , после чего последовательно выполняются вычисления до тех пор, пока не выполнится неравенство | x 1 – x 0| x 0 – значение, найденное на предыдущем шаге, x 1 – найденное значение). Значение x 1, при котором | x 1 – x 0| >  принимается в качестве приближенного значения корня.

Рассмотрим основные итерационные методы поиска корней.

Метод простой итерации

Функцию f ( x ) записывают в виде разрешенном, относительно x :

Переход от записи исходного уравнения к эквивалентной записи (7.1) можно сделать многими способами, например, положив

( x ) = x + ( x ) f ( x ), (7.2)

где ( x ) – произвольная, непрерывная, знакопостоянная функция (часто достаточно выбрать  = const ).

Члены рекуррентной последовательности в методе простой итерации вычисляются по правилу

Читайте так же:
Микрофон караоке беспроводной какой выбрать

x k = ( x k  1 ); k = 1,2, …

Метод является одношаговым, т.к. для начала вычислений достаточно знать одно начальное приближение x 0 = a , или x 0 = b , или x 0 = ( a + b )/2.

Метод Ньютона (метод касательных)

Этот метод является модификацией метода простой итерации и часто называется методом касательных. Если f ( x ) дважды непрерывно диффе­ренцируемая функция и имеет непрерывную производную. Выбрав в (7.2) ( x ) = 1/ f ‘ ( x ), получаем эквивалентное уравнение x = x – f ( x )/ f ‘ ( x ) = ( x ), тогда формула для метода Ньютона имеет вид:

x k = x k  1 – f ( x k  1 ) / f ‘ ( x k  1 ) = ( x k  1 ), k = 1,2,…

Очевидно, что этот метод одношаговый ( m = 1) и для начала вычислений требуется задать одно начальное приближение.

Метод секущих

Данный метод является модификацией метода Ньютона, позволяющей избавиться от явного вычисления производной путем ее замены прибли­женной формулой:

x k = x k  1 – f ( x k  1 ) q / [ f ( x k  1 ) – f ( x k  1 – q )] = ( x k  1 ), k = 1,2,…

Здесь q – некоторый малый параметр метода, который подбирается из условия наиболее точного вычисления производной ( q = h ).

Метод Вегстейна

Этот метод является модификацией предыдущего метода секущих. В нем при расчете приближенного значения производной используется вместо точки x k  1 – q ранее полученная точка x k  2 . Расчетная формула метода Вегстейна:

x k = x k  1 – f ( x k  1 )( x k  1 – x k  2 ) / [ f ( x k  1 ) – f ( x k  2 )] = ( x k  1 , x k  2 ), k = 1,2,…

Метод является двухшаговым ( m = 2), и для начала вычислений требуется задать 2 начальных приближения x 0 = a , x 1 = b .

Функция, реализующая данный метод может иметь вид:

double Metod1(type_f f,double x0,double x1,double eps) <

x0=x1; x1=x2; y0=y1; y1=f(x2);

return x2; // Возвращаем значение, для которого достигнута точность

Метод деления отрезка пополам

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

Для разрывных функций, а также, если не требуется быстрая сходимость, для нахождения простого корня на интервале [ a , b ] применяют надежный метод деления отрезка пополам. Идея метода: в качестве начального приближения выбираются границы интервала, на котором находится простой корень x 0 = a , x 1 = b ; далее находится его середина x 2 = ( x 0 + x 1 )/2. Очередная точка выбирается как середина того из смежных с x 2 интервалов [ x 0 , x 2 ] или [ x 2 , x 1 ], на котором находится корень.

Функция, реализующая данный метод приведена в примере, а блок-схема приведена на рис 7.1.

7.2. Пример выполнения задания

Написать программу поиска простых корней функции f ( x ) = 4 x – 7sin x на отрезке [ a , b ] c шагом h и точностью  методом деления отрезка пополам.

Вид формы и полученные результаты представленный на рис. 7.2.

Текст программы Unit 1. cpp может иметь следующий вид:

typedef double (*type_f)(double);

double a, b, x, eps, h, y, r;

a = StrToFloat(Edit1->Text); b = StrToFloat(Edit2->Text);

Memo1->Lines->Add(» Функция 4*x — 7*sin(x)»);

for(x = a-h; x Series[0]->AddXY(x,fun(x));

for(x = a; x Lines->Add(IntToStr(nom)+»-й margin-bottom: 0in; line-height: 0.18in»> >

Итерационные методы решения нелинейных уравнений

В большинстве случаев курс вычислительной математики начинают как раз с изучения методов решения нелинейных уравнений. Это оправдано тем, что материал в действительности достаточно прост. Но чем тогда объяснить те сложности, с которыми сталкиваются студенты при реализации этих методов в своих программах? Дело в том, что процесс решения нелинейного уравнения f(x)=0 имеет множество малозначимых на первый взгляд нюансов. Эти нюансы, например выбор начальных приближений к корню уравнения, зависят от вида f(x) и от метода решения. Я расскажу, как правильно выбирать начальные приближения, но об этом чуть позже.

А теперь по порядку. Процесс решения нелинейного уравнения разделен на две стадии:

  1. Локализация корня;
  2. Итерационное уточнение корня.

Локализация корня

Первый этап заключается в том, что производится поиск всех подынтервалов [x;x+h] (h-шаг сетки), на которых локализованы по одному корни уравнения. Для выполнения этой задачи наиболее удобен, в силу своей простой программной реализации, графический метод или, по-другому, метод сканирования. Суть метода состоит в том, что искомый участок оси абсцисс [a;b] делится на подынтервалы, длина которых равна h. Каждый из этих подынтервалов подвергается проверке на выполнение следующего условия: f(x)*f(x+h)<0. Из положительного результата проверки следует, что на исследуемом подынтервале локализовано нечетное количество корней. Отрицательный исход говорит нам о четном числе решений. Следовательно, метод сканирования не дает нам 100-процентной гарантии получения верных данных на этапе локализации. Да, аналитически мы можем исследовать и первую и вторую производную функции f(x) и в итоге получить максимально точное ее поведение. Может и возможно как-нибудь «впихнуть» эту аналитику в программный код, но по ряду причин это совершенно нецелесообразно. Проще взять величину шага h поменьше и, в результате, свести к минимуму вероятность фиксирования интервалов с числом корней отличным от одного. У метода сканирования существует и еще одна проблема. Дело в том, что таким способом исключена возможность локализации кратных корней, то есть таких, где функция только касается оси абсцисс и, следовательно, знак в своей окрестности не меняет (например f(x)=x 2 ) . Также хочу отметить, что в программе лучше записывать условие локализации в виде f(x)*f(x+h)<=0, дабы исключить возможность потери решений.

Читайте так же:
Два интервала в ворде как это

Итерационное уточнение корня

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

Механизм метода бисекции, который больше известен под названием метода половинного деления, очень прост и заключается в том, что полученный при локализации отрезок на каждой итерации делится пополам. Из двух половинок выбирается та, на концах которой функция принимает значения противоположных знаков. То есть проверяется то же условие, что и при методе сканирования. Процесс заканчивается, когда длина полученного интервала становится меньше произведения . Фактически этот метод исключает возможность появления ошибки. «Аварийная» ситуация может быть вызвана лишь тем, что граница полученного на итерации отрезка попадет в точку разрыва функции. Метод половинного деления наиболее универсальный среди всех итерационных методов. Но, как всегда, бочка меда не обходится без ложки дегтя – для бисекции характерна очень низкая скорость сходимости.

Итерационная формула метода бисекции:

Скорость сходимости: низкая

Надежность сходимости: высокая

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

Фактически все способы решения НАУ различаются между собой механизмом. Механизм определяется итерационной формулой. То есть итерационная формула это и есть отличительная черта каждого метода. А в методе простой итерации этой формулы нет. Вернее эту формулу должен определить сам разработчик. Она имеет общий вид x n =ϕ(x n-1 ).Причем чтобы итерационный процесс сходился, должно выполняться условие: |ϕ’(x)|<1 в каждой точке интервала локализации. Да, разработчику не составит большого труда вычислить итерационную формулу для одного отрезка локализации. Но если ему нужно, например, решить кубическое уравнение и обеспечить нахождение любого из трех корней (куб. ур-ие максимально имеет три решения)? В этом случае методом простых итераций он не достигнет цели, так как итерационная формула не может гарантировать одинаково хорошего результата на нескольких диапазонах, хватит лишь того, что исходная функция на одном интервале будет убывать, а на другом возрастать.

Вот этим и объясняется «неуниверсальность» метода простых итераций. Этот способ скорее имеет какой-то обучающий характер, так как на основе него проще понять общие принципы работы итерационных методов решения НАУ.

Итерационная формула метода простой итерации:

Скорость сходимости: зависит от ϕ(x)

Надежность сходимости: зависит от ϕ(x)

Метод Ньютона основан на уравнении касательной y=f’(x)*x+b, из которого в результате алгебраических преобразований выводится итерационная формула:

  • Максимально высокая скорость сходимости, так как |ϕ’(x)|=0 во всех точках интервала локализации (здесь ϕ(x)-правая часть итерационной формулы);
  • Широкий спектр возможных начальных приближений (сравнительно с методом секущих). Главное, чтобы начальное приближение не попадало на отрезок, где функция монотонно возрастает или убывает и притом не пересекает ось абсцисс на исследуемом интервале локализации – это приведет либо к расходимости, либо к выходу итерационного процесса за пределы интервала локализации и приближению к корню соседнего интервала.
  • Наличие в итерационной формуле производной – производную не каждой функции можно определить;
  • Возникновение ошибки при выполнении f’(x)=0 – касательная параллельна оси абсцисс.

Скорость сходимости: высокая

Надежность сходимости: средняя

Существует несколько модификаций метода Ньютона, исключающие из итерационной формулы производную, но «жертвующие» другими характеристиками.

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

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

Читайте так же:
Задачи для excel для начинающих

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

Относительно метода Ньютона метод секущих ничуть не теряет в скорости, тем ни менее исключая все негативные моменты связанные с производной. Единственное, в чем он уступает своему прародителю, так это в том, что чуть больше становится ограничений на выбор начальных приближений – оба приближения должны быть расположены достаточно близко друг к другу и находиться на одном интервале убывания-возрастания с корнем уравнения. Этот метод также называют методом линейной интерполяции.

Скорость сходимости: высокая

Надежность сходимости: средняя

2.1. Для определения величины зерна методом подсчета пересечений зерен поверхность шлифа просматривают и выбирают не менее пяти типичных мест, а при определении статистических характеристик — не менее восьми типичных мест. На каждом месте производят не менее двух единичных измерений.

(Измененная редакция, Изм. N 1).

2.2. Определение величины зерна производят при таком увеличении, чтобы в поле зрения находилось целиком 80-200 зерен.

2.3. Для измерений применяют секущие линии в виде двух непараллельных прямых или окружности. Прямая секущая должна пересекать не менее 10 зерен, а секущая в виде окружности — не менее 20 зерен.

2.4. Секущие линии наносят на изображение измеряемого места, наблюдаемое на матовом стекле микроскопа, на микрофотографии или непосредственно в окуляре микроскопа (если окуляр снабжен изображениями, которые могут быть использованы в качестве секущих).

2.5. Определение величины неравноосных зерен проводят на шлифах, изготовленных вдоль и поперек главной оси симметрии изделия. В этом случае секущие линии в виде прямых проводят параллельно осям симметрии.

(Введен дополнительно, Изм. N 1).

Подбор параметра в Excel позволяет подобрать какой-то определенный параметр, значение которого неизвестно. Чтобы было понятней, можно привести такой пример. Допустим, есть прямоугольник со сторонами A и B. Известно, что общая площадь этой фигуры составляет 400 квадратных метров, а сторона B — 40 метров. Сторона A неизвестна и, соответственно, нужно ее найти. Для решения такой задачи необходимо заполнить рабочий лист программы теми данными, которые уже известны. Для этого нужно создать таблицу с 2 колонками и 3 строками (диапазон ячеек A1:B3).

Первый столбец будет содержать название сторон прямоугольника и букву, обозначающую его площадь (т.е. A, B и S). А во втором столбце необходимо указать известные значения:

  • в соседней ячейке для стороны B (ячейка B2) написать — 40 (значение для стороны А остается пустым);
  • а в соседнем поле для площади прямоугольника (поле B3) написать следующую формулу: = B1*B2 (т.е. формула для расчета площади).

Если все было сделано правильно, то в поле B3 должно быть значение 0. Затем надо выделить эту ячейку и выбрать в панели меню пункты: «Сервис — Подбор параметра». В появившемся окне нужно указать то значение, которое должно быть получено в результате, т.е. 400. В строке «Установить в ячейке» будет указано поле «B3»: менять его не нужно, так и должно быть (сюда будет выведен результат). А в строке «Изменяя значение» необходимо выбрать неизвестный параметр, т.е. поле B1. После нажатия кнопки «ОК» программа выдаст результат: сторона А — 10 метров, а в поле общей площади прямоугольника будет указано число 400.

Это была очень простая задача на уровне 3 класса, но с помощью такой функции можно решать и более сложные задачи. Например, вы решили приобрести себе автомобиль в кредит. Вы точно знаете, что сможете выплачивать ежемесячную выплату в размере 1000 $ (но не больше), а также, что банк выдает автокредит с процентной ставкой 6,5%. Суть задачи заключается в следующем: «Какова максимальная сумма машины, которую можно взять в кредит на таких условиях?». То есть теперь программа будет искать стоимость автомобиля, отталкиваясь от того, что ежемесячный платеж не должен превышать 1000 $. Такой пример является уже более сложным, а также более практичным, нежели расчет площади прямоугольника.

Стиль ссылок

И еще кое-что про ссылки. Иногда они выглядят несколько непривычно. Это особый стиль ссылок, при котором адрес ячейки A1 имеет наименование R1C1 (первая строка (R1), первая колонка (C1)). Такой стиль ссылок иногда может быть полезен, но довольно редко. Поэтому неплохо уметь возвращать нормальный вид адреса ячейки. Для этого нужно выполнить следующие действия: Файл → Параметры → Формулы и далее нужно снять галочку с пункта Стиль ссылки R1C1.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector