Теоретические основы решения нелинейных уравнений. Численные методы: решение нелинейных уравнений 0 численных методах решения нелинейного уравнения

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

  1. b) Комбинирование с другими методами.

Идея метода . Если метод прямой подстановки не применим на начальном этапе решения, то используются равносильные преобразования систем (почленное сложение, вычитание, умножение, деление), а затем проводят непосредственно прямую подстановку.

2) Метод независимого решения одного из уравнений.

Идея метода . Если в системе содержится уравнение, в котором находятся взаимно обратные выражения, то вводится новая переменная и относительно её решается уравнение. Затем система распадается на несколько более простых систем.

Решить систему уравнений

Рассмотрим первое уравнение системы:

Сделав замену , где t ≠ 0, получаем

Откуда t 1 = 4, t 2 = 1/4.

Возвращаясь к старым переменным, рассмотрим два случая.

Корнями уравнения 4у 2 – 15у – 4 = 0 являются у 1 = 4, у 2 = — 1/4 .

Корнями уравнения 4х 2 + 15х – 4 = 0 являются х 1 = — 4, х 2 = 1/4 .

3)Сведение системы к объединению более простых систем.

  1. a ) Разложение на множители способом вынесения общего множителя.

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

  1. b ) Разложение на множители через решение однородного уравнения .

Идея метода. Если одно из уравнений представляет собой однородное уравнение (, то решив его относительно одной из переменных, раскладываем на множители, например: a(x-x 1)(x-x 2) и, учитывая равенство выражения нулю, переходим к решению более простых систем.

Решим первую систему

  1. c ) Использование однородности.

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

4) Метод алгебраического сложения.

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

5) Метод умножения уравнений.

Идея метода. Если нет таких пар (х;у), при которых обе части одного из уравнений обращаются в ноль одновременно, то это уравнение можно заменить произведением обоих уравнений системы.

Решим второе уравнение системы.

Пусть = t, тогда 4t 3 + t 2 -12t -12 = 0. Применяя следствие из теоремы о корнях многочлена, имеем t 1 = 2.

Р(2) = 4∙2 3 + 2 2 — 12∙2 – 12 = 32 + 4 — 24 — 12 = 0. Понизим степень многочлена, используя метод неопределенных коэффициентов.

4t 3 + t 2 -12t -12 = (t – 2) (at 2 + bt + c).

4t 3 +t 2 -12t -12 = at 3 + bt 2 + ct — 2at 2 -2bt — 2c.

4t 3 + t 2 — 12t -12 = at 3 + (b – 2a) t 2 + (c -2b) t — 2c.

Получаем уравнение 4t 2 + 9t + 6 = 0, которое не имеет корней, так как D = 9 2 — 4∙4∙6 = -15<0.

Возвращаясь к переменной у, имеем = 2, откуда у = 4.

Ответ. (1;4).

6) Метод деления уравнений.

Идея метода. Если нет таких пар (х; у), при которых обе части одного из уравнений обращаются в ноль одновременно, то это уравнение можно заменить уравнением, которое получается при делении одного уравнения системы на другое.

7) Метод введения новых переменных.

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

Возвращаясь к старым переменным, имеем:

Решаем первую систему.

8) Применение теоремы Виета .

Идея метода. Если система составлена так, одно из уравнений представлено в виде суммы, а второе — в виде произведения некоторых чисел, которые являются корнями некоторого квадратного уравнения, то применяя теорему Виета составляем квадратное уравнение и решаем его.

Ответ. (1;4), (4;1).

Для решения симметричных систем применяется подстановка: х + у = а; ху = в. При решении симметричных систем используются следующие преобразования:

х 2 + у 2 = (х + у) 2 – 2ху = а 2 – 2в; х 3 + у 3 = (х + у)(х 2 – ху + у 2) = а(а 2 -3в);

х 2 у + ху 2 = ху (х + у) = ав; (х +1)∙(у +1) = ху +х +у+1 =а + в +1;

Ответ. (1;1), (1;2), (2;1).

10) «Граничные задачи».

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

Особенность этой системы в том, что число переменных в ней больше числа уравнений. Для нелинейных систем такая особенность часто является признаком «граничной задачи». Исходя из вида уравнений, попытаемся найти множество значений функции, которая встречается и в первом, и во втором уравнении системы. Так как х 2 + 4 ≥ 4, то из первого уравнения следует, что

Ответ (0;4;4), (0;-4;-4).

11) Графический метод.

Идея метода . Строят графики функций в одной системе координат и находят координаты точек их пересечения.

