23.04.2017, 00:09 | #31 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
P.S. Кстати, библиотеки у меня изрядные: спецфункции и т.п. Поскольку нужны реально. А вот особой потребности, скажем, в Ln(π) как-то вот не испытываю. Извините. |
|
23.04.2017, 01:20 | #32 (permalink) | |
Member
Регистрация: 04.12.2016
Сообщений: 131
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3445
|
Цитата:
if Abs(x1 - x2) > 0.0000001 then Иначе можете нарваться на ситуацию, когда 0.1 + 0.2 != 0.3 Простите за оффтоп. В Паскале с его синтетическим типом Real вообще, на мой скромный взгляд, беда. Он ни аппаратно не поддерживается, да ещё и требует затрат времени на конвертации. А при подключении поддержки сопроцессора так вообще превращается в Extended! На эти грабли я наступил впервые ещё в университете в 90-ые. Чего потом удивляться что значение косинуса вычисляется по-разному? Не зря чуваки из Sun Microsystems очень долго пилили свою Java чтобы обеспечить одинаковые результаты вычислений на всех поддерживаемых платформах. |
|
23.04.2017, 10:35 | #35 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
23.04.2017, 11:48 | #37 (permalink) |
Member
Регистрация: 04.12.2016
Сообщений: 131
Сказал(а) спасибо: 25
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3445
|
Ну, если рассчитывать траекторию полёта космического аппарата куда-нибудь в пояс Койпера, то вполне возможно, потребуется точность выше 12 знаков, но для большинства применений и 6, а то и 3 хватит. Правда, автор темы не озвучил никаких особых требований.
Точный вещественный нуль можно получить только если задать константу 0 либо вычесть друг из друга два одинаковых вещественных числа (которые, в свою очередь, точно можно задать лишь константами). Результаты любых математических вычислений с вещественными числами может быть лишь приблизительным и очень сильно зависит от самих чисел из-за внутреннего представления. |
23.04.2017, 13:23 | #39 (permalink) |
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): ΔV,V0,R - константы, что у меня есть; с - фиксированная при определенном Т, варьируется от 0 до 1 (желаемая точность определения 0.01) ΔS, U - константы, которые следует определить, неизменны при всех Т. ΔS, U, c(T) и новая константа ΔЕ, которую также надо найти, должны удовлетворять следующим условиям: Формула (2): Итак первая производная формулы 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 |
23.04.2017, 13:59 | #40 (permalink) |
Member
Регистрация: 18.05.2015
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Забыл добавить, что первая и вторая производные частные по с.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|