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

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

#1 Опубликовано: 20.03.2014 04:14:38
213052500

213052500

0 сообщений из 8 понравились пользователям.

Группа: User

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

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

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: 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 пользователям понравился этот пост
Медведев Виктор 31.03.2014 07:52:00
#3 Опубликовано: 20.03.2014 06:48:27
213052500

213052500

0 сообщений из 8 понравились пользователям.

Группа: User

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

Думаю, будет понятно.
Вопрос 3.jpg
#4 Опубликовано: 20.03.2014 07:03:41
213052500

213052500

0 сообщений из 8 понравились пользователям.

Группа: User

Черт подери, Вы правы!
#5 Опубликовано: 20.03.2014 07:08:03
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

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

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

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

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

213052500

0 сообщений из 8 понравились пользователям.

Группа: User

Согласен с Вами. Будем исправлять книги.
#7 Опубликовано: 21.03.2014 17:36:49
Санёк

Санёк

0 сообщений из 5 понравились пользователям.

Группа: User

я тоже заметил этот баг два дня назад,
для примера можете просто 1°С+1°С= ... и получается интересный ответ.
#8 Опубликовано: 21.03.2014 17:57:53
Mike Kaganski

Mike Kaganski

184 сообщений из 434 понравились пользователям.

Группа: User

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

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

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

Санёк

0 сообщений из 5 понравились пользователям.

Группа: User

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

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