1) Переписав первое уравнение систем в виде у = х 2 , приходим к выводу: графиком уравнения является парабола.

2) Переписав второе уравнение систем в виде у =2/х 2 , приходим к выводу: графиком уравнения является гипербола.

3) Парабола и гипербола пересекаются в точке А. Точка пересечения только одна, поскольку правая ветвь параболы служит графиком возрастающей функции, а правая ветвь гиперболы — убывающей. Судя по построенной геометрической модели точка А имеет координаты (1;2). Проверка показывает, что пара (1;2) является решением обоих уравнений системы.

Решение одного нелинейного уравнения

Введение

Данная лабораторная работа включает в себя четыре метода решения одного нелинейного уравнения.

Использующиеся методы решения одного нелинейного уравнения:

Метод половинного деления.

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

Метод Ньютона.

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

Также данная лабораторная работа включает в себя: описание метода, применение метода к конкретной задаче (анализ), код программы решения вышеперечисленных методов на языке программирования MicrosoftVisualC++ 6.0.

Описание метода:

Пусть задана функция f (x) действительного переменного. Требуется найти корни уравнения f (x) =0 (1) или нули функции f (x).

Нули f (x) могут быть как действительными, так и комплексными. Поэтому наиболее точная задача состоит в нахождении корней уравнения (1), расположенных в заданной области комплексной плоскости. Можно рассматривать также задачу нахождения действительных корней, расположенных на заданном отрезке.

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

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

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

Теперь отдельно по каждому методу:

1. Метод половинного деления (метод бисекции)

Более распространенным методом нахождения корней нелинейного уравнения является метод деления пополам. Предположим, что на интервале расположен лишь один корень x уравнения (1). Тогда f (a) и f (b) имеют различные знаки. Пусть для определения f (a) >0, f (b) <0. Положим x0= (a + b) /2 и вычислим f (x0). Если f (x0) <0, то искомый корень находится на интервале , если же f (x0) >0, то x принадлежит . Далее из двух интервалов и выбираем тот на границах, которого функция f (x) имеет различные знаки, находим точку x1 - середину выбранного интервала, вычисляем f (x1) и повторяем указанный процесс. В результате получаем последовательность интервалов, содержащих искомый корень x, причем длина каждого последующего интервала вдвое меньше, чем предыдущего. Процесс заканчивается, когда длина вновь полученного интервала станет меньше приближенной точности (

>0), и в качестве корня x, приближенного принимается середина этого интервала.

Пусть начальное приближение x0 известно. Заменим f (x) отрезком ряда Тейлора

f (x) ≈ H1 (x) = f (x0) + (x - x0) f " (x0) и за следующее приближение x1 возьмем корень уравнения H1 (x) = 0, т.е. x1=x0 - f (x0) / f " (x0).

Вообще, если итерация xk известна, то следующее приближение xk+1 в методе Ньютона определяется по правилу xk+1=xk-f (xk) /f" (xk), k=0, 1, … (2)

Метод Ньютона называют также методом касательных, так как новое приближение xk +1 является абсциссой точки пересечения касательной, проведенной в точке (xk, f (xk)) к графику функции f (x) с осью Ox.

Особенность метода:

во-первых, метод имеет квадратичную сходимость, т.е. в отличие от линейных задач погрешность на следующей итерации пропорциональна квадрату погрешности на предыдущей итерации: xk+1-x=O ((xk-x) ²);

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

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

Этот метод получается из метода Ньютона заменой f" (xk) разделенной разностью f (xk) - f (xk-1) /xk-xk-1, вычисленной по известным значениям xk и xk-1. В результате получаем итерационный метод

, k=1, 2, … (3), который в отличие от ранее рассмотренных методов является двухшаговым, т.е. новое приближение xk+1 определяется двумя предыдущими итерациями xk и xk-1. В методе необходимо задавать два начальных приближения x0 и x1.

Геометрическая интерпретация метода секущих состоит в следующем. Через точки (xk-1, f (xk-1)), (xk, f (xk)) проводится прямая, абсцисса точки пересечения этой прямой с осью Ox и является новым приближением xk+1. Иначе говоря, на отрезке функция f (x) интерполируется многочленом первой степени и за очередное приближение xk+1 принимается корень этого многочлена.

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

Этот метод заключается в замене уравнения (1) эквивалентным ему уравнением вида

(4) после этого строится итерационный процесс (5). При некотором заданном значении для приведения выражения (1) к требуемому виду (4) можно воспользоваться простейшим приёмом , .

