Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Увеличение точности вычислений, не хватает As Double 
:(
    Опции темы
A32
Дата 14.3.2018, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Не хватает 15 значащих цифр переменной Double. Считаю в макросе орбиту Сатурна - первый з-н Кеплера не выполняется. Не сильно - но до трёх последних значащих цифр доходит. Если считать орбиту спутника Земли - ошибка меньше, но есть - одна цифра. В макросе много операций умножения и ошибка нарастает.
В калькуляторе Windows значащих цифр 32, мне подходит. Можно ли из VBA обратиться к калькулятору или есть другой способ?
PM MAIL   Вверх
Akina
Дата 14.3.2018, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20413
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 24
Всего: 449



Цитата(A32 @  14.3.2018,  01:10 Найти цитируемый пост)
Можно ли из VBA обратиться к калькулятору

Можно. Но при большом количестве операций замаешься ждать результата. Используй внешние библиотеки длинной арифметики (скажем, LongNum http://www.cyberforum.ru/vba/thread1780318.html#post9432563 или там BigRational https://archive.codeplex.com/?p=bcl), или BigInteger из .Net.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Romikgy
Дата 14.3.2018, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



может алгоритм  подкрутить ? можно на него взглянуть ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 15.3.2018, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата(Romikgy @ 14.3.2018,  09:39)
может алгоритм  подкрутить ? можно на него взглянуть ?

Там нечего подкручивать, он простой, как пять копеек. Задаются начальные координаты и начальные скорости,  интервал времени dt. Считается сила, действующая на спутник и новые координаты через время  dt. Для взглянуть файл прилагается, но без расчётов, т.к. с расчётами он весит 1,5 М и я не хочу грузить сервер форума ненужными данными. Там один макрос - он всё и считает, там всё закомментировано. Расчётов задано 10 тыс., это примерно один оборот спутника при заданных условиях. Кеплеровские площади на Листе2 (там есть 10 расчётов для примера, но всё норм - ошибка появляется где-то после 1000 расчётов), исходные данные на Листе1. Неприятность в том и заключается, что каждый расчёт содержит ошибку, а следующий расчёт исходит из предыдущего и ошибка накапливается.
А сервер не дал мне загрузить файл exel. Загрузил текстовой с макросом.

Это сообщение отредактировал(а) A32 - 15.3.2018, 01:17

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Terra.txt 2,09 Kb
PM MAIL   Вверх
A32
Дата 15.3.2018, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата

Можно. Но при большом количестве операций замаешься ждать результата. Используй внешние библиотеки длинной арифметики.

Посмотрел и не понял, надо разбираться. Правильно я понял, что длинное число сохраняется As Object ?
PM MAIL   Вверх
Romikgy
Дата 15.3.2018, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



A32, это 
Sub TR6()   
вызывается 1000 раз?
Цитата

M0 = Лист1.Cells(4, 1)
M1 = Лист1.Cells(5, 1)
VX1 = Лист1.Cells(11, 1)
VY1 = Лист1.Cells(12, 1)
X10 = Лист1.Cells(7, 1)
Y10 = Лист1.Cells(8, 1)
DT = Лист1.Cells(15, 1)               ' сек интервал интегрирования
i1 = Лист1.Cells(17, 1)

эти данные можно увидеть ? и как узнать какие должны быть цифры после 1000 расчетов?
Цитата(A32 @  14.3.2018,  23:58 Найти цитируемый пост)
А сервер не дал мне загрузить файл exel. 

что архиваторами не? религия не позволяет?

Добавлено через 11 минут и 58 секунд
Цитата(A32 @  13.3.2018,  23:10 Найти цитируемый пост)
Double

попробуйте заменить его на тип
Цитата

Тип данных Decimal



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 15.3.2018, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата(Romikgy @ 15.3.2018,  09:47)
эти данные можно увидеть ? и как узнать какие должны быть цифры после 1000 расчетов?

Они должны быть одинаковыми
Цитата

что архиваторами не? религия не позволяет?

Туплю иногда

Цитата

вызывается 1000 раз?

Запускается один раз вручную RUNом


Это сообщение отредактировал(а) A32 - 15.3.2018, 11:11

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Terra.rar 21,54 Kb
PM MAIL   Вверх
Romikgy
Дата 15.3.2018, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



у меня всегда цифры одни и теже
на что смотреть?

Добавлено через 2 минуты и 26 секунд
или имеется ввиду что на лист 2 
5 строка 
-2,860560000000E+10
а  10000
-2,860560000006E+10
это имелось ввиду?



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 15.3.2018, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Да ну, как это? Уже в 87 строке последние значащие цифры ...9,9988 (Лист2, первый столбец), а дальше есть гораздо больше. Ошибка не нарастает монотонно, а гуляет вокруг среднего значения. Вот я и хочу понять - что это: ошибка вычисления или метода?

Добавлено @ 11:52
Цитата(Romikgy @ 15.3.2018,  11:41)
у меня всегда цифры одни и теже
на что смотреть?

Добавлено @ 11:43
или имеется ввиду что на лист 2 
5 строка 
-2,860560000000E+10
а  10000
-2,860560000006E+10
это имелось ввиду?

Да, конечно.  Но это ..0,0565 и вопрос в принципе - где косяк?

Это сообщение отредактировал(а) A32 - 15.3.2018, 11:59
PM MAIL   Вверх
Romikgy
Дата 15.3.2018, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



что это за формула 
DS1 = (Y11 * (X11 - X10) - X11 * (Y11 - Y10)) / 2

что она выражает? по какой причине у вас кусочные данные по х перемножаются с кусочными данными по у ??

Добавлено через 5 минут и 46 секунд
Цитата

X11 = X10 + VX1 * DT: Y11 = Y10 + VY1 * DT
DS1 = (Y11 * (X11 - X10) - X11 * (Y11 - Y10)) / 2

отсюда выводится
DS1 = (Y11 * (VX1 * DT) - X11 * (VY1 * DT)) / 2
для какой цели перемножается скорость по оси х со смещением по у ??? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 15.3.2018, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



Я так понимаю, это аналог симуляции , выстрела 1 кг телом с полюса для вывода его на орбиту....
так вот радиус ваш с каждой итерацией уменьшается... соотв. увеличивается гравитация , что видно из листа 5 
Вы через землю стреляете? 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 15.3.2018, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата(Romikgy @ 15.3.2018,  12:02)
что это за формула 
DS1 = (Y11 * (X11 - X10) - X11 * (Y11 - Y10)) / 2

Макрос считает орбиту тела (координаты), начиная с заданных, это лист4. Проверкой корректности расчёта является соответствие результатов второму закону Кеплера.
DS1 - это площадь треугольника с вершинами в (0,0),(X10,Y10),(X11,Y11), X11 и Y11 считаются так, будто бы на тело НЕ действует центральная сила, второй расчёт DS1 (надо было бы обозвать его DS2) считается с учётом действия центральной силы. Эти площади должны быть равны между собой и равны рассчитанным на предыдущем шаге. И на следующем шаге то же должны быть равны. Любое отклонение является признаком ошибки расчёта. Если бы я стрелял с полюса в Луну - я бы удовлетворился такой точностью. Но у меня другая мысль, которую я хотел бы проверить расчётом. Ещё не проверил, застрял здесь, но, допустим, расчёты её (мысль) подтвердят и я на форуме астрономов говорю (к примеру): "Устройство нашей планетной системы описано неправильно, вот расчёты". Что я услышу в ответ? - А32, ты с начала разберись со своими расчётами -  у тебя законы Кеплера не соблюдаются.
То, что радиус уменьшается - это нормально, Земля в расчётах предполагается точечной массой и встреча тела с поверхностью не предусмотрена. И начальные скорости заданы произвольно, орбита - эллипс, т.е. и первый закон Кеплера выполняется. Но если задать первую космическую скорость - тело улетает по параболе. Законы Кеплера и в этом случае соблюдаются, а расчёт неправильный, надо искать ошибку. И, возможно, ошибка метода проявляется именно в этом неравенстве площадей. Но это неравенство незначительно, оно, возможно, следствие машинной ошибки. Отсюда и тема - как увеличить точность вычислений для того, что бы понять, откуда растут ноги у этой ошибки.

Это сообщение отредактировал(а) A32 - 15.3.2018, 23:52
PM MAIL   Вверх
Romikgy
Дата 16.3.2018, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
DS1 - это площадь треугольника с вершинами в (0,0),(X10,Y10),(X11,Y11)

уже интересно , меня смущает формула расчета этого треугольника...

Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
То, что радиус уменьшается - это нормально, Земля в расчётах предполагается точечной массой и встреча тела с поверхностью не предусмотрена. 

странно ...

Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
как увеличить точность вычислений для того, что бы понять, откуда растут ноги у этой ошибки.

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

ЗЫ а можно линк на этот закон Кеплера и эти площади треугольников, а то кроме математики и физики мало чего знаю...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Romikgy
Дата 16.3.2018, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
второму закону Кеплера

Цитата

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

Кеплер
Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
считаются так, будто бы на тело НЕ действует центральная сила, второй расчёт DS1 (надо было бы обозвать его DS2) считается с учётом действия центральной силы. Эти площади должны быть равны между собой и равны рассчитанным на предыдущем шаге.

нигде такого не нашел....
но если учесть что все верно , в ваших формулах, то есть один недочет со стороны  математики... если первый вариант еще можно принять как треугольник, то с учетом ускорения треугольника не получится! одна сторона будет кривой... и расчет будет с ошибкой... скорости движения у вас тысячи м\с , т.е. уход за секунду будет очень большим... и разность площадей будет увеличиваться. Если дельту по времени уменьшать , возможно до миллисекунд, а может и до микро , то сторона не будет  успевать изгибаться , и разница площадей будет стремится к нулю....

Добавлено через 1 минуту и 39 секунд
Цитата(A32 @  15.3.2018,  22:38 Найти цитируемый пост)
"Устройство нашей планетной системы описано неправильно, вот расчёты". Что я услышу в ответ? - А32, ты с начала разберись со своими расчётами -  у тебя законы Кеплера не соблюдаются.

а что докажет , если площади совпадут ?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 16.3.2018, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата

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


Вы, видимо, не там искали - история вопроса древняя, 17 век. Да и не надо было искать, всё доказывается на школьном уровне, здесь всё на самом деле просто. Но, если интересно, в Математических началах натурфилософии Ньютона (прилагаются)  з-н Кеплера доказывается именно так, как у меня считается. Никто, вроде бы, метод не оспорил. Вы первый.
Вы всерьёз полагаете, что интеграл криволинейной функции нельзя рассчитать на компьютере потому, что в расчётах используются прямоугольные отрезки? У Ньютона об этом то же есть.
Цитата

а что докажет , если площади совпадут ?

Что расчёт корректен хотя бы в принципе.


Это сообщение отредактировал(а) A32 - 16.3.2018, 01:29

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  Newton.jpg 243,72 Kb
PM MAIL   Вверх
Romikgy
Дата 16.3.2018, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



Цитата(A32 @  16.3.2018,  00:12 Найти цитируемый пост)
Вы первый.

это значит  что я лучший ? )))

