Баг с температурой

Баг с температурой - Проблема с цельсиями - Messages

#1 Posted: 3/20/2014 4:14:38 AM
213052500

213052500

0 likes in 8 posts.

Group: User

SMath Studio Desktop v.0.97 (сборка: 5154). MS Windows 7 x64

1. Перевод отрицательных С в К неверен.
2. Разность положительных и отрицательных С неверна.
3. В больших формулах единицы измерения С переводятся в К. При попытке прописать С получается: (К/С)*С
Температурный баг.jpg
#2 Posted: 3/20/2014 5:54:24 AM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Нет, это не баг, это особенность приоритета операций программы.
В ней приоритет унарного минуса (-X) равен приоритету бинарного (X-Y) и меньше приоритета умножения (в частности, назначение единицы измерения - это операция умножения). Т.е. -10°C = -(10°C) = -((10+273.15)*K) = -(283.15*K).
Для корректного задания отрицательных температур по Цельсию необходимо заключать всё числовое значение вместе с минусом в скобки, задавая явный порядок вычисления: (-10)°C.

Хотя этот приоритет и необычен (в большинстве программ это не так), однако никакими законами и нормативами этот порядок не оговорён, так что это - решение автора (хотя и приводящее к частым повторениям одного и того же на этом форуме, например http://ru.smath.info/forum/yaf_postst1546_Izmienieniie-prioritieta-unarnogho-minusa.aspx).

Что касается пункта 3, нужен пример. Мне кажется, что Вы просто забыли апостроф перед градусами.

P.S. А насчёт последней строки Вашего скриншота - это правильно в принципе. Температура в градусах Цельсия - это вариант отображения абсолютного значения некой температуры. Разности температур НЕЛЬЗЯ представлять градусами Цельсия, а то, что у нас вся техническая литература (и в т.ч. нормативная) нафарширована температурными разностями, выраженными в градусах Цельсия - это неумение авторов строго мыслить и незнание основ метрологии. Дескать, всё равно размер градуса один, чего ж тут мудрить?
А ответьте на вопрос, чему должна равняться сумма 5°C+5°C? Все единицы перед расчётом приводятся к базовым, в данном случае - к Кельвинам. Я тут изобразил нагрев тела, имеющего температуру 5°C, на 5 градусов? Или сумму приращений температуры, например, за счёт конвективного и радиационного теплообменов? В первом случае это выражение должно читаться как (273,15+5)K + 5К, а во втором - как 5K + 5K! А с чего вдруг? И как программа это осознает?
С уважением, Михаил Каганский
1 users liked this post
Медведев Виктор 3/31/2014 7:52:00 AM
#3 Posted: 3/20/2014 6:48:27 AM
213052500

213052500

0 likes in 8 posts.

Group: User

Насчет пункта 3.

Думаю, будет понятно.
Вопрос 3.jpg
#4 Posted: 3/20/2014 7:03:41 AM
213052500

213052500

0 likes in 8 posts.

Group: User

Черт подери, Вы правы!
#5 Posted: 3/20/2014 7:08:03 AM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

А, понятно. А зачем? Вы хотите увидеть другое числовое значение? Или это просто желание оформить "как по книжке"? Правильно переводить не в C*кДж, а в K*кДж.

Здесь программа всё правильно делает. Перевод обычных единиц измерения - например, длин - это просто операция домножения на некий переводной коэффициент. Например, 1 дюйм = 25,4 мм.

А перевод между Цельсием и Кельвином - это операция домножения на 1 (поскольку размер величина единицы одинакова) и прибавления 273,15, т.е. это сложная операция. И опять-таки, градусы Цельсия - это не просто абстрактные градусы, а вполне конкретная степень нагретости. Каждый раз, когда Вы видите запись X°C, это означает "на X кельвинов больше, чем ноль по Цельсию". В таких единицах нельзя представлять Ваше произведение.

Не очень представляю физическую сущность этого примера (может быть, это именно просто пример?), но, скажем, кДж/(кг*К) - это количество энергии, требуемое для изменения температуры единицы массы на 1 К. А кДж/(кг*°C) - это невообразимый фарш, который можно попытаться выразить как "количество энергии, требуемое для изменения температуры единицы массы на 1 градус выше нуля по Цельсию" - это как?
С уважением, Михаил Каганский
#6 Posted: 3/20/2014 7:38:01 AM
213052500

213052500

0 likes in 8 posts.

Group: User

Согласен с Вами. Будем исправлять книги.
#7 Posted: 3/21/2014 5:36:49 PM
Санёк

Санёк

0 likes in 5 posts.

Group: User

я тоже заметил этот баг два дня назад,
для примера можете просто 1°С+1°С= ... и получается интересный ответ.
#8 Posted: 3/21/2014 5:57:53 PM
Mike Kaganski

Mike Kaganski

184 likes in 434 posts.

Group: User

Не знать - это нормально. Это здорово, если человек чего-то не понимает и пытается это узнать, спрашивая других.

Но всегда странно видеть, как человек открывает страницу форума, где всего в шести сообщениях раскрывается вопрос, но не даёт себе труда просто прочитать эти сообщения, и отправляет бессмысленное повторение неправильных утверждений ("это - баг" ) и в точности разобранных примеров (1°С+1°С= ...).

А вот интересно, что бы Вы ожидали от конструкции типа 1°С+1°F, и чем ответ должен отличаться для 1°F+1°С?
С уважением, Михаил Каганский
#9 Posted: 3/22/2014 8:16:04 AM
Санёк

Санёк

0 likes in 5 posts.

Group: User

Это просто, что когда делаешь расчет в которой есть данные зависимые от температуры и потом сидишь и думаешь что не так как ответ не правильный и теряешь время для нахождения ошибки, а оказалось просто баг с температурой в програмке.

А вот интересно, что бы Вы ожидали от конструкции типа 1°С+1°F, и чем ответ должен отличаться для 1°F+1°С?
=> но никак ни минус
  • New Posts New Posts
  • No New Posts No New Posts