2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6  След.
 
 Re: Вопрос по языку FORTRAN
Сообщение11.02.2014, 22:41 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Тут не всё так просто. Если сам физический процесс устроен так, что усиливает малые возмущения (экспоненциально) - то расчёты могут всего лишь честно отображать эту реальность.

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

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение12.02.2014, 18:32 
Аватара пользователя


08/02/14
53
Серпухов, Россия
ewert в сообщении #825403 писал(а):
на 10-м

Балаболите?

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение12.02.2014, 21:50 
Заслуженный участник


11/05/08
32166
x51 в сообщении #825650 писал(а):
Балаболите?

Не понял вопроса. Вы что, и впрямь считаете, что при грамотном программировании 115 эквивалентно 10 (ну хоть примерно)?...

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение13.02.2014, 01:10 
Заслуженный участник
Аватара пользователя


23/07/08
10887
Crna Gora
x51 в сообщении #825038 писал(а):
На работе когда высчитывали аксептанс квадрупольных линз для углерода за $ e $ взяли 2,71... и так до 12 знака, в результате аксептанс "уехал" на несколько миллиметров, а это, извините, в ускорительной технике - полный алес: пучок лижет стенку камеры, дозиметрия сходит с ума. И только при точности 117 знаков после запятой удалось более-менее попасть в аксептанс с точностью 300 микрон.
Вот интересно: ведь другие входные данные этих вычислений и близко не могли иметь такую точность (я имею в виду физические величины, а не $\pi$ или $\sqrt 2$). И ничего. А для $e$ такая точность понадобилась. Может, Вы думаете, что избыточная точность $e$ компенсировала недостаточную точность других величин? :P

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение13.02.2014, 21:07 
Аватара пользователя


08/02/14
53
Серпухов, Россия
svv в сообщении #825770 писал(а):
x51 в сообщении #825038 писал(а):
На работе когда высчитывали аксептанс квадрупольных линз для углерода за $ e $ взяли 2,71... и так до 12 знака, в результате аксептанс "уехал" на несколько миллиметров, а это, извините, в ускорительной технике - полный алес: пучок лижет стенку камеры, дозиметрия сходит с ума. И только при точности 117 знаков после запятой удалось более-менее попасть в аксептанс с точностью 300 микрон.
Вот интересно: ведь другие входные данные этих вычислений и близко не могли иметь такую точность (я имею в виду физические величины, а не $\pi$ или $\sqrt 2$). И ничего. А для $e$ такая точность понадобилась. Может, Вы думаете, что избыточная точность $e$ компенсировала недостаточную точность других величин? :P


А других величин не было, расстояния померяны вплоть до микрометров.
ewert в сообщении #825732 писал(а):
Не понял вопроса.

Где я писал про 10 м? Я писал про несколько мм.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение14.02.2014, 00:11 
Заслуженный участник
Аватара пользователя


23/07/08
10887
Crna Gora
x51 в сообщении #826041 писал(а):
расстояния померяны вплоть до микрометров
Но не до 117 знака!

Вы можете сказать: это чудовищное $e$ при расчетах на какую величину непосредственно умножается (делится, складывается, отнимается, возводится в степень)? Прошу Вас сразу ответить и на другой вопрос: чему примерно равна та величина и с какой точностью она известна.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение14.02.2014, 18:13 
Аватара пользователя


08/02/14
53
Серпухов, Россия
svv, $e$ возводится в степень $2\cdot\pi\cdot{E_0}\cdot{0,998c/{l\cdot{H_{35}}}}$, где число ПИ взято с точностью до 12 знака (больше оказалось не нужно, оно мало влияет); $l$ это длина промежутка на котором измеряется аксептанс, в метрах; $H_{35}$ это уровень магнитного поля 35-го блока, в Эрстедах; $E_0$ это энергия инжекции, в МэВ/нуклон; $0,998c$ скорость частицы в частях от скорости света (299792458м/с). Все это далее делится на магнитное поле, создаваемое септумом, для которого есть также величина эмиттанса, которая также учитывается (там тоже какой-то длинющий коэффициент, решаемая дробь, но длинная, если ее решить) и размеры камеры ускорителя (ионопровода).

Между протонами и ядрами углерода разница лишь в скорости частицы $0,998c$ для ядер углерода и $0.9999672c$ для протонов. Соответсвенно $E_0$ меряется просто в МэВ'ах для протонов.

Все это верно до гамма-скачка (перехода через критическую энергию, для нашего ускорителя это ~8 ГэВ), после уже все по-другому, но мы такой вариант не расчитываем, на людей (с медицинских целях) пучок с энергией выше 8 ГэВ направлять бессмысленно и беспощадно.
А физикам накласть на мусор (из-за воздействия пучка на стенки камеры), летящий помимо ускоряемых частиц и поэтому для них аксептансы промежутков считаются по грубой формуле, где число Эйлера взято с точностью до 8 знака.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение14.02.2014, 20:03 
Заслуженный участник
Аватара пользователя


23/07/08
10887
Crna Gora
Хорошо, спасибо.
Пожалуйста, проследите за моими рассуждениями.