Если в выражении (4) положить

, можно получить стандартный вид итерационного процесса для поиска корней нелинейного уравнения: .

Иначе можно получить уравнение (4) следующим способом: левую и правую часть уравнения (1) умножить на произвольную константу  и прибавить к левой и правой части х, т.е. получаем уравнение вида:

(6), где .

На заданном отрезке выберем точку х 0 - нулевое приближение - и найдем: х 1 = f (x 0), потом найдем: х 2 = f (x 1), и т.д. Таким образом, процесс нахождения корня уравнения сводится к последовательному вычислению чисел: х n = f (x n-1) n = 1,2,3… Если на отрезке выполнено условие: |f " (x) |<=q<1 то процесс итераций сходится, т.е.

. Процесс итераций продолжается до тех пор, пока |x n - x n-1 |<=, где  - заданная абсолютная погрешность корня х. При этом будет выполняться: .

Применение метода к конкретной задаче (анализ).

Дано уравнение вида x² - ln (1+x) - 3 = 0 при x

. Задача состоит в том, чтобы решить это нелинейное уравнение 4 известными способами: метод половинного деления, метод касательных, метод секущих и метод простой итерации.

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

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

Листинг программы:

1. Метод половинного деления

#include

#include

#include

#define e 0.000001

double func (double x)

res=fopen ("bisekciy. txt","w");

while (fabs (a-b) >e)

if ((func (c) *func (a)) <0) b=c;

printf ("Otvet:%f\n",a);

printf ("Takge smotri otvet v file bisekciy. txt\n");

fprintf (res,"Результат решения уравнения методом половинного деления! \n");

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

#include

#include

#include

#define e 0.000001

double func (double x)

return ((((x*x) - (log (1+x))) - 3));

double dif (double x)

return ((2*x) - (1/ (1+x)));

res=fopen ("kasatelnih. txt","w");

while (fabs (a-b) >=e)

a=a-func (a) /dif (a);

b=b-func (b) /dif (b);

printf ("Funkciya prinimaet znachenie na intervale: [%d,%d] \n",x1,x2);

printf ("Otvet:%f\n",a);

printf ("Kol-vo iteraciy:%d \n",k);

printf ("Takge smotri otvet v file kasatelnih. txt\n");

fprintf (res,"Результат решения уравнения методом Ньютона! \n");

fprintf (res,"Корень уравнения x =%f\nКоличество итераций =%d",a,k);

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

#include

Цель работы

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

Методические указания

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

Нелинейные уравнения можно разделить на 2 класса – алгебраические и трансцендентные. Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые – в частности многочлен, рациональные, иррациональные). Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и др.) называются трансцендентными. Нелинейные уравнения могут решаться точными или приближенными методами. Точные методы позволяют записать корни в виде некоторого конечного соотношения (формулы). К сожалению, большинство трансцендентных уравнений, а также произвольные алгебраические уравнения степени выше четвертой не имеют аналитических решений. Кроме того, коэффициенты уравнения могут быть известны лишь приблизительно и, следовательно, сама задача о точном определении корней теряет смысл. Поэтому для решения используются итерационные методы последовательного приближения. Вначале следует вначале отделить корни (т.е. найти их приближенное значение или отрезок их содержащий), а затем методом последовательных приближений их уточнить. Отделить корни можно – установив знаки функции f (x ) и ее производной в граничных точках области ее существования, оценив приближенные значения из физического смысла задачи, или из решения аналогичной задачи при других исходных данных.

Широко распространен графический способ определения приближенных значений действительных корней – строят график функции f (x ) и отмечают точки пересечения его с осью ОХ. Построение графиков часто удается упростить, заменив уравнение f (x )= 0 равносильным ему уравнением , где функции f 1 (x ) и f 2 (x ) - более простые, чем функция f (x ). В этом случае следует искать точку пересечения этих графиков.

Пример 1. Графически отделить корни уравнения x lg x = 1. Перепишем его в виде равенства lg x= 1/xи найдем абсциссы точек пересечения логарифмической кривой y = lg x и гиперболы y = 1/x (рис. 5). Видно, что единственный корень уравнения .

Реализация классических приближенных методов решения в пакете MathCAD.

Метод половинного деления

Отрезок, на концах которого функция принимает значения разного знака, делится пополам и, если корень лежит правее центральной точки, то к центру подтягивается левый край, а если – левее, то правый край. Новый суженный отрезок снова делится пополам и процедура повторяется. Этот метод прост и надежен, всегда сходится (хотя часто медленно – расплата за простоту!). Программная реализация его в пакете MathCAD рассмотрена в лабораторной работе №7 данного пособия.

