Известно, что X = 11_4 + 3_5 + 101_2. Чему равно число X в десятичной системе счисления? Чему равно х в десятичной системе счисления, если х = 222_3 + 1111_2 + 10_5? Чему равно х в десятичной системе счисления, если х = 12_3 + 1111_3+110_2 + 13_5?
Анализ решений При х=0 функция 1/х терпит разрыв. При подходе к нулю слева она стремится к минус бесконечности, а справа - к плюс бесконечности. Первый вариант программы из-за суммирования на каждом шаге ошибок машинного округления пришел не к нулевому аргументу х, что привело к неточному вычислению значения функции (как видно по результату, аргумент не дошел до нуля слева). Во втором варианте аргумент вычислялся более точно, накопления суммы не было и при нуле мы получили именно "бесконечность".
Выводы Табуляция функций по второму варианту предпочтительнее. Но её недостатком является необходимость предварительного вычисления количества повторений цикла по известной формуле Int((b-a)/h)+1 и подготовка формулы для расчета текущего значения переменной в виде функции от параметра цикла.
1) 537218687454,427878₉ ⇒Х₂₇ Обратим внимание, что 9=3², 27=3³. Это дает возможность произвести перевод, пользуясь троичной системой счисления, как промежуточной. При записи в троичной системе счисления каждая девятиричная цифра кодируется двумя троичными, а двадцатисемиричная - тремя. Составим табличку перехода от девятиричной системы к троичной 0⇒00, 1⇒01, 2⇒02, 3⇒10, 4⇒11, 5⇒12, 6⇒20, 7⇒21, 8⇒22. И просто делаем подмену цифр. 537218687454,427878₉ = 12 10 21 02 01 22 20 22 21 11 12 11, 11 02 21 22 21 22 = 121021020122202221111211,110221222122₃ = 121 021 020 122 202 221 111 211,110 221 222 122₃ Перегруппировка нам понадобилась, чтобы четко выделить тройки разрядов для последующего перевода. Теперь нам нужна еще одна табличка - для перевода из троичной системы в двадцатисемиричную. 000⇒0, 001⇒1, 002⇒2, 010⇒3, 011⇒4, 012⇒5, 020⇒6, 021⇒7, 022⇒8, 100⇒9 101⇒A, 102⇒B, 110⇒C, 111⇒D, 112⇒E, 120⇒F, 121⇒G, 122⇒H, 200⇒I, 201⇒J, 202⇒K, 210⇒L, 211⇒M, 212⇒N, 220⇒O, 221⇒P, 222⇒Q
121 021 020 122 202 221 111 211,110 221 222 122₃ = G 7 6 H K P D M, C P Q H₂₇ = G76HKPDM,CPQH₂₇
ответ: 537218687454,427878₉ = G76HKPDM,CPQH₂₇
2) С шестнадцатиричной и восьмеричной системами счисления все так же, но проще, потому что в школах учат двоичные коды чисел от 0 до 15. 16=2⁴, 8=2³. Мы переходим от шестнадцатиричной системы счисления к двоичной, заменяя каждую цифру четырьмя битами (тетрадой), а потом разбиваем результат на тройки (триады) и каждую триаду заменяем восьмеричной цифрой. CFB5EE,D349C₁₆ = 1100 1111 1011 0101 1110 1110, 1101 0011 0100 1001 1100₂ = 110011111011010111101110,11010011010010011100₂ = 110 011 111 011 010 111 101 110,110 100 110 100 100 111 000₂ = 6 3 7 3 2 7 5 6, 6 4 6 4 4 7 0₈ = 63732756,646447₈
var
x:real;
begin
x:=-1;
while x<=2 do begin
Writeln('x=',x:4:1,' y=',1/x:0:10);
x:=x+0.2
end
end.
Решение
x=-1.0 y=-1.0000000000
x=-0.8 y=-1.2500000000
x=-0.6 y=-1.6666666667
x=-0.4 y=-2.5000000000
x=-0.2 y=-5.0000000000
x= 0.0 y=-18014398509482000.0000000000
x= 0.2 y=5.0000000000
x= 0.4 y=2.5000000000
x= 0.6 y=1.6666666667
x= 0.8 y=1.2500000000
x= 1.0 y=1.0000000000
x= 1.2 y=0.8333333333
x= 1.4 y=0.7142857143
x= 1.6 y=0.6250000000
x= 1.8 y=0.5555555556
x= 2.0 y=0.5000000000
2. Вариант с вычислением аргумента путем умножения
var
x:real;
i:integer;
begin
for i:=1 to 16 do begin
x:=0.2*(i-1)-1;
Writeln('x=',x:4:1,' y=',1/x:0:10)
end
end.
Решение
x=-1.0 y=-1.0000000000
x=-0.8 y=-1.2500000000
x=-0.6 y=-1.6666666667
x=-0.4 y=-2.5000000000
x=-0.2 y=-5.0000000000
x= 0.0 y=Infinity
x= 0.2 y=5.0000000000
x= 0.4 y=2.5000000000
x= 0.6 y=1.6666666667
x= 0.8 y=1.2500000000
x= 1.0 y=1.0000000000
x= 1.2 y=0.8333333333
x= 1.4 y=0.7142857143
x= 1.6 y=0.6250000000
x= 1.8 y=0.5555555556
x= 2.0 y=0.5000000000
Анализ решений
При х=0 функция 1/х терпит разрыв. При подходе к нулю слева она стремится к минус бесконечности, а справа - к плюс бесконечности.
Первый вариант программы из-за суммирования на каждом шаге ошибок машинного округления пришел не к нулевому аргументу х, что привело к неточному вычислению значения функции (как видно по результату, аргумент не дошел до нуля слева). Во втором варианте аргумент вычислялся более точно, накопления суммы не было и при нуле мы получили именно "бесконечность".
Выводы
Табуляция функций по второму варианту предпочтительнее. Но её недостатком является необходимость предварительного вычисления количества повторений цикла по известной формуле Int((b-a)/h)+1 и подготовка формулы для расчета текущего значения переменной в виде функции от параметра цикла.