субота, 14 травня 2011 р.

Решение уравнений методом половинного деления.

Эта тема выносится на рубежный контроль и в экзаменационные вопросы.
Дано уравнение
Необходимо найти его корень с точностью до 4 знаков после запятой.
Как бы мы вычисляли корень вручную:
Оцениваем, что корень уравнения лежит между нулём и десятью, (т.к. и ). Значит 0<х<10. Находим середину интервала: (10+0)/2=5 и подставляем пятёрку в уравнение вместо х.
. Значит 0<х<5. Опять находим середину: (0+5)/2=2,5 и пробуем:
. Значит 0<х<2,5. Снова находим середину: (0+2,5)/2=1,25 и подставляем
. Т.к. теперь знак <, то двигается левая граница промежутка и 1,25<х<2,5. Теперь подставляем в равнение число (1,25+2,5)/2=1,875
и 1,25<х<1,875. Далее будем получать такие промежутки:
1,5625<х<1,875
1,5625<х<1,7188
1,6407<х<1,7188
1,6798<х<1,7188
1,6798<х<1,6993
1,6798<х<1,6896
1,6847<х<1,6896
1,6872<х<1,6896
1,6872<х<1,6884
1,6878<х<1,6884
1,6878<х<1,6881
1,6878<х<1,6880
1,6879<х<1,6880
Следовательно, x=1,6879….
Теперь запишем наше решение в виде алгоритма.
  1. Нужно найти два числа (А и В) такие, чтобы корень уравнения находился между ними. Эти числа будет вводить пользователь.
  2. Нужно определить, неравенство с каким знаком (больше или меньше) получится из уравнения, если в него подставить число А (пусть это будет переменная Z, она будет равна -1 при знаке < и 1 – при знаке >)
  3. Нужно найти точку С, середину отрезка [A;B] по формуле C=(A+B)/2 и подставить его в уравнение.
  4. Если знак получившегося неравенства будет таким же, как и при подстановке в него числа А, то корень находится на промежутке [C;B], в противном случае корень – на промежутке [A;C]. Значит, в первом случае левая граница промежутка становится равной С: А, а во втором – правая: В=С
  5. Если разность B-A больше требуемой точности (для четырёх знаков после запятой это 0,0001), то перейти к пункту 3 алгоритма, иначе – вывести решение.
Теперь можно писать программу
10 PRINT “RESHAEM URAVNENIJE X^3+9X=20”
20 PRINT “VVEDITE LEVUJU GRANICU PROMEZHUTKA”
30 INPUT A
40 PRINT “VVEDITE PRAVUJU GRANICU PROMEZHUTKA”
50 INPUT B
60 IF A^3+9*A>20 THEN Z=1 ELSE Z=-1
70 C=(A+B)/2
80 Y=C^3+9*C
90 IF (Y-20)*Z>0 THEN A=С ELSE B=C
100 PRINT A;”<х<”;B
110 IF (B-A)>0.0001 THEN GOTO 70
120 PRINT “X=”;(A+B)/2
Пояснения:
Строки 10-50 – ввод краёв интервала, где находится корень уравнения (п.1. алгоритма)
Строка 60 – находим знак неравенства в левом краю промежутка (п.2. алгоритма)
Строка 70 – находим середину отрезка
Строка 80 – подставляем это значение в уравнение (п.3. алгоритма)
Строка 90 – когда выражение (Y-20)*Z будет больше нуля? Тогда, когда Y>20 и Z=1 и когда Y<20 и Z=-1, т.е. тогда, когда знак неравенства при подстановке в него числа С такой же, как и при подстановке числа А. Это и требовалось в п.4. алгоритма
Строка 100 – выпечатываем, каким путём мы подбираемся к корню
Строка 110 – проверка, не получена ли уже требуемая точность (п.5 алгоритма)
120 – печатаем результат, ещё раз усреднив промежуток.
Для того, чтобы программа решала другое уравнение с другой точностью, нужно внести изменения в строки 10, 60, 80, 90 и 110
Задания для самостоятельной работы
уравнение
точность
1
x-10sinx=15
5 знаков после запятой
2
x+2cosx=3
3 знака после запятой
3
4 знака после запятой
P.S. По научному метод половинного деления называется «дихотомия», так что выполнив работу вы с полным правом можете употреблять это мудрёное слово :)

10 коментарів:

  1. Ну как, получается? Всё понятно? Если что непонятно, спрашивайте - отвечу.

    ВідповістиВидалити
  2. Уважаемый Алексей Владимирович!
    Курсанты Чумаченко Л. и Дербинёва Л. группа 401
    Самостоятельная работа по теме "Дихотомия"
    В первом уравнении у нас получилось х=9,95373
    Второе уравнение у нас не получилось, а третее мы не успели!!!
    P.S. Когда дорешаем - пришлем Вам ответ!

    ВідповістиВидалити
  3. 1
    47<x<89
    x=88.95899
    2
    20<x<30
    x=29.960
    3
    42<x<45
    x=44,9531
    Курсанты 401 группы: Балаш А.Н., Попова Д.А.

    ВідповістиВидалити
  4. Александр Владимирович!!!!
    группа 401 Цибрий Л. и Залива М.
    Тема "Дихотомия"

    1 уровнение

    34<x<89
    x=88.97314

    2 уровниние

    20<x<30
    x=29.960

    3 уровнеение

    42<x<45
    x=44.9531

    ВідповістиВидалити
  5. Болвинова А., Париенко А.

    Уравнение 1.
    47<x<56
    x=55.99997
    Уравнение 2.
    20<x<30
    x=29.960
    Уравнение 3.
    42<x<45
    x=44.9531

    ВідповістиВидалити
  6. Принято, молодцы! Но кое-где есть ошибки, стоит. проверить внимательно программу, которую вы переписали в конспект.

    60я рота, это и вас касается - не торопитесь бездумно списывать приведённые здесь ответы ;) Тут есть и правильные и неправильные.

    ВідповістиВидалити
  7. задание 1

    47<x<56
    x=55.99997
    задание 2

    20<x<30
    x=29.960
    задание 3

    42<x<45
    x=44.953124

    ГРУПА 802
    Семененко Белов Погорелюк Гусак

    ВідповістиВидалити
  8. А вы пробовали подставить полученные вами результаты в уравнения?

    ВідповістиВидалити
  9. Уравнение 1.
    47<x<56
    x=55.99996
    Уравнение 2.
    20<x<30
    x=29.960
    Уравнение 3.
    42<x<45
    x=44.9531

    802 ГРУППА.
    МОГИЛКО,КОРОПОВА,ШАПОШНИКОВА

    ВідповістиВидалити
  10. Так, ну молодцы, что оправили. Но опять-таки, повторяю свой вопрос.

    Вы пробовали подставить полученные вами результаты в уравнения?

    ВідповістиВидалити