Точность вычисления

Форум пользователей пакета Maple

Модератор: Admin

ISV
Сообщения: 6
Зарегистрирован: Пт ноя 18, 2005 10:06 pm

Точность вычисления

Сообщение ISV » Сб дек 17, 2005 11:16 pm

Maple выводит значения дробей и иррациональных выражений с точностью до 10-ого знака после запятой.
Можно ли увеличить количество этих знаков?

Break
Сообщения: 159
Зарегистрирован: Вс окт 09, 2005 2:10 am
Откуда: Петербург

Сообщение Break » Сб дек 17, 2005 11:25 pm

?Digits

а если только 1 раз, то evalf(..., 1000)

Antic
Сообщения: 245
Зарегистрирован: Ср сен 07, 2005 5:07 pm

Сообщение Antic » Вс дек 18, 2005 6:58 am

Ну почему именно evalf(...,1000). Так можно напугать спрашивающего. Лучше бы так evalf(Выражение, Число_знаков). :D

xyz
Сообщения: 202
Зарегистрирован: Чт мар 24, 2005 3:42 pm

Сообщение xyz » Вс дек 18, 2005 12:18 pm

Пакетная переменная Digits определяет кол-во цифр, участвующих в вичислениях с float-арифметикой на весь период сеанса с пакетом либо до ее переопределения. Тогда как встроенная функция evalf(А, n) определяет для нее значение n только для вычисления выражения А. Поэтому следует выбирать в зависимости от задачи. Для всего документа – Digits, для отдельных выражений – float. См. также UseHardwareFloats.

Для достижения повышенной точности (используя двойную точность на базе средств DOS, а не пакета) рекомендую использовать evalhf.

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

Break
Сообщения: 159
Зарегистрирован: Вс окт 09, 2005 2:10 am
Откуда: Петербург

Сообщение Break » Вс дек 18, 2005 1:21 pm

xyz
Для достижения повышенной точности (используя двойную точность на базе средств DOS, а не пакета) рекомендую использовать evalhf.


Тут надо было уточнить, что Digits и evalhf ни как не связаны! Термин повышенная точность, чтоб не вводить в заблуждение, тут не уместен. Надо было просто написать double-точность. Болеше вы этим средством не получите. И надо было упомянуть, что скорость возрастает. Хотя результаты, иногда, могут оличаться - это уже глюк.

ISV
Еще надо учесть, что до того, как вы зададите новый Digits, у всех высисленных переменных будет точность до 10 знака. Поэтому, желательно ставить
Digits:= число знаков
в самом начале документа. Этим вы избежите ошибок.

Break
Сообщения: 159
Зарегистрирован: Вс окт 09, 2005 2:10 am
Откуда: Петербург

Сообщение Break » Вс дек 18, 2005 6:18 pm

Там же сказано (у меня также), что Digits и двойная точность - две разные вещи.


Где у вас сказано, что это разные вещи?... На зрение пока не жалуюсь. :)
Если по-уму объяснять, то надо указать разницу между бинарными float-числами процессоров и деситичными float-числами арифметики Мапл.


У меня установлены Windows и Linux, c которыми я работаю одновременно. Дифференцированное использование Digits и evalf в одном документе используется не так уж и редко.

Лучше бы вы этого не писали, тогда бы я просто решил, что вы этим не пользуетесь... А так - пользуетесь, и не разбираетесь?!! (По крайней мере объяснить совершенно не можете!)

Насчет глюка вы совершенно не правы!


Мне очень жаль, что Вы не читаете даже тех книг, которые рекламируете на лево и на право! :lol:
На месте студентов, я бы бежал от вас как можно быстрее!

Пример из книги Аладьева:
evalf(tan(2*10^23));
evalhf(tan(2*10^23));

Эти ошибки возникают из-за отличий в реализации арифметик с плавующей точкой в Мапл, и на разных ПК.(c)

И, как убедитесь, это не
несколько отличные результаты

А очень даже различимые! :lol: