Мой сайт
Главная
Вход
Регистрация
Четверг, 07.08.2025, 05:18Приветствую Вас Гость | RSS
Меню сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

ЗАДАНИЕ 2

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

Методические указания к выполнению задания 2

 При решении любое нелинейное уравнение, например , пред-варительно приводится к виду , т. е. , при этом функции могут быть алгебраическими, у которых над аргументом х выполняются лишь арифметические операции, и трансцендентными, которые содержат, кроме того, показательные, логарифмические, тригонометрические функции аргумента х. Такие уравнения далеко не всегда можно решить точно, а для практических расчётов точное решение не всегда является обязательным. 
Поэтому особое значение с развитием вычислительной техники приобрели способы приближённого вычисления корней и оценки их точности. 
Данная процедура состоит из двух этапов: 1) отделение корней, т. е.. выделение таких отрезков [a, b], в каждом из которых находится только один корень уравнения или нахождение первоначальных приближений корней; 
2) уточнение корней, т. е.. нахождение их на найденных отрезках с заданной степенью точности.
 1. Простейшим способом отделения корней является графический. На графике функции определяются отрезки [a, b], в пределах которых лежат точки пересечения функции с осью 0х, являющимися приближенными значениями корней. Например, при решении уравнения сначала вычисляем значения функции , по заданным значениям аргумен-та х (таблица 6) и затем по полученным данным строим график (рисунок 12).

Как видно из графика, уравнение имеет 3 корня на отрезках [–2, –1],
[–1,0] и [1,2].
 Отделить корни можно также программным способом. Для составления алгоритма решения данной задачи рассмотрим поведение функции на интервале от хнач до хкон с шагом h (рисунок 13)

Рисунок 13 График функции при наличии корней

 Как видно из рисунка, корни уравнения находятся в точках А, В и С, где . Данные точки можно обнаружить, рассчитывая значения функ-ции от хнач до хкон с шагом h и наблюдая за изменением её знака. Так, в точке А значение функции изменяется с «» на «+», а в точке В с «+» на «» и т. д. Обнаружить изменение знака функции можно путём перемножения двух её значений, вычисленных от аргументов х, находящихся в соседних точках на расстоянии h одно от другого. Для точки А, например, это будут значения функции D и F.
 Отделение корней по рассмотренному методу реализует алгоритм, представленный на рисунке 14.

В блоке 2 вводятся начальное значение аргумента функции хнач, конечное хкон и шаг его изменения h.
 В блоке 3 принимается текущее значение х за хнач и количество корней 
m = 0, а в блоке 4 вычисляется первоначальное значение функции у1 при х = хнач.
Блок 5 организует цикл по изменению х от х + h до хкон с шагом h. В блоке 6 вычисляется очередное значение функции в точке ( ). Затем в блоке 7 проверяется, не пересекла ли функция ось ОХ. В случае отсутствия пересечения полученное значение у в блоке 10 запоми-нается как у1, а в блоке 5 значение х опять изменяется на величину шага h. Затем в блоке 6 снова вычисляется у и в блоке 7 проверяется функция на из-менение знака. Так как в этом случае (точки D и F на рисунок 4), то в блоке 8 выводятся значения аргумента х  h и x, в пределах которых нахо-дится корень уравнения, а в блоке 9 фиксируется увеличение количества найденных корней на единицу. Циклический процесс повторяется до приня-того конечного значения аргумента хкон. В результате будут найдены отрезки, на которых находятся корни нелинейного уравнения (около точек А, В, С на рисунок 13).
 Программа на языке Basic, реализующая данный алгоритм для уравне-ния , будет следующей:
 PRINT Введите Xнач, Xкон, H
 INPUT XN, XK, H
 X = XN: M = 0
 Y1 = X*X*X 3*X  1
 FOR X = X + H TO XK STEP H
 Y = X*X*X  3*X  1
