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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 01:09   #1
frog1h
Новичок
Джуниор
 
Регистрация: 27.10.2013
Сообщений: 2
По умолчанию Паскаль. Почему в результатах везде нули и что такое NaN

Доброго времени суток. Буду вам очень признателен, если скажите, где в моем коде ошибки, почему он в результатах мне некоторые значения пишет равными 0, когда они таковыми не являются, и что вообще такое NaN. Заранее большое человеческое спасибо

Код:
Код:
const
  m = 5;

var
  Tf1, Tf2, Cnp1, Cnp2, S, LD, a, Tn1, Tn2, k, Tc: real;
  j, z: integer;
  Tn1H, Tn2H, Tn1K, Tn2K, q1H, q1K, q2H, q2K, qcp1, qcp2, Mcp, Acp, Dcp, Bi, N, Fo, Tn2p, x, Tau, c1, T123, b1, b2: array[1..m] of real;

begin
  write('Введите температуру печи Tf1='); readln(Tf1);
  write('Введите температуру печи Tf2='); readln(Tf2);
  write('Введите коэффициент излучения Cnp1='); readln(Cnp1);
  write('Введите коэффициент излучения Cnp2='); readln(Cnp2);
  write('Введите толщину пластины S='); readln(S);
  write('Введите коэффициент теплопроводности LD='); readln(LD);
  write('Введите коэффициент температуропроводности a='); readln(a);
  write('Введите температуру поверхности Tn1='); readln(Tn1);
  write('Введите температуру поверхности Tn2='); readln(Tn2);
  write('Введите минимальную температуру пластины Tc='); readln(Tc);
  k := (Tn1 - Tn2) / m;
  for j := 1 to m do
    Tn1H[j] := Tn1;
  Tn1K[j] := Tn1H[j] - k;
  Tn1H[j] := Tn1K[j];
  Tn2H[j] := Tn2;
  Tn2K[j] := Tn2H[j] + k;
  Tn2H[j] := Tn2K[j];
  q1H[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1H[j] / 100))));
  q1K[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1K[j] / 100))));
  q2H[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2H[j] / 100))));
  q2K[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2K[j] / 100))));
  qcp1[j] := (q1H[j] + q1K[j]) / 2;
  qcp2[j] := (q2H[j] + q2K[j]) / 2;
  Mcp[j] := qcp1[j] / (qcp1[j] + qcp2[j]);
  Acp[j] := sqrt((q1H[j] / (Tf1 - Tn1H[j])) * (q1K[j] / (Tf1 - Tn1K[j])));
  Dcp[j] := Mcp[j] * S;
  Bi[j] := (Acp[j] * Dcp[j]) / LD;
  N[j] := (Cos(Bi[j]) / Sin(Bi[j])) * Bi[j];
  Fo[j] := -(1 / (N[j] * N[j])) * ln(((Tn1K[j] - Tf1) * (N[j] + Sin(N[j]) * Cos(N[j]))) / ((Tn1 - Tf1) * 2 * Sin(N[j]) * Cos(0.2 * N[j]) - (Tn1 - Tf1) * (Sin(N[j]) - N[j] * Cos(N[j]) * Cos(0.2 * N[j]))));
  c1[j] := 1 - 1 / Mcp[j];
  Tn2p[j] := Tf1 + (Tn1 - Tf1) * (((2 * Sin(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j])) - (Tn1 - Tc) * ((4 / (N[j] * N[j])) * ((Sin(N[j]) - N[j] * Cos(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j]));
  if abs(Tn2p[j] - Tn2K[j]) > 5 then begin
    x[j] := (Tn2p[j] + Tn2K[j]) / 2;
    Tn2K[j] := Tn2p[j] + x[j];
  end
  else begin
    x[j] := (Tn2p[j] + Tn2K[j]) / 2;
    Tn2K[j] := Tn2K[j] - x[j];
    q1H[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1H[j] / 100))));
    q1K[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1K[j] / 100))));
    q2H[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2H[j] / 100))));
    q2K[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2K[j] / 100))));
    qcp1[j] := (q1H[j] + q1K[j]) / 2;
    qcp2[j] := (q2H[j] + q2K[j]) / 2;
    Mcp[j] := qcp1[j] / (qcp1[j] + qcp2[j]);
    Acp[j] := sqrt((q1H[j] / (Tf1 - Tn1H[j])) * (q1K[j] / (Tf1 - Tn1K[j])));
    Dcp[j] := Mcp[j] * S;
    Bi[j] := (Acp[j] * Dcp[j]) / LD;
    N[j] := (Cos(Bi[j]) / Sin(Bi[j])) * Bi[j];
    Fo[j] := -(1 / (N[j] * N[j])) * ln(((Tn1K[j] - Tf1) * (N[j] + Sin(N[j]) * Cos(N[j]))) / ((Tn1 - Tf1) * 2 * Sin(N[j]) * Cos(0.2 * N[j]) - (Tn1 - Tf1) * (Sin(N[j]) - N[j] * Cos(N[j]) * Cos(0.2 * N[j]))));
    c1[j] := 1 - 1 / Mcp[j];
    Tn2p[j] := Tf1 + (Tn1 - Tf1) * (((2 * Sin(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j])) - (Tn1 - Tc) * ((4 / (N[j] * N[j])) * ((Sin(N[j]) - N[j] * Cos(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j]));
    Tau[j] := (Fo[j] * Dcp[j] * Dcp[j]) / Acp[j];
  end;
  for j := m downto 1 do
    Tn1H[j] := Tn1;
  Tn1K[j] := Tn1H[j] - k;
  Tn1H[j] := Tn1K[j];
  Tn2H[j] := Tn2;
  Tn2K[j] := Tn2H[j] + k;
  Tn2H[j] := Tn2K[j];
  q1H[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1H[j] / 100))));
  q1K[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1K[j] / 100))));
  q2H[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2H[j] / 100))));
  q2K[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2K[j] / 100))));
  qcp1[j] := (q1H[j] + q1K[j]) / 2;
  qcp2[j] := (q2H[j] + q2K[j]) / 2;
  Mcp[j] := qcp1[j] / (qcp1[j] + qcp2[j]);
  Acp[j] := sqrt((q1H[j] / (Tf1 - Tn1H[j])) * (q1K[j] / (Tf1 - Tn1K[j])));
  Dcp[j] := Mcp[j] * S;
  Bi[j] := (Acp[j] * Dcp[j]) / LD;
  N[j] := (Cos(Bi[j]) / Sin(Bi[j])) * Bi[j];
  Fo[j] := -(1 / (N[j] * N[j])) * ln(((Tn1K[j] - Tf1) * (N[j] + Sin(N[j]) * Cos(N[j]))) / ((Tn1 - Tf1) * 2 * Sin(N[j]) * Cos(0.2 * N[j]) - (Tn1 - Tf1) * (Sin(N[j]) - N[j] * Cos(N[j]) * Cos(0.2 * N[j]))));