Метод хорд

В качестве последовательных приближений к корню уравнения принимаются значения х 1 , х 2 , ..., х n точек пересечения хорды АВ с осью абсцисс (рис. 6).

Уравнение хорды AB имеет вид: . Для точки пересечения ее с осью абсцисс (х=х 1 , y= 0) имеем:

Пусть для определенности кривая у = f (x ) будет выпукла вниз и, следовательно, расположена ниже своей хорды АВ , т.е. на отрезке f ²(x )>0. Возможны два случая: f (а )>0 (рис. 6, а ) и f (а )<0 (рис. 6, б ).

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

x 0 = b ; . (4.1)

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

x 0 = а ; . (4.2)

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

Пример 2. Найти положительный корень уравнения f (x ) º x 3 –0,2x 2 –0,2х –1,2 = 0 с точностью e= 0,01. (Точный корень уравнения x = 1,2).

Для организации итерационных вычислений в MathCAD документе используется функция until(a, z ), котораявозвращает значение величины z , пока выражение a не становится отрицательным.

Метод Ньютона

Отличие этого метода от предыдущего состоит в том, что вместо хорды на каждом шаге проводится касательная к кривой y=f (x )при x=х i и ищется точка пересечения ее с осью абсцисс (рис. 7):

При этом не обязательно задавать отрезок [а, b], содержащий корень уравнения), а достаточно лишь задать начальное приближение корня x=х 0 , которое должно находиться на том же конце интервала [а, b], где знаки функции и ее второй производной совпадают.

Уравнение касательной, проведенной к кривой y = f (x ) через точку В 0 с координатами х 0 и f (х 0), имеет вид:

Отсюда найдем следующее приближение корня х 1 как абсциссу точки пересечения касательной с осью Ох (y = 0):

Аналогично могут быть найдены и последующие приближения как точки пересечения с осью абсцисс касательных, проведенных в точках В 1 , В 2 и так далее. Формула для (i + 1) приближения имеет вид:

Условием окончания итерационного процесса является неравенство ïf (x i

Пример 3 . Реализация итерационного метода Ньютона.

Метод простой итерации (последовательных итераций )

Заменим исходное нелинейное уравнение f (х )=0 равносильным уравнением вида x =j(x ). Если известно начальное приближение корня х = х 0 , то новое приближение может быть получено по формуле: х 1 =j(х 0). Далее, подставляя каждый раз новое значение корня в исходное уравнение получаем последовательность значений:

Геометрическая интерпретация метода состоит в том, что каждый действительный корень уравнения является абсциссой точки пересечения М кривой у= j(х ) с прямой у=х (рис. 8). Отправляясь от произвольной т. А 0 [x 0 ,j(x 0)] начального приближения, строим ломаную А 0 В 1 А 1 В 2 А 2 .., которая имеет форму «лестницы» (рис. 8, а ) если производная j’(x) положительна и форму «спирали» (рис. 8, б ) в противоположном случае.

в)
Рис. 8. Метод простой итерации: а, б – сходящаяся итерация, в – расходящаяся итерация.

Отметим, что следует заранее проверить пологость кривой j(х ), поскольку если она не является достаточно пологой ( >1), то процесс итерации может быть расходящимся (рис. 8, в ).

Пример 4. Решитьуравнение x 3 – x – 1 = 0 методом простой итерации с точностью e = 10 -3 . Реализация этой задачи представлена следующим MathCAD документом.

Реализация приближенных методов решения встроенными функциями MathCAD

Использование функции root

Для уравнений вида f (x ) = 0 решение находится с помощью функции: root(f (х ),х,a,b ) , которая возвращает значение х , принадлежащее отрезку [a, b ] , при котором выражение или функция f (х ) обращается в 0. Оба аргумента этой функции x и f(x) должны быть скалярами, а аргументы a, b – являютсянеобязательными и, если используются, то должны быть вещественными числами, причем a < b. Функция позволяет находить не только вещественные, но и комплексные корни уравнения (при выборе начального приближения в комплексной форме).

Если уравнение не имеет корней, они расположены слишком далеко от начального приближения, начальное приближение было вещественным, а корни – комплексные, функция f (х ) имеет разрывы (локальные экстремумы между начальными приближениями корня) то появится сообщение (отсутствует сходимость). Причину ошибки можно выяснить, исследуя график f (x ). Он поможет выяснить наличие корней уравнения f (x ) = 0 и, если они есть, то определить приблизительно их значения. Чем точнее выбрано начальное приближение корня, тем быстрее будет сходиться функция root .

