Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 23.04.2017, 00:09   #31 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Viewer Посмотреть сообщение
Паскаль не Ваш - потрудитесь приводить версию.
Вы забыли добавить "милсдарь", а также уведомить меня, что Вы к моим услугам.
Цитата:
Сообщение от Viewer Посмотреть сообщение
Давным давно надо определить свои константы, не зависящие от версии Pascal/Delphi/Lazarus/FreePascal и с большей точностью.
А эта сентенция к кому обращена? Ко мне? К разработчикам ЯП? Ежели ко мне, то мне почему-то кажется, что создание библиотек констант, функций, модулей и т.п. определяется моими в оных потребностями, а не абстракциями типа "давно пора".
P.S. Кстати, библиотеки у меня изрядные: спецфункции и т.п. Поскольку нужны реально. А вот особой потребности, скажем, в Ln(π) как-то вот не испытываю. Извините.
Vladimir_S вне форума   Ответить с цитированием
Старый 23.04.2017, 01:20   #32 (permalink)
Uncle Vasya
Member
 
Регистрация: 04.12.2016
Сообщений: 131
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3445
По умолчанию

Цитата:
Сообщение от Dimafania Посмотреть сообщение
К слову начал использовать Pi вместо 3.14 и подметил, что косинус 270 градусов паскаль почему-то считает некоректно. Мне выдает 3.63...Е-12
Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Это странно. Мой Паскаль выдает 1.897...Е-19.
Господа, да вы шутите? С очень высокой точностью вы оба получили нуль! Я уверен, что вы знаете как сравниваются вещественные числа, но если вдруг нет... Никогда не сравнивайте вещественные числа напрямую, только если не надо сравнивать на больше или меньше. Равенство вещественных чисел проверяют по вычитанием одного числа из другого, взятия модуля и сравнения с малой константой. Как-то так:

if Abs(x1 - x2) > 0.0000001 then

Иначе можете нарваться на ситуацию, когда

0.1 + 0.2 != 0.3

Простите за оффтоп.
В Паскале с его синтетическим типом Real вообще, на мой скромный взгляд, беда. Он ни аппаратно не поддерживается, да ещё и требует затрат времени на конвертации. А при подключении поддержки сопроцессора так вообще превращается в Extended! На эти грабли я наступил впервые ещё в университете в 90-ые. Чего потом удивляться что значение косинуса вычисляется по-разному? Не зря чуваки из Sun Microsystems очень долго пилили свою Java чтобы обеспечить одинаковые результаты вычислений на всех поддерживаемых платформах.
Uncle Vasya вне форума   Ответить с цитированием
Старый 23.04.2017, 01:26   #33 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Вы забыли добавить "милсдарь", а также уведомить меня, что Вы к моим услугам.
.
Вы хотите "на шпагах"?
Смешно, с Вашим Паскалем.
Если докажете, что он Ваш.
Viewer вне форума   Ответить с цитированием
Старый 23.04.2017, 03:39   #34 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
А вот особой потребности, скажем, в Ln(π) как-то вот не испытываю. Извините.
Это Вы извините, что напряг Вас с логарифмом Пи - это особая функция, что помогает входу члена в удлиненное влагалище.
Viewer вне форума   Ответить с цитированием
Старый 23.04.2017, 10:35   #35 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Uncle Vasya Посмотреть сообщение
Господа, да вы шутите? С очень высокой точностью вы оба получили нуль!
Не согласен. Е-19 - да, а вот Е-12 как-то IMHO многовато для нуля.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 23.04.2017, 10:40   #36 (permalink)
black88
Banned
 
Регистрация: 22.12.2015
Сообщений: 1,404
Сказал(а) спасибо: 45
Поблагодарили 10 раз(а) в 4 сообщениях
Репутация: 12622
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
IMHO многовато для нуля
Брадису расскажите с его 8-значными таблицами
black88 вне форума   Ответить с цитированием
Старый 23.04.2017, 11:48   #37 (permalink)
Uncle Vasya
Member
 
Регистрация: 04.12.2016
Сообщений: 131
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3445
По умолчанию

Ну, если рассчитывать траекторию полёта космического аппарата куда-нибудь в пояс Койпера, то вполне возможно, потребуется точность выше 12 знаков, но для большинства применений и 6, а то и 3 хватит. Правда, автор темы не озвучил никаких особых требований.

Точный вещественный нуль можно получить только если задать константу 0 либо вычесть друг из друга два одинаковых вещественных числа (которые, в свою очередь, точно можно задать лишь константами). Результаты любых математических вычислений с вещественными числами может быть лишь приблизительным и очень сильно зависит от самих чисел из-за внутреннего представления.
Uncle Vasya вне форума   Ответить с цитированием
Старый 23.04.2017, 12:25   #38 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от black88 Посмотреть сообщение
Брадису расскажите
И проронил я скупую мужскую слезу...
Vladimir_S вне форума   Ответить с цитированием
Старый 23.04.2017, 13:23   #39 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Друзья, поскольку я вижу, что здесь собрались действительно профессионалы своего дела, попрошу все таки вас предложить свое решение на мою задачу. В принципе программу я и сам уже написал в некоторых версиях, но вот видится мне, что вы можете предложить куда более оптимальное решение (ввиду большого кол-ва циклов программа считает очень долго).
Итак, у нас есть эксп. значения теплового расширения при ряде температур:
TEC:array [1..20] of Real = (-0.4E-6, -1.9E-6, -4E-6, -4.5E-6, -4.38E-6, -3.9E-6, -2.9E-6, -2.23E-6, -1.8E-6, -1.7E-6, -1.7E-6,
-1.9E-6, -2.1E-6,-2.4E-6, -2.78E-6, -2.9E-6, -2.95E-6, -3.12E-6, -3.25E-6, -3.22E-6);
T:array [1..20] of Integer = (20,28,40,50,60,70,80,90,100,110,120,130,140,150,1 60,170,180,190,200,210);

Задача подогонать модель под экспериментальные данные (т.е. по наименьшему среднеквадратическому отклонению).
Модельное тепловое расширение рассчитывается по формуле (1):
075c3-clip-7kb.png
ΔV,V0,R - константы, что у меня есть;
с - фиксированная при определенном Т, варьируется от 0 до 1 (желаемая точность определения 0.01)
ΔS, U - константы, которые следует определить, неизменны при всех Т.
ΔS, U, c(T) и новая константа ΔЕ, которую также надо найти, должны удовлетворять следующим условиям:
Формула (2):
45de2-clip-6kb.png
Итак первая производная формулы 2 должна быть равна нулю, вторая производная формулы (2) должна быть положительной. Р везде берется равное 1.
В результате программа должна находить ΔЕ, ΔS, U, фиксированные при всех Т, а также ряд значений с(Т), такими, чтобы среднеквадратическое отклонение параметра B (формула 1) от эксперименитального значения TEC было минимальным.
В случае если аналитического решения нет, то перебор должен быть в следующих диапазонах:
ΔS от -7 до 7 с шагом 0.01
ΔE от от -700 до 700 с шагом 1
U от 0 до 5000 с шагом 1
с от 0 до 1 с шагом 0.01
Dimafania вне форума   Ответить с цитированием
Старый 23.04.2017, 13:59   #40 (permalink)
Dimafania
Member
 
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Забыл добавить, что первая и вторая производные частные по с.
Dimafania вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:44.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.