Полезные мелочи

Погрешности присутствуют при работе с любыми действительными (не целыми). Компьютер не является исключением. Как компьютер округляет числа?

Для действительного числа (тип DOUBLE) в компьютере выделено место для хранения около 16-и десятичных знаков. Какие законы математики не выполняются для таких чисел?

Относительная погрешность представления действительных числа в компьютере (тип DOUBLE) составляет порядка \(10^{-16}\). Много это или мало?

Задания

  1. Вычислите выражения: «x = 1/3» и «x=1/3.0» в чем разница? Почему результаты различаются?

  2. Выполните программу и объясните результат.
    a = 1e8
    b = 6.02e23
    
    print 'a = ',a
    print 'b = ',b,'\n'
    
    print 'b-(b-a) = ',b-(b-a)
    print 'b-b+a = ', b-b+a,'\n'
    
    print '(b+a)-b-a = ',(b+a)-b-a
    print '(b+a)-a-b = ',(b+a)-a-b,'\n'
    
    print 'b-(b-a/4) = ',b-(b-a/4)
    print 'b-b+a/4 = ', b-b+a/4
    
  3. Вы хотите на компьютере вычислить траектории движения большого числа атомов. Для вычислений используете стандартнй тип DOUBLE. Начальные положения атомов соответствует простой кубической решетке с параметром 1,0. Какое максимальное число атомов можно использовать в вычислениях если при смещении атомов допустим шаг не более 0,01 параметра решетки? Можно ли использовать такое моделирование для работы с 1 молем частиц (\(6,022*10^{23}\) частиц)?

Подсказки

  1. Используйте функцию type(), чтобы узнать тип данных.
  2. Попробуйте изменять параметры в программе. Что происходит?
  3. Рассмотрите одну из осей модели. Вдоль нее размщается \(\sqrt[3]{N}\) частиц. Найдите координату последней частицы. Можно ли ее сдвинуть на 0,01 параметра решетки? Учтите, что координаты могут быть отрицательны. Что изменится если все три координаты будут отличны от нуля?