Для выражения f (x ) с известным корнем а нахождение дополнительных корней f (x ) эквивалентно поиску корней уравнения h (x )=f (x )/(x‑a ). Проще искать корень выражения h (x ), чем пробовать искать другой корень уравнения f (x )=0, выбирая различные начальные приближения. Подобный прием полезен для нахождения корней, расположенных близко друг к другу, он реализован в приведенном ниже документе.

Пример 5 . Решить алгебраическое уравнения с помощью функции root:

Примечание. Если увеличить значение системной переменной TOL (tolerance), то функция root будет сходиться быстрее, но ответ будет менее точен, а при уменьшении TOL более медленная сходимость обеспечивает более высокую точность, соответственно. Последнее необходимо, если требуется различить два близко расположенных корня, или же, если функция f (x ) имеет малый наклон около искомого корня, поскольку итерационный процесс в этом случае может сходиться к результату, отстоящему от корня достаточно далеко. В последнем случае альтернативой повышения точности является замена уравнения f (x ) = 0на g (x ) = 0, где .

Использование функции polyroots

Если функция f(x) является полиномом степени n , то для решения уравнения f(x)=0 лучше использовать функцию polyroots (a), нежели root , поскольку она не требует начального приближения и возвращает сразу все корни, как вещественные, так и комплексные. Аргументом ее является вектор a, составленный из коэффициентов исходного полинома. Его можно сформировать вручную или с помощью команды Символы Þ Коэффициенты полинома (переменная полинома x выделяется курсором). Пример применения функции polyroots:

Использование функции solve и блока решений

Блок решений с ключевыми словами (Given – Find или Given – Minerr ) или функция solve позволяют найти решение произвольного нелинейного уравнения, если предварительно задано начальное приближение.

Отметим, что между функциями Find и root наблюдается своеобразная конкуренция. С одной стороны, Find позволяет искать корни, как уравнений, так и систем. С этих позиций функция root как бы и не нужна. Но с другой стороны, конструкцию Given-Find невозможно вставить в MathCAD программы. Поэтому в программах приходится подстановками сводить систему к одному уравнению и использовать функцию root .

Символьное решение уравнений в пакете MathCAD

Во многих случаях, MathCAD позволяет найти аналитическое решение уравнения. Для того чтобы найти решение уравнения в аналитическом виде необходимо записать выражение и выделить в нем переменную. После этого выбираем из пункта меню Symbolic подпункт Solve for Variable.

Другими вариантами нахождения решения в символьной форме являются (приводятся примеры решения того же уравнения) – использование функции solve из палитры математических операций Символы (Symbolic ).

использование блока решения (с ключевыми словами Given - Find )

Нахождение корней нелинейного уравнения

Курсовая

Информатика, кибернетика и программирование

Блок-схемы реализующие численные методы -для метода дихотомии: Блок-схема для метода хорд: Блок-схема для метода Ньютона: Листинг программы unit Unit1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs TeEngine Series ExtCtrls TeeProcs Chrt Menus OleCtnrs StdCtrls xCtrls OleCtrls VCF1 Mth; type TForm1 = clssTForm GroupBox1: TGroupBox; OleContiner2: TOleContiner; MinMenu1: TMinMenu; N1: TMenuItem; Chrt1: TChrt; Series1:...

РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ НЕФТИ И ГАЗА им. И.М. ГУБКИНА

Кафедра информатики

Курсовая работа

по дисциплине «Информатика».

Тема: « Нахождение корней нелинейного уравнения»

Выполнил: студентка

Манепова А. М

группы: ГИ-12-05

Проверил:

Москва, 2013


Задание на выполнение курсовой работы.


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

1. Метод половинного деления (дихотомии)

2.Метод хорд

3. Метод Ньютона

Расчеты в математическом пакете Mat lab


Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.

Результаты расчета с использованием Побора Параметра


Результаты расчета с использованием Поиска Решений


Описание приложения созданного в среде Delphi.


Блок – схемы реализующие численные методы

Листинг программы


Изображение окна приложения


Анализ полученных результатов


Литература.