frog1h вне форума Ответить с цитированием
Старый 27.10.2013, 01:09   #2
frog1h
Новичок
Джуниор
 
Регистрация: 27.10.2013
Сообщений: 2
По умолчанию

Продолжение кода:

Код:
  c1[j] := 1 - 1 / Mcp[j];
  Tn2p[j] := Tf1 + (Tn1 - Tf1) * (((2 * Sin(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j])) - (Tn1 - Tc) * ((4 / (N[j] * N[j])) * ((Sin(N[j]) - N[j] * Cos(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j]));
  if abs(Tn2p[j] - Tn2K[j]) > 5 then begin
    x[j] := (Tn2p[j] + Tn2K[j]) / 2;
    Tn2K[j] := Tn2p[j] + x[j];
  end
  else begin
    x[j] := (Tn2p[j] + Tn2K[j]) / 2;
    Tn2K[j] := Tn2K[j] - x[j];
    q1H[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1H[j] / 100))));
    q1K[j] := Cnp1 * ((exp(4 * ln(Tf1 / 100))) - (exp(4 * ln(Tn1K[j] / 100))));
    q2H[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2H[j] / 100))));
    q2K[j] := Cnp2 * ((exp(4 * ln(Tf2 / 100))) - (exp(4 * ln(Tn2K[j] / 100))));
    qcp1[j] := (q1H[j] + q1K[j]) / 2;
    qcp2[j] := (q2H[j] + q2K[j]) / 2;
    Mcp[j] := qcp1[j] / (qcp1[j] + qcp2[j]);
    Acp[j] := sqrt((q1H[j] / (Tf1 - Tn1H[j])) * (q1K[j] / (Tf1 - Tn1K[j])));
    Dcp[j] := Mcp[j] * S;
    Bi[j] := (Acp[j] * Dcp[j]) / LD;
    N[j] := (Cos(Bi[j]) / Sin(Bi[j])) * Bi[j];
    Fo[j] := -(1 / (N[j] * N[j])) * ln(((Tn1K[j] - Tf1) * (N[j] + Sin(N[j]) * Cos(N[j]))) / ((Tn1 - Tf1) * 2 * Sin(N[j]) * Cos(0.2 * N[j]) + (Tn1 - Tf1) * (Sin(N[j]) - N[j] * Cos(N[j]) * Cos(0.2 * N[j]))));
    c1[j] := 1 - 1 / Mcp[j];
    Tn2p[j] := Tf1 + (Tn1 - Tf1) * (((2 * Sin(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j])) - (Tn1 - Tc) * ((4 / (N[j] * N[j])) * ((Sin(N[j]) - N[j] * Cos(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * c1[j]) * Exp(-N[j] * N[j] * Fo[j]));
    Tau[j] := (Fo[j] * Dcp[j] * Dcp[j]) / Acp[j];
  end;
  for j := 1 to m do
  begin
    b1[j] := 0;
    for z := 1 to 5 do
    begin
      b2[j] := (Tn1H[j] + Tn2K[j]) / 5;
      b1[j] := b1[j] + b2[j];
      T123[j] := Tf1 + (Tn1 - Tf1) * (((2 * Sin(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * b1[j]) * Exp(-N[j] * N[j] * Fo[j])) - (Tn1 - Tc) * ((4 / (N[j] * N[j])) * ((Sin(N[j]) - N[j] * Cos(N[j])) / (N[j] + Sin(N[j]) * Cos(N[j]))) * Cos(N[j] * b1[j]) * Exp(-N[j] * N[j] * Fo[j]));
      writeln(T123[j]:6:2,    Dcp[j]:6:2,    Tau[j]:6:2);
    end;
  end;
  readln;
end.
frog1h вне форума Ответить с цитированием
Старый 27.10.2013, 01:58   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Обычно NaN - Not a Number - не число.
Arigato вне форума Ответить с цитированием
Старый 27.10.2013, 13:07   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Вот фрагмент Вашего кода из первого поста
Код:
for j := 1 to m do
    Tn1H[j] := Tn1;
  Tn1K[j] := Tn1H[j] - k;
  Tn1H[j] := Tn1K[j];
Как Вы думаете, чему должна быть равна j для второй, третьей и других строк?
Так думаю, что необходимо правильно сформировать тело цикла, используя операторные скобки, заключив в них необходимую часть операторов.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что такое eof в Паскаль Ramazan05duldug Паскаль, Turbo Pascal, PascalABC.NET 6 18.07.2011 13:51
почему нули в масиве не удаляются? ribak_dvl Помощь студентам 2 05.12.2010 12:50
Что обозначает NaN? WitaliG Помощь студентам 6 22.11.2010 17:50
Что обозначает NaN? WitaliG Помощь студентам 2 21.11.2010 23:36
то такое мастерство в программировании, что такое мастер программист и что он может? Cezar Свободное общение 29 02.06.2007 23:48