С точки зрения математики (т.е. пока без учета особенностей вычислений на компьютере) получится то же самое, если мы сначала возведем $e$ в степень $\pi$, а потом это возведем в степень $a=2\cdot{E_0}\cdot{0,998c/{l\cdot{H_{35}}}}$ (т.е. произведение всего остального, без $\pi$). В виде формулы: $e^{\pi a}=(e^\pi)^a$.

Здесь меня особенно интересует первый шаг, $e^\pi$. И основание, и показатель заданы с некоторыми погрешностями $\Delta e$, $\Delta\pi$. Вопрос: какова погрешность величины $e^\pi$?

$\Delta(e^\pi)$ можно получить в виде ряда по степеням $(\Delta e)^m(\Delta\pi)^n$. Но так как $\Delta e, \Delta\pi$ очень малы, можно ограничиться слагаемыми первой степени:
$\Delta(e^\pi)=e^\pi \Delta\pi+ \pi e^{\pi-1}\Delta e$
Формула эта получена вычислением дифференциала $d(u^v)$. Она, хоть и первого порядка, довольно точная. Например, даже для очень приближенных значений $2.72$ и $3.14$ она предсказывает погрешность $-9.096...\cdot 10^{-3}$, а действительная погрешность $-9.060...\cdot 10^{-3}$. Т.е. о порядке величины можно составить представление даже при заметных $\Delta e,\Delta \pi$.

Обратите внимание, что в первом порядке $\Delta(e^\pi)$ складывается из части $\Delta_e(e^\pi)$, обусловленной только $\Delta e$, и части $\Delta_{\pi}(e^\pi)$, обусловленной только $\Delta\pi$. Поэтому их можно вычислить раздельно. Подставляя $\Delta\pi=10^{-12}, \Delta e=10^{-127}$, найдем:
$\Delta_{\pi}(e^\pi)=e^\pi \Delta\pi\approx 23.14\cdot 10^{-12}$
$\Delta_e (e^\pi)=\pi e^{\pi-1}\Delta e\approx 26.74\cdot 10^{-127}$

Теперь скажите: какой смысл добиваться настолько малого $\Delta e$, если $\Delta \pi$ вносит в $e^{\pi}$ погрешность в $10^{115}$ раз большую? Уменьшив $\Delta\pi$ в $100$ раз, мы добились бы гораздо большего уточнения $\Delta(e^\pi)$.

Охотно верю, что только после задания $e$ с точностью 127 знаков программа стала выдавать приемлемые значения. Но, основываясь на этом рассмотрении, считаю, что это произошло только за счет неконтролируемых «левых» эффектов.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение14.02.2014, 20:23 
Аватара пользователя


08/02/14
53
Серпухов, Россия
svv, если интересно могу предоставить в понедельник программу где все считалось и сами файлы расчета.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение14.02.2014, 20:30 
Заслуженный участник
Аватара пользователя


23/07/08
10887
Crna Gora
Спасибо, мне гораздо больше хотелось бы, чтобы Вы прониклись, так сказать. :-)

Я по натуре не спорщик. Останетесь при своем — что ж... :-(

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение15.02.2014, 00:35 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Даже для одного того, чтобы задать 117 значащих цифр, пришлось бы использовать нестандартную арифметику. IEEE 754 описывает типы double precision (8 байт) с 15 значащими цифрами, и quadruple precision (16 байт) с 34 значащими цифрами. Фортран по стандарту предоставляет не больше чем две разных точности (real и double presicion), и не более чем 8-байтовой длины.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение15.02.2014, 12:21 
Аватара пользователя


08/02/14
53
Серпухов, Россия
Munin, считали на С, переменные объявлены как double

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение15.02.2014, 13:32 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Ага. На Си тип double по стандарту как раз такой, как double precision по IEEE 754 (в смысле, не меньше), и в абсолютно всех реализациях - не больше. Для большей точности специально введён тип long double (и реализационно-зависимые), они не больше IEEE 754 quadruple precision. И вообще, все современные процессоры построены по IEEE 754. Например, в x86 аппаратно поддерживается IEEE 754 double precision (64 бита) и специальный 80-битный, который меньше IEEE 754 quadruple precision (в некоторых современных x86 встречается и IEEE 754 quadruple precision). И ни один компилятор Си не будет использовать невстроенные типы, поскольку это валит быстродействие. Типы с произвольной точностью бывают реализованы на уровне библиотек.

Таким образом, ваши 117 и 115 знаков в принципе не могли ни на что повлиять. Ищите ошибку в другом месте.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение15.02.2014, 21:01 
Аватара пользователя


08/02/14
53
Серпухов, Россия
Munin, а ошибки нет, если и есть, но эмиттанс уже попадает в аксептанс, токи в обмотках коррекции уже настроены (кому интересно: $I_{vertical correction} = 160,3 A$, $I_{horizontal correction} = 181,2 A$, $I_{\gamma_{35}} = 43,22 A$, $I_{lens 35} = 800,205 A$). Что там в ошибках это дело физиков и программистов из КБ, а у нас, инженеров, все работает.

 Профиль  
                  
 
 Re: Вопрос по языку FORTRAN
Сообщение15.02.2014, 21:48 
Заслуженный участник


27/04/09
28128
Так это не вы засовывали 100 знаков в double? И не вы настаивали, что меньшее количество не работало?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 88 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group