Задание на выполнение курсовой работы.

  1. расчет , выполненный в математическом пакете Matlab (Mathematica 5 .) (файл-функция для описания нелинейного уравнения, график, решение в символьном и численном виде).
  2. Нахождение корней нелинейного уравнения в электронных таблицах MS Excel (вид нелинейного уравнения, график нахождения корней нелинейного уравнения, найти корень нелинейного уравнения, используя средства условного анализа: «Побор параметра», «Поиск решения»).
  3. Создание приложения для нахождения корней нелинейного уравнения в среде Delphi (вид нелинейного уравнения, график на заданном интервале, для каждого метода: результаты табулирования функции на заданном интервале с заданным шагом, для каждого метода численного метода пользовательскую подпрограмму с передачей параметров). Результаты отобразить на форме в виде таблицы и в файле. Предусмотреть изменение точности значения (Е <= 0 , 001).
  4. вид уравнения


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

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

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

Рассмотрим три метода: 1) метод дихотомии (или деление отрезка пополам); 2) метод простой итерации и 3) метод Ньютона .

1. Метод половинного деления (дихотомии)


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

2.Метод хорд

При решении нелинейного уравнения методом хорд задаются интервалы , на котором существует только одно решение, и точность Ɛ. Затем через две точки с координатами (a,F(a)) и (b,F(b)) проводим отрезок прямой линии (хорду) и определяем точку пересечения этой линии с осью абцисс. Ели при этом F(a)*F(b) <0, то праву границу интервала пееносиим в точку x (b=x). Если указанное условие не выполняется, то в точку x переносится левая граница интервала (a=x). Поиск решения пекращается при достижении заданной точности |F(x)|>Ɛ. Вычисления ведутся до тех пор, пока не выполнится неравенство: . Итерационная формула метода хорд имеет вид:

3. Метод Ньютона

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

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

В предположении, что точка приближения «достаточно близка» к корню , и что заданная функция непрерывна , окончательная формула для такова:

С учётом этого функция определяется выражением:

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

Расчеты в математическом пакете Mat lab

В математическом пакете по условию задания был построен график функции и найден корень уравнения с использование символьного решения( solve ) и в численном виде используя встроенные функции: fzero и fsolve . Для описания моей функции использовала файл-функцию.

На следующем рисунке представлен графи функции:


Для записи команд использовала
M -файл:


В командном окне были получены следующие результаты:

r 1 =

r 2 =

r 3 =

r 4 =

8.0000

r5 =

7.9979 -8.0000


Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.

MS Excel был проведен расчет приближенного значения корня уравнения с помощью встроенных возможностей «Подбор параметров» и «Поиск решений». Для выбора начального приближения предварительно мной была построена диаграмма.

Результаты расчета с использованием Побора Параметра

x =-9 (исходя из диаграммы)

В результате использования Подбора Параметра был найден корень x =-8,01.


Результаты расчета с использованием Поиска Решений

В качестве начального приближения был выбран x =-9 (исходя из диаграммы)


После выполнения был получен следующий результат:

Поиск решения дал мне значение x = -8,00002


Описание приложения созданного в среде Delphi.

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


Блок – схемы реализующие численные методы

Блок-схема для метода дихотомии:


Блок-схема для метода хорд:


Блок-схема для метода Ньютона:

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Menus, OleCtnrs,

StdCtrls, AxCtrls, OleCtrls, VCF1, Math;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

OleContainer2: TOleContainer;

MainMenu1: TMainMenu;

N1: TMenuItem;

Chart1: TChart;

Series1: TPointSeries;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

Edit1: TEdit;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

GroupBox4: TGroupBox;

Label2: TLabel;

Label3: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label4: TLabel;

Edit5: TEdit;

Label5: TLabel;

Edit7: TEdit;

Label7: TLabel;

F1Book1: TF1Book;

F1Book2: TF1Book;

F1Book3: TF1Book;

F1Book4: TF1Book;

Procedure N1Click(Sender: TObject);

Procedure N3Click(Sender: TObject);

Procedure FormCreate(Sender: TObject);

Procedure N4Click(Sender: TObject);

Procedure N5Click(Sender: TObject);

Private

{ Private declarations }

Public

{ Public declarations }

End;

const

xmin:real=-20;

xmax:real=20;

Form1: TForm1;

X,y,t,a,b,cor:real;

I,n:integer;

Fail:textfile;

implementation

{$R *.dfm}

function f(x:real):real;

begin

f:=(8+x)/(x*sqrt(sqr(x)-4));

end;

function f1(x:real):real;

begin

f1:=(-power(x,3)-16*x*x+32)/(x*X*sqrt(power(x*x-4,3)));

end;

