0xd34df00d 18.10.2012 13:54 Aedalus

Как проверить два числа на относительную близость друг к другу?

Recommended by:

@pooq: моча съела говно

1. Crazy_Owl 18.10.2012 13:54 Azatoth

нужна фабрика абстрактных итераторов, я думаю. И про паттерн "Визитор" не забудь.

2. generatorglukoff 18.10.2012 13:54 Воркота

std::fabs(x-y) < eps

3. 0xd34df00dgeneratorglukoff /2 18.10.2012 13:55 Aedalus

> относительную
Мудак, читай таск.

4. Crazy_Owl 18.10.2012 13:55 Azatoth

ах да, чуть не забыл: плюсы — говно.

5. 0xd34df00dCrazy_Owl /1 18.10.2012 13:55 Aedalus

И прокси-фасад.

6. 0xd34df00dCrazy_Owl /4 18.10.2012 13:55 Aedalus

Мои.

7. Crazy_Owl0xd34df00d /5 18.10.2012 13:55 Azatoth

шаришь

8. hirthwork 18.10.2012 13:55 mcabberB18BD806

fabs(a — b)/sqrt(a*a + b*b)

9. generatorglukoff0xd34df00d /3 18.10.2012 13:55 Воркота

блядь што

10. generatorglukoffgeneratorglukoff /9 18.10.2012 13:56 Воркота

define 'относительная'

11. DZhon 18.10.2012 13:56 STARGATE

Што ?

12. kelthuzad 18.10.2012 13:56 Azoth

2 * (x — y) / (x + y) блеать!

13. 0xd34df00dkelthuzad /12 18.10.2012 13:57 Aedalus

Плохо для x = -y.

14. 0xd34df00dhirthwork /8 18.10.2012 13:57 Aedalus

Гм, любопытно.

15. kelthuzad0xd34df00d /14 18.10.2012 13:58 Azoth

Дыа, или модули вместо квадратов :З

16. kelthuzadkelthuzad /15 18.10.2012 13:58 Azoth

Ну и без корня. Вы кароч понели.

17. 0xd34df00dkelthuzad /15 18.10.2012 13:58 Aedalus

Модули — плохо. test (0.0001, -0.0001, epsilon = 1) что должно вернуть?

18. hirthwork0xd34df00d /14 18.10.2012 13:58 mcabberB18BD806

не любопытно, а охуенно. ноль при равенстве, единица — если одно из чисел ноль и корень из двух (максимум), если обратные по знаку

19. 0xd34df00dhirthwork /18 18.10.2012 13:59 Aedalus

А, кстати. да, говно. /17 тебе тоже адресуется.

20. hirthworkkelthuzad /15 18.10.2012 13:59 mcabberB18BD806

нормировать кто будет, ебанашка?

21. kelthuzadhirthwork /20 18.10.2012 14:00 Azoth

Ебанашка и будет, да ^^

22. generatorglukoff 18.10.2012 14:00 Воркота

U

23. 0xd34df00dhirthwork /20 18.10.2012 14:00 Aedalus

Зачем нормировать на квадраты?

24. hirthworkhirthwork /20 18.10.2012 14:00 mcabberB18BD806

√2 будет. относительно абсолютных своих величин эти числа максимально различаются.

25. 0xd34df00dgeneratorglukoff /22 18.10.2012 14:00 Aedalus

ГАГАГА БАГЕТ

26. 0xd34df00dhirthwork /24 18.10.2012 14:01 Aedalus

Корень из двух больше 1, а мне кажется, что test (0.0001, -0.0001, eps = 1) должно вернуть true, ибо они достаточно близки.

27. hirthwork0xd34df00d /26 18.10.2012 14:04 mcabberB18BD806

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

28. 0xd34df00dhirthwork /27 18.10.2012 14:05 Aedalus

Ты нахуй иди, мне неочевидна корректность и разумность твоего алгоритма.

29. hirthwork0xd34df00d /28 18.10.2012 14:05 mcabberB18BD806

КОКОКО, она тебе не очевидна, потому что у тебя нету критериев корректности.

30. Crazy_Owl0xd34df00d /28 18.10.2012 14:05 Azatoth

>да иди ты нахуй
>Ты нахуй иди
Как будто на заседание РАН попал.

31. DZhonCrazy_Owl /30 18.10.2012 14:06 STARGATE

заседание РАЕН.

32. 0xd34df00dhirthwork /29 18.10.2012 14:07 Aedalus

А у тебя есть?

33. 0xd34df00d0xd34df00d /32 18.10.2012 14:08 Aedalus