Цитата(A32 @  16.3.2018,  00:12 Найти цитируемый пост)
Вы всерьёз полагаете, что интеграл криволинейной функции нельзя рассчитать на компьютере потому, что в расчётах используются прямоугольные отрезки? 

можно , но в в ваших расчетах нет интеграла !
user posted image
а теперь посмотрите на то что выдает ваша программа у вас центростремительное ускорение всегда одинаково?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 16.3.2018, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Если Вы решили, что центростремительное ускорение во всех точках орбиты должно быть одинаковым, то это ошибка.

И я правильно понял Ваше мнение: ошибка расчётов в 0,0000000002%, случайная, не систематическая, иногда вообще равная нулю - следствие принципиально ошибочного расчёта?  
PM MAIL   Вверх
Romikgy
Дата 16.3.2018, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7275
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 144



Цитата(A32 @  16.3.2018,  14:45 Найти цитируемый пост)
Если Вы решили, что центростремительное ускорение во всех точках орбиты должно быть одинаковым, то это ошибка.

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


Цитата(A32 @  16.3.2018,  14:45 Найти цитируемый пост)
И я правильно понял Ваше мнение: ошибка расчётов в 0,0000000002%, случайная, не систематическая, иногда вообще равная нулю - следствие принципиально ошибочного расчёта?   