procedure metoddix(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:=(ta+tb)/2;

kolvo:=kolvo+1;

Form1.F1book1.NumberRC:=xk;

Form1.F1book1.NumberRC:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodhord(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)*(ta-tb)/(f(ta)-f(tb));

kolvo:=kolvo+1;

Form1.F1book2.NumberRC:=xk;

Form1.F1book2.NumberRC:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodnyutona(ta,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)/f1(ta);

ta:=xk;

kolvo:=kolvo+1;

Form1.F1book3.NumberRC:=xk;

Form1.F1book3.NumberRC:=f(xk);

until (abs(f(xk))<=eps);

end;

procedure TForm1.N1Click(Sender: TObject);

begin

x:=xmin;

i:=0;

while x<=xmax do

begin

if abs(x)>5 then

Begin

I:=i+1;

Y:=f(x);

Series1.Addxy(x,y);

F1book4.NumberRC:=x;

F1book4.NumberRC:=y;

End;

x:=x+0.5;

end;

end;

procedure TForm1.N3Click(Sender: TObject); // Вычисление корня методом половинного деления

begin

F1book1.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit2.Text);

b:=strtofloat(Edit3.Text);

metoddix(a,b,t,cor,n);

F1book4.TextRC:=" дихотомия ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом дихотомии ");

closefile(fail);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

Assignfile(fail," отчет .txt");

Rewrite(fail);

Closefile(fail);

end;

procedure TForm1.N4Click(Sender: TObject); // Вычисление корня методом хорд

begin

F1book2.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit5.Text);

b:=strtofloat(Edit4.Text);

metodhord(a,b,t,cor,n);

F1book4.TextRC:=" хорды ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Assignfile(fail," отчет .txt");

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом хорд ");

writeln(fail,"Точность расчета = ",t:10:7);

Writeln(fail,"Начальное приближение:a = ",a:8:3," b = ",b:8:3);

writeln(fail, " Найден корень : x = ",cor:8:3, " y=f(x)= ",f(cor):8:6);

writeln(fail, "Количество итераций = ",n);

closefile(fail);

end;

procedure TForm1.N5Click(Sender: TObject); // Вычисление корня методом Ньютона

begin

F1book3.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit7.Text);

metodnyutona(a,t,cor,n);

F1book4.TextRC:=" Ньютона ";

F1book4.TextRC:=" корень =";

F1book4.NumberRC:=cor;

F1book4.TextRC:="y=";

F1book4.NumberRC:=f(cor);

F1book4.TextRC:=" количество итераций =";

F1book4.NumberRC:=n;

Assignfile(fail," отчет .txt");

Append(fail);

Writeln(fail);

Writeln(fail," Расчет методом Ньютона ");

writeln(fail,"Точность расчета = ",t:10:7);

Writeln(fail,"Начальное приближение:a = ",a:8:3," b = ",b:8:3);

writeln(fail, " Найден корень : x = ",cor:8:3, " y=f(x)= ",f(cor):8:6);

writeln(fail, "Количество итераций = ",n);

Closefile(fail);

end;

end.


Изображение окна приложения

Первоначальный интерфейс имеет следующий вид:

После выполнения расчетов при E <= 0,001:

В качестве отчета был сформирован файл «Отчет. txt .»:


Анализ полученных результатов

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

В электронных таблицах был найден корень уравнения с помощью двух встроенных возможностей «Подбор параметра» и «Поиск решения» , при этом «Поиск решения» все же дал более точное значение. Результаты практически совпали с результатами в Matlab .

Для поиска корня в среде Delphi пользователь имеет возможность ввести точность вычисления с клавиатуры. Тестирование программы показало, что при одной и той же заданной точности вычисления метод Ньютона находит искомое значение при меньшем числе итераций.

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


Литература.

  1. Амосов А.А. и др. вычислительные методы для инженеров М., Высшая школа, 1994.
  2. Фаронов В.В. Delphi. Программирование на зыке высокого уровня

3 . Уокенбах Д . Microsoft Office Excel 2007. Библия пользователя

Волков В.Б. Понятный самоучитель Excel 2010

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

§ 4.1. Постановка задачи. Основные этапы решения

1. Постановка задачи.

Задача отыскания корней нелинейного уравнения с одним неизвестным вида

имеет многовековую историю, но не потеряла свою актуальность и в наши дни. Она часто возникает как элементарный шаг при решении различных научных и технических проблем. Напомним, что корнем (или решением) уравнения (4.1) называется значение х, при котором

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

