Телескопы покупают здесь


A A A A Автор Тема: Ошибки в программах для математических вычислений  (Прочитано 1494 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
В MatCadе встретил такой очень интересный баг:
Когда считаешь вручную, и по отдельно,то результат получается нормальным, а когда всё сводишь в одну формулу-брехня
Вот скрин:
Сначала привёл поэтапное вычисление,а потом и формулой-почувствуйте разницу
Как можно подстрелить этот баг?

Оффлайн Ed_Vazhorov

  • Модератор
  • *****
  • Сообщений: 4 321
  • Благодарностей: 471
  • MPC: M12, Puschino. CG5-GT, C8/C6N/80ED, SV605/6D
    • Skype - Ed_Vazhorov
    • DeepSkyHosting: vazhorov
    • Сообщения от Ed_Vazhorov
    • Группа "Астрономия XXI"
А если попробовать это же действие в другой программе (например, бесплатном SciLab)?
Возможно, к комьюнити разработчиков SciLab проще достучаться в случае ошибок...
P.S. Во второй формуе что-то не так с приведением к общему знаменателю...
« Последнее редактирование: 09 Июл 2011 [18:09:58] от Ed_Vazhorov »

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
А если попробовать это же действие в другой программе (например, бесплатном SciLab)?
Возможно, к комьюнити разработчиков SciLab проще достучаться в случае ошибок...
P.S. Во второй формуе что-то не так с приведением к общему знаменателю...
там нет общего знаменателя...
там просто перемножения формул

Оффлайн Ed_Vazhorov

  • Модератор
  • *****
  • Сообщений: 4 321
  • Благодарностей: 471
  • MPC: M12, Puschino. CG5-GT, C8/C6N/80ED, SV605/6D
    • Skype - Ed_Vazhorov
    • DeepSkyHosting: vazhorov
    • Сообщения от Ed_Vazhorov
    • Группа "Астрономия XXI"
там нет общего знаменателя...
там просто перемножения формул
Наверное, я не так понял рисунок (там стоит красный плюс)...

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
там нет общего знаменателя...
там просто перемножения формул
Наверное, я не так понял рисунок (там стоит красный плюс)...
Это курсор в маткаде для выделения вычеслений для последующих операций  с ними(копирование и т д)
« Последнее редактирование: 09 Июл 2011 [20:22:46] от Kraken »

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
Хм, там хелп придётся изучать месяц))

Tau

  • Гость
2*pi/365.25 = 0.0172024238389585
Маткад обрезал значение до 3 знаков (0.017), которые вы и подставили в формулу, отсюда и  потеря точности. Вы умножаете малое число (0.017) на большое (206265), в этом случае округление дроби значимо для результата. Подозреваю, что в настройках это должно регулироваться, даже обычный калькулятор так не обрезает значащие цифры, а тут аж целый Маткад.

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
2*pi/365.25 = 0.0172024238389585
Маткад обрезал значение до 3 знаков (0.017), которые вы и подставили в формулу, отсюда и  потеря точности. Вы умножаете малое число (0.017) на большое (206265), в этом случае округление дроби значимо для результата. Подозреваю, что в настройках это должно регулироваться, даже обычный калькулятор так не обрезает значащие цифры, а тут аж целый Маткад.
Я тоже это регулировал, видимо это настройка отображения, а не вычесления

Tau

  • Гость
Меню - Формат - Результат - Формат результата - число десятичных знаков поменять
По-крайней мере в Маткаде-13 это так регулируется.

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
Меню - Формат - Результат - Формат результата - число десятичных знаков поменять
По-крайней мере в Маткаде-13 это так регулируется.
я так делал и не помогает..

Tau

  • Гость
Мне помогло, только после закрытия программы установленное значение десятичных знаков опять меняется на 3, так что каждый раз нужно формат задавать.
Может у вас Маткад неудачно взломанный?  ;D

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
щас объясню суть:
попался маткад когда считал одной огромной формулой(могу привести)
сначала считал по действиям, потом все куски свёл в одну формулу, поэтому есть два результата для сравнения, которые к сожалению не совпадают..

Tau

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

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
При вычислении кусками точности не теряю....
Тк  все знаки после запятой учитываю...

Tau

  • Гость
Как вы можете учитывать все знаки, если у вас всего 3 знака выводится?

Онлайн Kirill GrishinАвтор темы

  • *****
  • Сообщений: 2 667
  • Благодарностей: 66
    • Сообщения от Kirill Grishin
Расскажу всё:
Дело в том,что я вычесляю период(его длинну), в течении которого может произойти транзит Меркурия по диску Солнца.
И мне есть с чем сравнить и как проверить(с помощью программы планетария)
Неточность здесь конечно не допустима



Tau

  • Гость
Какой по-вашему из двух вариантов правильный? 6306 или 6381? :)
Очевидно, что 6381.
Хотите по частям вычислять - на здоровье, только тогда уж переменные вводите.