![]() |
|
Модераторы: bsa |
![]()
|
|
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
vinter, 10 в минус шестой - это я у тебя взял. Если в минус 12-й, то непонятен смысл для других значений коэффициентов: для float, например 1+10^-8 = 1, какой смысл городить для этих значений ненужную проверку? С другой стороны, и для 10^-12 я могу взять коэффициенты уравнения, чтобы первый вариант давал верное решение, а второй - неправильное. А если ты считаешь, что сравнение у меня записано не так (хотя я так понял, что предлагаемый тобой вариант равносилен тому, что у меня названо вторым), напиши свой и приведи значения коэффициентов, когда он даёт лучшее решение, чем вариант, названный у меня первым. |
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
нет не равносилен/ D < e не эквивалентно -e < D < e как это ненужную? вот тебе пример из жизни, была у меня задача в ней были некие математические вычисления. И в результате должно было получится много нулей. Вместо них получались числа в -26 степен. Если сравнивать с нулем, то было бы не тру. Хотя реально это ноль.
Ln78 твои решения частные, я могу 1 поделитьт на max double и взять его эпсилоном, тогда ни одни твои коэффициенты не прокатят. Я не пойму, что ты мне пытаешься доказать. |
||||
|
|||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
vinter, давай без ненужных философствований - приведи свой вариант, с эпсилонами, и покажи, чем он лучше.
Где ты это увидел? Для каких частных случаев вариант разработан, названный мною вариантом 1, и в чём вариант с эпсилонами более общий? Только приведи решение в виде кода и чисел, а не в виде общих рассуждений. P.S. про ты, возможно, не обратил внимание на else в условии: else if (D < eps). Это сообщение отредактировал(а) Ln78 - 10.9.2008, 11:27 |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: нет Всего: 360 |
Чего вы спорите?
vinter - прав, так как сравнивать вещественные числа в компьютерной программе без "зазора" нельзя! Ln78 - прав, так как в правильном решении уравнения надо именно сравнивать на 0, а не на "зазор". Один говорит, что слон большой, а другой - что слон серый |
|||
|
||||
| Mayk |
|
||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 3 Всего: 134 |
Очевидно что вариант с эпсилонам тоже облажаеца. Так как подбирать коефициенты в лом, то делаем ход конём - меняем float на double.
Лажа дедекдет. Эпсилон здесь отработает нормально. Так как это очевидно то код писать не буду. Это сообщение отредактировал(а) Mayk - 10.9.2008, 11:50 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||
|
|||||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
||||
|
||||
| Ln78 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
sergejzr, мы спорим о конкретном вопросе - имеет ли смысл писать эпсилон при решении квадратных уравнений. Не об абстрактном сравнении вещественных чисел вообще. Если говорить вообще, то сравнивать можно и так, и сяк, и наперекосяк, нужно только понимать, что это может за собой повлечь и как в каждой конкретной ситуации лучше делать. Для студента, чтобы решить его задачу, если он взялся учитывать машинную погрешность, тем самым как бы заявил, что не просто так бездумно запрограммировал формулы, а претендует на большее, нужно или писать намного более громоздко, учитывая и возможные переполнения при делении и прочее (при этом непонятно, почему используется float, а не long double), или не заморачиваться на эту тему вообще. Мне так кажется, что более простой вариант может быть засчитан как правильное решение. Mayk, попытка хорошая. Однако у меня твоих результатов не было: в первом случае (float) оба варианта одинаково наврали, что корней нет. С типом double первый вариант выдал (если увеличить точность выдачи до 13 знаков после запятой), что имеются 2 действительных корня -3.333332952316 и -3.333333047684, второй честно сказал, что один действительный корень -3.333333 кратности 2. Учитывая даже такой "грех" первого варианта, если говорить о различных вариантах коэффициентов, в том числе и подобных тому, что я приводил, ты бы какой из вариантов посчитал лучшим? И, кстати, совершенно непонятно, что у тебя выдалось, ты ничего не напутал? Я смотрел на VS2005, процессор обычный интелловский, а ты где? Отредактировано. - я не посмотрел, что ты выдавал только для первого варианта, дополнив выдачей дискриминанта. Этот вопрос снимаю. Вопрос про лучший вариант остаётся. vinter, посмотри внимательнее мой пример. Обрати внимание на самый первый if и учти, что -1<-eps. Это сообщение отредактировал(а) Ln78 - 10.9.2008, 12:50 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 8 Всего: 56 |
||||
|
||||
| Ln78 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: нет Всего: 15 |
Ничего подобного
обрати внимание на слова "в данной ситуации". |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |