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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2016, 14:22   #1
lloudb
Пользователь
 
Регистрация: 08.11.2016
Сообщений: 25
По умолчанию Ошибка NaN (Pascal)

Помогите найти ошибку, не хватает свежего взгляда.
Код:
Код:
function f(x: integer): integer;
var s,i: integer;
  begin
    s:=1;
    if x>1 then
      begin
        for i:=1 to x do s:=s*i;
      end else s:=1;
    f:=s;
  end;
var
  n,i: integer;
  y,x: double;
begin
  n:=12; x:=4.75; 
  for i:=1 to n do
    begin
      y:=y+exp(ln(-1)*i)*(1/f(i-1)*(exp(ln(x)*(2*i+1))/(2*i+1)));
      //(exp(ln(-1)*i))*(1/F)*(exp(ln(x)*a)/a
      writeln(y);
    end;
   writeln(y);
end.
Вывод:
Код:
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
Задача:
Изображения
Тип файла: png Безымянный.png (6.4 Кб, 86 просмотров)
lloudb вне форума Ответить с цитированием
Старый 17.12.2016, 16:02   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

А чему равно ln(-1) ?
type_Oleg вне форума Ответить с цитированием
Старый 18.12.2016, 20:55   #3
lloudb
Пользователь
 
Регистрация: 08.11.2016
Сообщений: 25
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
А чему равно ln(-1) ?
3.14159265 - как показывает Google
lloudb вне форума Ответить с цитированием
Старый 18.12.2016, 20:58   #4
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Нет, он говорит, что
ln(-1)=3.14159265*i
мнимому числу.

Сделайте множитель Sign.
До цикла он равен -1. После вычисления очередного слагаемого y:=y+Sign*(...) добавляете строку Sign:=-Sign.

Последний раз редактировалось FPaul; 18.12.2016 в 21:24.
FPaul вне форума Ответить с цитированием
Старый 18.12.2016, 21:23   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Да, в школе же изучают логарифм. В области действительных чисел он определен только на положительных значениях аргумента.
Зачем городить возведение в степень -1.
Лучше ввести переменную , отвечающую за знак:
Код:
var
  n,i,sg: integer;
  y,x: double;
// в цикле:
  if Odd(i) then sg:=-1 else sg:=1;
  y:=y+sg* // и т.д.
или
Код:
 sg:=1;
// в цикле:
  sg:=-sg;
  y:=y+sg* // и т.д.
type_Oleg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка NaN (Паскаль) lloudb Помощь студентам 6 17.11.2016 14:26
Ошибка nan (c++) bancocker Общие вопросы C/C++ 3 13.08.2012 21:20
Вещественной число NAN (Pascal) leiprechain Помощь студентам 10 25.03.2012 01:51
Значение NAN nXs Общие вопросы Delphi 9 26.11.2011 20:54
Выдаёт NAN DM_bite Помощь студентам 2 26.08.2008 20:52