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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2013, 23:47   #1
Dimabara
Пользователь
 
Регистрация: 15.10.2012
Сообщений: 33
По умолчанию Вывод графика функции на форму и её табуляция в stringgrid

Дело вот в чем:
график функции выводит - с этим все нормально, но вот сама табуляция функции в таблицу не происходит из-за ошибки "invalid floating point operation"

сама функция выглядит так:
log abs((x^2-4)/(x^2-1))

вроде бы нигде деление на ноль не происходит, ибо в самой функции прописано что делить на ln(2) так почему же тогда выбивает эту ошибку
может кто-то знает, прошу подсказки в решении этой проблемы


часть кода, которые в архиве, именно здесь ошибка
for i1:=1 to n1 do
begin
x1:=a+h*(i1+1);
y1:=(Ln(abs(((x1*x1)-4)/((x1*x1)-1))))/(ln(2));

strngrd1.Cells[0,i1]:=FloatToStrF(x1,fffixed,6,3);
strngrd1.Cells[1,i1]:=FloatToStrF(y1,fffixed,6,3);

end;
Вложения
Тип файла: rar Архив WinRAR.rar (194.7 Кб, 10 просмотров)
Dimabara вне форума Ответить с цитированием
Старый 01.02.2013, 23:57   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ln(0) не определён, может быть, у вас под логарифмом ноль вычисляется (например, при x1 =2 )?

ваш код не смотрел...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.02.2013, 00:09   #3
XeruH
Форумчанин
 
Регистрация: 17.09.2010
Сообщений: 229
По умолчанию

Используйте тэг CODE.
Почему в теме Паскаль то? а не в Delphi?
По теме. С помощью трассировки посмотрите при каких значениях возникает ошибка.
Правильно заданный вопрос - половина ответа!
XeruH вне форума Ответить с цитированием
Старый 02.02.2013, 01:19   #4
DmitriB
Пользователь
 
Регистрация: 31.01.2013
Сообщений: 12
По умолчанию

У вас же x от -15 увеличивается, а в формуле присутствует деление, например вы делите на (x1*x1-1), что вполне может обратиться в ноль на определенном шаге
DmitriB вне форума Ответить с цитированием
Старый 03.02.2013, 00:29   #5
Dimabara
Пользователь
 
Регистрация: 15.10.2012
Сообщений: 33
По умолчанию

может, но при других значениях тоже самое
Dimabara вне форума Ответить с цитированием
Старый 03.02.2013, 10:42   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну так добавьте обработку исключений и узнаете, при каком значении X1 выражение не может быть вычислено:
Код:
for i1:=1 to n1 do
 begin
   x1:=a+h*(i1+1);
   strngrd1.Cells[0,i1]:=FloatToStrF(x1,fffixed,6,3);
   try
      y1:=(Ln(abs(((x1*x1)-4)/((x1*x1)-1))))/(ln(2));
      strngrd1.Cells[1,i1]:=FloatToStrF(y1,fffixed,6,3);
   except
      strngrd1.Cells[1,i1]:='# невозможно вычислить функцию';
   end; 
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.02.2013, 12:26   #7
Dimabara
Пользователь
 
Регистрация: 15.10.2012
Сообщений: 33
По умолчанию

дело в том, что я ставлю это условие, график функции рисуется, все нормально, но таблица не заполняется значениями и "# невозможно выполнить функцию" не выбивает, а ошибку выбивает все в той же строке
y1:=(Ln(abs(((x1*x1)-4)/((x1*x1)-1))))/(ln(2));
Dimabara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табуляция функции на заданом интервале lilywka Помощь студентам 1 29.03.2013 11:17
Программа Windows Form Табуляция функции stas_kovel Windows Forms 2 06.11.2012 19:50
Программа Windows Form Табуляция функции stas_kovel Помощь студентам 0 04.11.2012 15:05
Табуляция и графика. Елена93 Помощь студентам 2 13.02.2012 10:19