Модераторы: 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

Добавлено через 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



что это за формула 
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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Я так понимаю, это аналог симуляции , выстрела 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

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

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

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



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


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

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


 




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


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

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