2014 dxdy logo

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

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




 
 Деление на ноль
Сообщение01.06.2011, 00:49 
Привет,

если в коде вычислять функцию $f(r)=\frac 1 r \cdote (1-\exp(-r^2))$ в нуле то получится, что мы делим на ноль. Если посчитать предел этой функции в нуле, то получим ноль. Вопрос такой, как лучше запрограммировать такой случай?
У меня два предложения есть. Можно сделать условный цикл,

Код:
if(r==0)
   f(r)=0
else
   f(r)=...
end if


Другой вариант, это всегда переопределять $ r=r+\delta$ , а дельта выбрать маленьким (например, 1.E-40, получается ноль).
Как думаете, что лучше? Может еще способы есть?

 
 
 
 Re: Деление на ноль
Сообщение01.06.2011, 07:01 
Аватара пользователя
Я делал как вы, т.е. условие на случай неопределённости.

 
 
 
 Re: Деление на ноль
Сообщение01.06.2011, 14:13 
sithif в сообщении #452488 писал(а):
Может еще способы есть?

Например (r >= 0):
Код:
if(r < 1.0e-10) // подобрать нужное значение константы
   f(r)=0
else
   f(r)=...
end if
В арифметике с плавающей точкой ставнение $x==x_0$ не рекомендуется. Надежнее использовать что-то вроде $abs (x - x_0) \le \epsilon$

 
 
 
 Re: Деление на ноль
Сообщение01.06.2011, 16:40 
А ещё лучше для маленьких $r$ перейти на ряд Тейлора, т.к. выражение $1-\exp(-r^2)$ будет очень неточным.

 
 
 
 Re: Деление на ноль
Сообщение01.06.2011, 19:11 
Спасибо за советы!

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


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