2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

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



Начать новую тему Ответить на тему
 
 О точности вычислений
Сообщение16.02.2013, 12:21 


13/05/10
10
Здравствуйте все, кто читает это!

Подскажите пожалуйста, вот когда я на программируемом микрокалькуляторе или в какой-либо программе вычисляю значение элементарной функции, или сложную комбинацию из арифметических действий над элементарными функциями, гарантируется ли что все знаки числа, выводимые на дисплей, верны (хоть в каком-нибудь смысле)? Подскажите пожалуйста какой-нибудь источник, где в этом можно быстро разобраться.

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 13:07 


09/08/11
78
Гарантировать можно только то, что всё, что выведено на дисплей, имеется в представлении числа. Т.е. если у дисплея 10 цифр мантиссы и 2 цифры порядка, то в вычислениях участвуют они все. В некоторых калькуляторах есть ещё парочка цифр мантиссы, не помещающихся на экран, но участвующих в вычислениях для повышения точности.
Но в общем случае следует понимать, например, что добавление к числу порядка 1e+12 10000 раз числа 1 не даст правильного ответа в для калькулятора с 10-ю цифрами мантиссы.
Вообще, вычисления на калькулятора практически имеют те же ограничения, как и вычисления с floating-point arithmetic на компьютере.
В качестве источника информации по этой теме могу предложить статью "What Every Computer Scientist Should Know About Floating-Point Arithmetic" - её легко найти в интернете.

 Профиль  
                  
 
 Posted automatically
Сообщение16.02.2013, 14:41 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Математика (общие вопросы)» в форум «Помогите решить / разобраться (М)»
Перенёс в соответствующий раздел

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 16:42 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
shtutser в сообщении #684578 писал(а):
гарантируется ли что все знаки числа, выводимые на дисплей, верны

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

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 17:12 


13/05/10
10
Спасибо за ответы и подсказки. Я вот спрошу напрямую: если я ввел на микрокалькулятор или в компьютерную программу выражение (к примеру): $\frac{e^2+\cos(1.4)}{\sqrt[3]{\sin(\sqrt2)}}$ и получаю ответ 7.590102908269122 , то в этом ответе все цифры верные, т.е. ошибка по сравнению с точным значением приведенного выражения не превосходит $10^{-15}$?

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 17:20 
Заслуженный участник
Аватара пользователя


06/10/08
6422
shtutser в сообщении #684678 писал(а):
Спасибо за ответы и подсказки. Я вот спрошу напрямую: если я ввел на микрокалькулятор или в компьютерную программу выражение (к примеру): $\frac{e^2+\cos(1.4)}{\sqrt[3]{\sin(\sqrt2)}}$ и получаю ответ 7.590102908269122 , то в этом ответе все цифры верные, т.е. ошибка по сравнению с точным значением приведенного выражения не превосходит $10^{-15}$?
Нет, $\frac{e^2+\cos(1.4)}{\sqrt[3]{\sin(\sqrt2)}} > 7.5901029082691235$

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 17:23 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
Если компьютер (калькулятор) сам выдал ответ такой длины (формат выдачи не указывался), то большие шансы на то, что все цифры верные. Можно проконтролировать поведение калькулятора (узнать его повадки), проделав те же вычисления так, чтобы получить нужное количество правильных разрядов в ответе. Это можно сделать, например, в Maple, где можно указать количество правильных разрядов.

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 17:45 


13/05/10
10
Xaositect, скажите, а как узнать (и как Вы узнали), что $\frac{e^2+\cos(1.4)}{\sqrt[3]{\sin(\sqrt2)}} > 7.5901029082691235$ ?

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 17:45 


09/08/11
78
TOTAL в сообщении #684685 писал(а):
Если компьютер (калькулятор) сам выдал ответ такой длины (формат выдачи не указывался), то большие шансы на то, что все цифры верные.


Вот простая программа на C++, являющаяся контрпримером:
Код:
#include <iostream>
int main()
{
    float x=1.12345e+8,y=1.;
    std::cout << "x="<<x<<std::endl;
    for(int i=0;i<30000;++i)
        x+=y;
    std::cout << "x="<<x<<std::endl;
}

Формат выдачи, как видно, не указывался.
Вывод на консоли:
Цитата:
x=1.12345e+08
x=1.12345e+08


Если, однако, заменить float на double, то будет:
Цитата:
x=1.12345e+08
x=1.12375e+08

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 18:00 
Заслуженный участник
Аватара пользователя


23/08/07
5494
Нов-ск
10110111 в сообщении #684697 писал(а):
Вот простая программа на C++, являющаяся контрпримером:

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

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 18:01 
Заслуженный участник


27/04/09
28128
shtutser, некоторые программы учитывают точность, некоторые не учитывают.

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

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 18:02 
Заслуженный участник
Аватара пользователя


06/10/08
6422
shtutser в сообщении #684696 писал(а):
Xaositect, скажите, а как узнать (и как Вы узнали), что $\frac{e^2+\cos(1.4)}{\sqrt[3]{\sin(\sqrt2)}} > 7.5901029082691235$ ?
Вычислил тут: http://www.wolframalpha.com/input/?i=%2 ... 2%29%29%29 . Могу еще проверить интервальной арифметикой на рациональных числах.

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение16.02.2013, 23:26 


28/05/08
284
Трантор
Музыкой навеяло задачку из Кнута (Искусство программирования, 1.2.2.11 в 3-м изд.):
Пусть $b=10$, $x \approx \log_{10} 2$. Сколько десятичных знаков $x$ нужно знать,
чтобы определить первые три десятичных знака в десятичном представлении $b^x$.

(Оффтоп)

ответ: бесконечно много

Так что точность (в смысле плюс-минус) - это одно, а количество верных цифр - другое.

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение17.02.2013, 09:32 


13/05/10
10
Всем спасибо за разъяснения, а Xaositect за интересную ссылку!

Но все-таки еще раз для дурака... Беру программу (скажем Mathcad), прошу ее вычислить сложную комбинацию элементарных функций, получаю какое-то число. Прошу вывести 17 (максимальное число) знаков мантиссы - он выводит. Есть ли у разработчиков подобных программ какой-нибудь стандарт (правило), такое, что я сразу могу сказать, что в выданном ответе, например, все 17 цифр - верны, например, в строгом смысле, т.е. погрешность результата по сравнению с точным значением не превосходит половины единицы 17 разряда? Или это по каждой программе нужно смотреть, какие там алгоритмы, как идет вычисление и т.д.
Как я понял, в Maple можно попросить выводить только верные цифры.

 Профиль  
                  
 
 Re: О точности вычислений
Сообщение17.02.2013, 12:58 
Заслуженный участник


09/09/10
3729
http://www.cs.berkeley.edu/~wkahan/LOG10HAF.TXT (Уилльям Кэхэн — создатель стандарта IEEE 754).

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Модераторы: Модераторы Математики, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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