Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Можно воспользоваться показанным ниже методом. Он возвращает одну из строк
LITTLEBIGOTHERlNdef endianness num = 0x12345678 little = "78563412" big = "12345678" native = [num].pack('1') netunpack = native.unpack('N')[0] str = "%8x" % netunpack case str when little "LITTLE" when big "BIG" else "OTHER" endendputs endianness # В данном случае печатается "LITTLE"Этот прием может оказаться удобным, если, например, вы работаете с двоичными данными (скажем, отсканированным изображением), импортированными из другой системы.
5.21. Численное вычисление определенного интеграла
Я очень хорошо владею дифференциальным и интегральным исчислением…
Для приближенного вычисления определенного интеграла имеется проверенная временем техника. Любой студент, изучавший математический анализ, вспомнит, что она называется суммой Римана.
Приведенный ниже метод
integratedef integrate(x0, x1, dx=(x1-x0)/1000.0) x = x0 sum = 0 loop do y = yield(x) sum += dx * y x += dx break if x > x1 end sumenddef f(x) x**2endz = integrate(0.0,5.0) {|x| f(x) }puts z, "n" # 41.7291875Здесь мы опираемся на тот факт, что блок возвращает значение, которое может быть получено с помощью
yieldx0x1f(x)=x/(x-3)x=3Призвав на помощь полузабытые знания об интегральном исчислении, мы могли бы вычислить, что в данном случае результат равен примерно
41.666dxНапоследок отметим, что подобная методика более полезна для действительно сложных функций, а не таких простых, как
f(x) = x**25.22. Тригонометрия в градусах, радианах и градах
При измерении дуг математической, а заодно и «естественной» единицей измерения является радиан. По определению, угол в один радиан соответствует длине дуги, равной радиусу окружности. Немного поразмыслив, легко понять, что угол 2π радиан соответствует всей окружности.
Дуговой градус, которым мы пользуемся в повседневной жизни, — пережиток древневавилонской системы счисления по основанию 60: в ней окружность делится на 360 градусов. Менее известна псевдометрическая единица измерения град, определенная так, что прямой угол составляет 100 град (а вся окружность — 400 град).
При вычислении тригонометрических функций в языках программирования по умолчанию чаще всего используются радианы, и Ruby в этом отношении не исключение. Но мы покажем, как производить вычисления и в градусах, и в градах для тех читателей, которые по образованию не инженеры, а по происхождению не древние вавилоняне.
Поскольку число любых угловых единиц в окружности — константа, можно легко переходить от одних единиц к другим. Мы определим соответствующие константы и будем пользоваться ими в коде. Для удобства поместим их в модуль Math.
module Math RAD2DEG = 360.0/(2.0*PI) # Радианы в градусы. RAD2GRAD = 400.0/(2.0*РI) # Радианы в грады.endТеперь можно определить и новые тригонометрические функции. Поскольку мы всегда преобразуем в радианы, то будем делить на определенные выше коэффициенты. Можно было бы поместить определения функций в тот же модуль Math, но мы этого делать не стали.
def sin_d(theta) Math.sin(theta/Math::RAD2DEG)enddef sin_g(theta) Math.sin(theta/Math::RAD2GRAD)endФункции
costanС функцией
atan2