IF Y*Y1 < 0 THEN GOTO 2 ELSE GOTO 5
2 PRINT “A=”; X  H; “B=”; X
M = M + 1
5 Y1= Y
NEXT X
IF M = 0 THEN PRINT “корней нет” ELSE PRINT “корней=”;M
END

Уточнение корня, найденного на отрезке [а, b], осуществляется одним из следующих методов: деления отрезка пополам, хорд (секущих), касатель-ных (Ньютона), итераций. Рассмотрим некоторые из них, например, метод деления отрезка пополам (рисунок 15). Интервал [а, b] делится пополам и в найденной точке (с = (a + b) / 2) вычисляется значение функции y = f (с). Если y  е, где е – заданная точность, то C является корнем уравнения, т.к. при полученном C функция y = f (C) меньше точности е. В противном случае вы-бираем один из отрезков - или [а, (а + b) / 2] (рисунок 15 а), или [(а + b) / 2, b] (рисунок 15 б), на концах которого f (x) имеет противоположные знаки. 
Выбранный интервал снова делим пополам (с = (a + b) / 2) и вычисляем зна-чение функции y = f (с). Процесс повторяется до тех пор, пока не будет полу-чено значение y  е. 

Сказанное выше реализуется следующим алгоритмом (рисунок 16), где в блоке 2 вводятся полученные при отделении корней границы интер-вала [а, b] и точность вычисления корня е, а в блоке 3 вычисляется значе-ния функции у1 при х = а. Затем в блоке 4 вычисляется середина интервала [а, b], а в блоке 5 – значение функции в середине данного интервала при 
с = (a + b) /2. Если при проверке в блоке 6 оказывается y  е, то с – ко-рень уравнения, который выводится в блоке 10. Если же условие y  е не выполняется, то в блоке 7 определяется: какую половину отрезка [а, b] ос-тавить для дальнейшего нахождения корня. Если , то левую при-своением b = с (блок 9), а если же нет, то правую присвоением a = с (блок 8) и затем в блоке 4 опять определяется середина нового суженного интер-вала и процесс повторяется до тех пор, пока значение у станет меньше за-данной точности е.


Программа на языке Basic, реализующая данный алгоритм для уравне-ния , будет следующей:

  PRINT “Введите A, B, E “
  INPUT A, B, E
  Y1 = A*A*A  3*A  1
  4 С = (A + B)/2
  Y = С*С*С  3*С  1
  IF ABS(Y) < E GOTO 10 
  IF Y*Y1< 0 THEN B = С ELSE A = С
  GOTO 4
  10 PRINT “корень=”; С
  END

При уточнении корня методом итераций в уравнении неизвестное вы-ражают через самого себя, т. е.. уравнение приводится к виду . То-гда рассмотренное выше уравнение преобразуем к виду .
Выберем произвольную точку х внутри отрезка [а, b], на котором нахо-дится корень уравнения, и подставим это значение в правую часть преобразо-ванного уравнения, получив соответственно . Затем, приняв х равным полученному ( ), опять проведём вычисления нового xn.
Этот процесс последовательного вычисления значений по формуле будет продолжаться до тех пор, пока разность между вычисленным и пре-дыдущим х по модулю не станет меньше заданной точность е ( ). Рассмотренное выше нахождение корня реализуется следующим алгоритмом (рисунок 17).
Метод итераций применим только в том случае, если вычислительный процесс сходится (т. е. от итерации к итерации абсолютная разность будет уменьшаться. Для этого необходимо провести преобразования исход-ного уравнения к виду так, чтобы выполнялось условие для любого значения х, принадлежащего отрезку [a, b].
Для предотвращения зацикливания в случае расходящегося процесса в схему алгоритма блоком 2 вводится параметр m, обеспечивающий ограни-чение на максимальное число итераций. Количество итераций подсчитыва-ется в блоке 5 и при превышении заданного числа m блок 7 прерывает про-цесс поиска корня. Уточнение корней методом касательных подробно рас-смотрено в [4].


Поиск

Друзья сайта


Copyright MyCorp © 2025Сделать бесплатный сайт с uCoz