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
10910
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
10910
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
10910
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
10910
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, Супермодераторы



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

Сейчас этот форум просматривают: HungryLion


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

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