Корень х уравнения (4.1) называется простым, если противном случае (т. е. в случае корень х называется кратным. Целое число назовем кратностью корня х, если для Геометрически корень х соответствует точке пересечения графика функции с осью Корень х является простым, если график пересекает ось под ненулевым углом, и кратным, если пересечение происходит под нулевым углом. Функция график который изображен на рис. 4.1, имеет четыре корня. Корни простые, кратные.

Задача отыскания простых корней является существенно более простой (и чаще встречающейся), чем задача отыскания кратных корней. В действительности большинство методов решения уравнения (4.1) ориентировано именно на вычисление простых корней.

2. Уточнение постановки задачи.

В конкретной задаче часто интерес представляют не все корни уравнения, а лишь некоторые из них. Тогда постановку задачи уточняют, указывая на то, какие из корней подлежат определению (положительные корни, корни из заданного интервала, максимальный из корней и т.д.).

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

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

уравнений пятой и более высоких степеней таких формул не существует. Этот замечательный факт, известный как теорема Абеля, был установлен в 30-е годы XIX в. Н. Абелем и Э. Галуа.

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

Пример 4.1. Предположим, что исследование некоторого явления привело к необходимости решить уравнение

Воспользовавшись формулами (3.2) для корней квадратного уравнения, получим значения Найдены ли нами точные значения параметра Очевидно, нет. Скорее всего коэффициенты уравнения (4.3) известны приближенно и в лучшем случае они представляют округленные значения "истинных" коэффициентов. В действительности можно лишь утверждать, что

Предположим теперь, что "истинный" вид уравнения (4.3) таков: Тогда точные значения параметра можно вычислить по формуле Однако она лишь указывает на то, какие операции и в каком порядке следует выполнить. В данном случае точное вычисление по формуле невозможно, так как она содержит операцию извлечения квадратного корня. Вычисленные по ней значения неизбежно окажутся приближенными.

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

В данной главе под задачей отыскания решений уравнения (4.1) будем понимать задачу вычисления с заданной точностью конечного числа подлежащих определению корней этого уравнения.

3. Основные этапы решения.

Решение задачи отыскания корней нелинейного уравнения осуществляют в два этапа. Первый этап называется этапом локализации (или отделения) корней, второй - этапом итерационного уточнения корней.

Локализация корней. Отрезок содержащий только один корень х уравнения (4.1), называют отрезком локализации корня х. Цель этапа локализации считают достигнутой, если для каждого из подлежащих определению корней удалось указать отрезок локализации (его длину стараются по возможности сделать минимальной).

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

Способы локализации корней многообразны, и указать универсальный метод не представляется возможным. Иногда отрезок локализации известен либо он определяется из физических соображений. В простых ситуациях хороший результат может давать графический метод (см. пример 4.2). Широко применяют построение таблиц значений функций вида При этом способе локализации о наличии на отрезке корня судят по перемене знака функции на концах отрезка (см. пример 4.3). Основанием для применения указанного способа служит следующая хорошо известная теорема математического анализа.

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

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

Дело в том, что в малой окрестности такого корня (например, корня на рис. 4.1) функция имеет постоянный знак.

Важно подчеркнуть, что далеко не всегда для успешного отыскания

корня х уравнения (4.1) необходимо полное решение задачи локализации. Часто вместо отрезка локализации достаточно найти хорошее начальное приближение к корню х. Пример 4.2. Локализуем корни уравнения

Для этого преобразуем уравнение к виду и построим графики функций (рис. 4.2). Абсциссы точек пересечения этих графиков являются корнями данного уравнения. Из рис. 4.2 видно, что уравнение имеет два корня и расположенные на отрезках и . Убедимся, что функция принимает на концах указанных отрезков значения разных знаков. Действительно, Следовательно, в силу теоремы 4.1 на каждом из отрезков и находится по крайней мере один корень.

Пример 4.3. Локализуем корни уравнения

Для этого составим таблицу значений функции на отрезке с шагом 0.4.

Таблица 4.1 (см. скан)

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

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

Общее представление об итерационных методах и основные определения были даны в § 3.3. Введем дополнительно некоторые определения.

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

Скорость сходимости - одна из важнейших характеристик итерационных методов. Говорят, что метод сходится со скоростью геометрической прогрессии, знаменатель которой если для всех справедлива следующая оценка:

Как нетрудно видеть, из оценки (4.5) действительно вытекает сходимость метода.

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

где постоянные. В этом случае число называют порядком сходимости метода. Если то говорят, что метод обладает линейной скоростью сходимости в указанной -окрестности корня. Если то принято говорить о сверхлинейной скорости сходимости. При скорость сходимости называют

Поделиться