2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Исчезновение значащих цифр
Сообщение26.06.2008, 15:30 
Получается, часто, что результат приближенных вычислений в смысле оценки относительной погрешности хуже входных данных на порядки. Как например вычислить разность?
Заданы два числа 0,1234 и 0,1222 с верными значащими цифрами и приблизительно одинаковой погрешностью ( порядка 0,0001).

Разность чисел, равная 0,0012, имеет недостоверную в четвертом знаке после запятой.
Относительная погрешность результата сильно ухудшилась. Как этого избежать?

 
 
 
 Re: Исчезновение значащих цифр
Сообщение26.06.2008, 16:27 
e7e5 писал(а):
Разность чисел, равная 0,0012, имеет недостоверную в четвертом знаке после запятой.
Относительная погрешность результата сильно ухудшилась. Как этого избежать?
В описываемом Вами примере никак не избежать.
При оценке применимости численных методов эта потеря точности всегда учитывается.

 
 
 
 Re: Исчезновение значащих цифр
Сообщение26.06.2008, 16:49 
Yuri Gendelman писал(а):
В описываемом Вами примере никак не избежать.
При оценке применимости численных методов эта потеря точности всегда учитывается.


А если эту разность как то иначе записать, в смысле, не считать как в школе считают. Допустим мы запишем что разность равна 0,1234 - 0,1222 в какой то иной форме представления. А когда дело дойдет до использования этой разности развернем ее в исходные данные. Тогда, авось, найдется еще какое нибудь-другое число или действие, которое не уничтожит значащие цифры?

 
 
 
 Re: Исчезновение значащих цифр
Сообщение26.06.2008, 17:01 
Аватара пользователя
e7e5 писал(а):
Тогда, авось, найдется еще какое нибудь-другое число или действие, которое не уничтожит значащие цифры?
В сумме 4 правильных знака после запятой, как и у слагаемых. Ничего нельзя сделать.

 
 
 
 
Сообщение26.06.2008, 17:03 
Аватара пользователя
Неважно, как записывать. Суть от этого не меняется. Первое значение в любом случае может быть от 0.1233 до 0.1235, а второе - от 0.1221 до 0.1223. Значит, разность между ними объективно может быть от 0.0010 до 0.0014 и относительная погрешность велика.

 
 
 
 
Сообщение26.06.2008, 17:12 
Аватара пользователя
В принципе, Вы дело пишете. Есть некоторые приёмы. Например, вычислять выражение
$$\frac{ab}{a+b}$$
выгоднее по формуле
$$\frac{1}{1/a+1/b}$$
А находить сумму $\sum\limits_{k=1}^n\frac{1}{k}$ выгоднее с конца --- так будет точнее.

Но в Вашем случае конкретную рекомендацию дать невозможно. Может быть, просто погрешность является неустранимой, а может быть, от неё удастся избавиться каким-либо приёмом --- это полностью зависит от того, как потом эта разность используется.

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

 
 
 
 
Сообщение26.06.2008, 17:27 
worm2 писал(а):
Т.е. правильный путь получается такой: сначала полностью исследуется численные методы решения общей задачи или класса задач, и на этом этапе оцениваются погрешности округления, а потом метод реализуется с учётом этой погрешности. В учебниках по численным методам обычно таким вопросам уделяется серьёзное внимание.

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

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

 
 
 
 
Сообщение26.06.2008, 17:39 
Аватара пользователя
Ещё раз пишу, что без знания полной математической постановки задачи (желательно, со схемой её численного решения) рекомендации дать нельзя.

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

Добавлено спустя 4 минуты 10 секунд:

Например, сумму чисел -10, 0.02, 11, -5, -4, 9, -0.7, 3, -2, -0.1, -1, 1.1, 0.9 я бы вычислял так:
A = -0.1-0.7-1-2-4-5-10
B = 0.02+0.9+1.1+3+9+11
Сумма = A+B

 
 
 
 
Сообщение26.06.2008, 17:46 
Аватара пользователя
worm2 писал(а):
Например, сумму чисел -10, 0.02, 11, -5, -4, 9, -0.7, 3, -2, -0.1, -1, 1.1, 0.9 я бы вычислял так:
A = -0.1-0.7-1-2-4-5-10
B = 0.02+0.9+1.1+3+9+11
Сумма = A+B
Зачем отдельно положительные складывать?
Получите, например, А - машинная бесконечность.
Что приобрели?

 
 
 
 
Сообщение26.06.2008, 17:55 
worm2 писал(а):
Например, сумму чисел -10, 0.02, 11, -5, -4, 9, -0.7, 3, -2, -0.1, -1, 1.1, 0.9 я бы вычислял так:
A = -0.1-0.7-1-2-4-5-10
B = 0.02+0.9+1.1+3+9+11
Сумма = A+B

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

Тогда меня интересует вопрос, как такая таблица будет выглядеть при большом числе слагаемых? По какому закону будут распределяться эти случаи и почему?

 
 
 
 
Сообщение26.06.2008, 18:03 
Аватара пользователя
e7e5 писал(а):
Почему именно так, какую теорию можно подвести сюда?
Пока что Вы и worm2 говорите о совершенноо разных вещах. У Вас есть числа, заданные с погрешностью. Как их ни складывай (сложение точное!), результат будет иметь одинаковую погрешность. worm2 имеет в виду, что вычисления производятся на компьютере, в котором для хранения чисел отводится конечное число разрядов, отчего сама машинная арифметика неточна.

 
 
 
 
Сообщение26.06.2008, 18:16 
Аватара пользователя
TOTAL, Вы абсолюто правы! Я, действительно, почему-то с самого начала думал о погрешности округления, и только о ней :oops:

Тем не менее, не пропадать же добру :) выложу то, что уже успел набрать:

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

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

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

 
 
 
 
Сообщение26.06.2008, 18:27 
PAV писал(а):
разность между ними объективно может быть от 0.0010 до 0.0014 и относительная погрешность велика.

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

А если будет какая-то дополнительная информация, какое из значений предпочесть или распределение этих значений ( функция распределения), то это может повлиять на итоговую точность?
например
значение/ вероятность появления
0,0010 / 0,2
0,0011 /0,1
0,0012 /0,1
0,0013 /0,1
0,0014 /0,5

PS
Все еще сопротивляюсь... Представьте, что от этого зависит попадение в цель. А мы с такой погрешностью!

 
 
 
 
Сообщение26.06.2008, 18:45 
Детский вопрос: а зачем Вам вообще понадобилось вычитать друг из друга близкие числа? (это без необходимости как-то не принято)

 
 
 
 
Сообщение26.06.2008, 20:20 
ewert писал(а):
Детский вопрос: а зачем Вам вообще понадобилось вычитать друг из друга близкие числа? (это без необходимости как-то не принято)


Просто в одной книжке для школьников прочел о таком явлении, и подумал, что это очень странно.
Если "вычислитель" будет считать, он может и не заметить "сладкую парочку". А "парочки" могут и маскироваться наверное ( в книжке про замаскированный вид есть упоминание, но как все это разрешить - увы...). А потому нужно, как подумал, считать по другому, до тех пор пока не выяснится назначение вычислений ( конечная постановка задачи).
Согласитесь, что вычисления могут начаться, когда мы еще можем не знать конца задачи. Т.е их видимо придется по пути как-то корректировать.

 
 
 [ Сообщений: 22 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group