Для меня критерий корректности — разумность работы на test(+x, -x, eps), а разумность здесь мне не очевидна.

34. 0xd34df00dCrazy_Owl /30 18.10.2012 14:08 Aedalus

ПСТАН

35. hirthwork0xd34df00d /33 18.10.2012 14:15 mcabberB18BD806

ок, хочешь учитывать эпсилон? засунь его тоже под корень с некоторым коэффициентом. появится при этом ещё проблема, что не будет чёткой границы разделяющей числа одного знака от чисел с разным знаком. но зато для твоего примера test (0.0001, -0.0001, eps = 1) оно будет давать результат ≈2e-8, т.е. относительно столь огромного эпсилона, эти числа реально близки

36. hirthworkhirthwork /35 18.10.2012 14:16 mcabberB18BD806

2e-4, конечно же

37. hirthworkhirthwork /36 18.10.2012 14:16 mcabberB18BD806

при весе эпсилона равном единице

38. 0xd34df00dhirthwork /35 18.10.2012 14:20 Aedalus

Че блядь? Под какой корень? Что ты несешь вообще?

39. hirthwork0xd34df00d /38 18.10.2012 14:20 mcabberB18BD806

test(a, b, eps) = fabs(a — b) / sqrt(a * a + b * b + eps)

40. 0xd34df00dhirthwork /39 18.10.2012 14:21 Aedalus

А сравниваь с чем?

42. hirthwork0xd34df00d /40 18.10.2012 14:24 mcabberB18BD806

с единицей, да. или с эпсилоном делённым на произведение a и b по модулю

43. DZhon 18.10.2012 14:28 STARGATE

Из бесконечной метрики берешь и строишь конечную с той же топологией: d'(x,y) = d(x,y) / (1 + d(x,y)), d(x,y), например, |x-y| => 0 при совпадении, |x-y| = 1 при максимальном различии.

44. DZhonDZhon /43 18.10.2012 14:29 STARGATE

Хуйню написал, имел ввиду так: например, |x-y| в качестве d => = 0 при совпадении, = 1 при максимальном различии.

45. ulidtkohirthwork /8 18.10.2012 14:46

крутота

46. ulidtko 18.10.2012 14:48

> корректность, разумность, критерии
> относительная близость

омг, куда я попал

47. ulidtkoDZhon /43 18.10.2012 14:50

алсо, горжусь вот этим своим ответом на тему флоатов http://stackoverflow.com/a/4951103/53117...

*попеарился*

48. DZhonulidtko /47 18.10.2012 14:56 STARGATE

Гм, это же на первой паре численных методов рассказывают, что должна задаваться невязка для решения.

49. ulidtkoDZhon /48 18.10.2012 15:02

как бы да — но ты почитай тот тред, там никто об этом не упоминал. Я должен был высказаться!

50. DZhonulidtko /49 18.10.2012 15:04 STARGATE

Капитан дальнего видения :)

51. hirthworkulidtko /47 18.10.2012 15:04 mcabberBB9EADEE

tl;dr что там?

52. DZhonhirthwork /51 18.10.2012 15:05 STARGATE

Мсье вещает о том, что нельзя взять и просто так сделать цикл по while (a != b), где a и b — числа с плавающей точкой.

53. ulidtkoDZhon /52 18.10.2012 15:14

эй, ты всё напутал, можно!

55. DZhonulidtko /53 18.10.2012 15:24 STARGATE

грязный хацкер ;[

56. 0xd34df00dulidtko /46 18.10.2012 16:18 Azoth_primary

В страну отсутствия четкого ТЗ.

57. 0xd34df00dDZhon /52 18.10.2012 16:18 Azoth_primary

you.dont.say.jpg

58. DZhon0xd34df00d /57 18.10.2012 16:50

Yep.
Так ты применил уж что-то по сабжу ? Например, то, что я в 43 писал.

59. 0xd34df00dDZhon /58 18.10.2012 16:51 Azoth_primary

Мы решили, что занимаемся хуйней, ибо на самом деле нам надо сравнивать вероятности в (0; 1), а мы чего-то дженериками объебались.

60. DZhon0xd34df00d /59 18.10.2012 16:53

>Мы решили, что занимаемся хуйней
Типичный сириез бизнес ин совиет раша.

61. 0xd34df00dDZhon /60 18.10.2012 16:53 Azoth_primary

А то! :3

62. werdn0xd34df00d /56 18.10.2012 17:04

дык, сформулируй

63. hirthwork0xd34df00d /59 19.10.2012 06:57

Для тебя это типично.

Do you really want to delete ?