2014 dxdy logo

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

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




 
 Алгебраическое суммирование близких величин
Сообщение11.08.2015, 20:43 
Аватара пользователя
Здравствуйте!
При численном решении полевой задачи возникает классическая проблема суммирования двух близких по величине, но противоположных по знаку полей. Соответственно незначительная погрешность вычислений каждой составляющей приводит к сильной погрешности результата суммирования. Подскажите, как поступают в таких случаях.

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 00:00 
Аватара пользователя
Как может быть такое: "незначительная погрешность вычислений каждой составляющей приводит к сильной погрешности результата суммирования"? Очевидно, что абсолютная погрешность суммы всегда не превосходит суммы абсолютных погрешностей слагаемых, а их только две, и они обе - "незначительные"! :shock:

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 00:17 
Аватара пользователя
Представляется само собой разумеющимся, что речь идёт об относительной погрешности.
Fgolm в сообщении #1044609 писал(а):
Подскажите, как поступают в таких случаях.

Ну здесь сложно предложить что-то небанальное. Или увеличить точность до необходимой или попытаться преобразовать каким-то образом использованные математические выражения (классический же пример: при вычислении $e^{-x}, x>0,$ разложением в ряд сперва вычислить $e^x$, а потом уже делить на это единицу; так мы избавляемся от знакопеременности слагаемых).

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 00:23 
Fgolm в сообщении #1044609 писал(а):
При численном решении полевой задачи возникает классическая проблема суммирования двух близких по величине, но противоположных по знаку полей. Соответственно незначительная погрешность вычислений каждой составляющей приводит к сильной погрешности результата суммирования. Подскажите, как поступают в таких случаях.
Универсальный рецепт (но, боюсь, малопригодный в конкретном случае именно ввиду универсальности) - перед счетом преобразовать выражения к виду, при котором потребность в вычислении разности близких величин пропадет. А для чего-то более конкретного нужна более конкретная постановка задачи.

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 00:30 
Fgolm
Посмотрите книжку Дж. Форсайта "Машинные методы математических вычислений" 1980-го года, начиная с пункта 2.4 Неустойчивость некоторых алгоритмов.

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 01:00 
Аватара пользователя
Brukvalub
пример: допустим вычисления дают следующие значения 2250-2248=2
Пусть второе число является точным (задано, а не получено в результате вычислений или вычисляется с заведомо высокой точностью), а первое является результатом сложных вычислений. Допустим я увеличиваю дискретизацию в своей задаче и получаю изменение первого числа на 1% (второе число не изменилось): 2227,5-2248=-20,5. Какой из результатов правильный?
grizzly, Pphantom
Решается численно трёхмерная задача на распределение вихревых токов в проводнике сложной формы. Индуктор создаёт первичное поле, которое возбуждает в проводнике вихревые токи, поле которых противоположно по знаку первичному. Необходимо найти суммарное поле. Первичное поле считается довольно точно, а поле вихревых токов находится сложным образом и зависит от дискретизации расчётной области. В ходе расчётов я решал модельную задачу: уменьшал пропорционально размеры расчётной области и устанавливал достаточное разбиение. Затем увеличивал эту область до требуемых размеров с сохранением шага разбиения. Оказалось, что разбиений получается слишком много для моего компьютера. То есть пока не могу обеспечить требуемого разбиения. Но я подумал, может есть какой-то способ, чтобы по мере увеличения разбиения результат суммирования менялся по крайней мере "плавно". Чтобы хотябы увидеть к чему он стремится

 
 
 
 Re: Алгебраическое суммирование близких величин
Сообщение12.08.2015, 01:22 
Fgolm в сообщении #1044720 писал(а):
Допустим я увеличиваю дискретизацию в своей задаче и получаю изменение первого числа на 1% (второе число не изменилось): 2227,5-2248=-20,5. Какой из результатов правильный?
Оба правильные. :D Формально Вы же получаете не один результат, а интервал допустимых результатов.
Fgolm в сообщении #1044720 писал(а):
Но я подумал, может есть какой-то способ, чтобы по мере увеличения разбиения результат суммирования менялся по крайней мере "плавно". Чтобы хотябы увидеть к чему он стремится
Нет, более того, Вы можете столкнуться с тем, что при увеличении размеров сетки результаты начнуть "скакать" сильнее. Нужно придумывать какую-то регуляризацию для вычисления вихревых токов.

 
 
 [ Сообщений: 7 ] 


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