нет , не случайная
мое мнение , что при таком способе расчета площадей треугольников , это закономерная ошибка....
учитывая точность вычислений ( делал на питоне ) максимальная ошибка(ds2-ds1) при шаге по времени в 1.5 секунды за 100000 : 0.00398254394531,  что соответствует ошибке в 13 знаке (это если разделить макс ошибку на макс дс)  
при шаге 1.5e-3 макс ошибка 4.24198806286e-05
при шаге 1.5e-5 макс ошибка 1.33877620101e-07
при шаге 1.5e-6 - ошибка уходит в ноль .... 
не думаю что точность в 6 порядков ... упирается в машинную ошибку вычислений... я думаю , что на таком мелком шаге, кривизна эллипса(одна сторона треугольника) выравнивается до прямой (с очень малой ошибки аппроксимации) 
Это мое мнение как математика и программиста , я не силен в космогонии .... могу и ошибаться, но математически считаю себя правым.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
A32
Дата 16.3.2018, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 3.1.2013

Репутация: нет
Всего: нет



Цитата(Romikgy @ 16.3.2018,  22:04)
я так не решил ... я знаю что это не так
Но формулы, которые вы указали в качестве доказательств правдивости закона Кеплера, говорят о том , что ускорение  постоянно ... или я не правильно читаю текст . 

Вы привели этот аргумент (неравенство ускорений) как доказательство ошибочности расчётов. Отменено?
И я на самом деле не понимаю, о каких формулах речь? О тех, что в макросе? Я не доказывал закон Кеплера, это сделали до меня.

Цитата(Romikgy @ 16.3.2018,  22:04)
нет , не случайная
при шаге 1.5e-5 макс ошибка 1.33877620101e-07
при шаге 1.5e-6 - ошибка уходит в ноль .... 

Как правило, ошибка расчёта пропорциональна результату, нет ничего удивительного в том, что она уменьшается с уменьшением шага. И шаг у меня не меняется, а ошибка то есть, то нет. Но не случайная? Но чёрт бы со словом случайная, с остальным то как? (не систематическая и, временами, вообще пропадающая). Расчёты, основанные на ошибочной идее так себя не ведут.
Но самое интересное вот где: утверждая некорректность моих расчётов, Вы, тем самым, объявляете некорректным доказательство Ньютона, потому, что расчёты прямо следуют из доказательства.
И ко мне можно обращаться на ты.
PM MAIL   Вверх
Google
  Дата 23.8.2019, 13:51 (ссылка)  





  Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.1289 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.