Показ дописів із міткою половинное деление. Показати всі дописи
Показ дописів із міткою половинное деление. Показати всі дописи

субота, 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. По научному метод половинного деления называется «дихотомия», так что выполнив работу вы с полным правом можете употреблять это мудрёное слово :)