Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2012, 17:21   #1
_SatanA_
Пользователь
 
Аватар для _SatanA_
 
Регистрация: 17.10.2009
Сообщений: 13
По умолчанию Invalid floating point operation

Доброго времени суток.

Вычисляю нелинейное уравнение, пытаюсь строить график
В ходе вычислений ловлю Invalid floating point operation

Это собственно вычисление функции на текущем значении икса, arg - это аргумент.
Код:
Result := arg * Power( Cos( x/arg ), 3/4 ) +
    arg * Sqrt( Sin( Ln( arg * arg * x ) ) ) +
      Ln( ArcTan(x) ) + Cos( Power( x, arg/2 ) ) + arg;
Вот само задание


Я понимаю, что здесь куча мест, где можно словить 0.
Как быть в такой ситуации? Гуру, помогите
_SatanA_ вне форума Ответить с цитированием
Старый 31.01.2012, 18:58   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Попробуйте упростить математически эту формулу.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 31.01.2012, 20:02   #3
_SatanA_
Пользователь
 
Аватар для _SatanA_
 
Регистрация: 17.10.2009
Сообщений: 13
По умолчанию

Упростил бы, да не силен в тригонометрии, и смутно знаю что такое логарфим.
Если бы вы помогли, был бы Вам крайне признателен.
_SatanA_ вне форума Ответить с цитированием
Старый 31.01.2012, 21:25   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Разбейте на отдельные команды, чтобы проследить в отладчике где ругаться будет. А то впихнули все в одно выражение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.01.2012, 21:33   #5
_SatanA_
Пользователь
 
Аватар для _SatanA_
 
Регистрация: 17.10.2009
Сообщений: 13
По умолчанию

Уважаемый Аватар, я прослеживал. Почти везде. Наверное буду рисовать график с прерываниями просто, как маткад.
_SatanA_ вне форума Ответить с цитированием
Старый 31.01.2012, 22:29   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А на область определения функций нельзя посмотреть? Корень квадратный от минуса не берется, а вашей формуле запросто может минус быть, потому что в аргументе SIN. Логарифм от минуса тоже ошибка, а у вас может быть, поскольку берется от арктангенса. Используйте TRY ... EXCEPT и вперед
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.01.2012, 22:52   #7
_SatanA_
Пользователь
 
Аватар для _SatanA_
 
Регистрация: 17.10.2009
Сообщений: 13
По умолчанию

благодарю, уже обернул в try except.
а что касается ошибок, так о них написал еще в первом посте. просто думал, что есть какой-то способ упрощения функции, кроме обхода ошибок.
в общем спасибо всем, тему можно считать закрытой.
_SatanA_ вне форума Ответить с цитированием
Старый 31.01.2012, 23:04   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

_SatanA_, есть и очень много.
Разбейте функцию на компоненты и вычисляйте отдельно, там вам будет проще контролировать математику.
Человек_Борща вне форума Ответить с цитированием
Старый 01.02.2012, 09:04   #9
_SatanA_
Пользователь
 
Аватар для _SatanA_
 
Регистрация: 17.10.2009
Сообщений: 13
По умолчанию

Уважаемый Человек_Борща, я не совсем понял Ваш совет.
Если просто считать по частям, деление на ноль в некоторых местах в зависимости от значения икса и аргумента никуда не денется.
_SatanA_ вне форума Ответить с цитированием
Старый 01.02.2012, 09:09   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы аргумент на ноль то проверяете?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid floating point operation на паскале maziLa Помощь студентам 3 26.05.2010 19:37
invalid floating point operation Mikhail91 Общие вопросы C/C++ 5 24.03.2010 00:05
Ошибка: invalid floating point operation Willow Помощь студентам 3 24.01.2010 18:42
invalid floating point operation mosq Общие вопросы Delphi 7 01.11.2009 13:28
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16