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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 17:57   #1
Юлия67
 
Регистрация: 07.03.2013
Сообщений: 8
Восклицание Рассчитать N значений y(x) на интервале от а до b

Рассчитать N значений y(x) на интервале х принадлежит [а;b]. Каждое значение функции рассчитывать с точностью эпсилон (е).
Изображения
Тип файла: jpg Безымянный (1).JPG (6.4 Кб, 59 просмотров)
Юлия67 вне форума Ответить с цитированием
Старый 11.03.2013, 19:38   #2
Юлия67
 
Регистрация: 07.03.2013
Сообщений: 8
Восклицание

Код:
Program Lena_1;
uses crt;
function Fact(N:word):real;
begin
  if N<=1 then Fact:=1
          else Fact := N*Fact(N-1);
  end;
function Exp1(x, e:real):real;
  var s, t:real;
  i:word;
  begin
   i:=7;
   s:=2*x/Fact(2*i+1);
   t:=1;
   while abs(t)>=e do
  begin
   inc(i);
   t:=2*x/Fact(2*i+1);
   s:=s+t;
  end;
Exp1:=S;
end;

var
  a,b,N,c,j:integer;
  x,y,d:real;
  e:real;

BEGIN
clrscr;
repeat
write('vvedite tochnost 0<E<1 E:=');
readln(e);
until (e>0)and(e>1);
writeln('Ukaghite otrezok glya x');
repeat
write('a:=');
readln(a);
write('b:=');
readln(b);
Writeln ('N:=');
Readln(N);
until a<>b;
if a>b then
   begin
   c:=a; a:=b; b:=c
   end;
writeln('x prinadleghit otrezky [',a,';',b,']');
x:=a; j:=1;

d:=(b-a)/(N-1);
writeln;
while x<=b+0.1 do
   begin
   if x<>0 then
   writeln('x',j,'=',x:5:2,' y(x)=', Exp1(x,e):0:(N-1),'s tochnostyu E=',e:0:(N-1));
    inc(j);
    x:=x+d
    end;
readln
END.


помогите пожалуйста подкорректировать программу, где то ошибка не могу понять где

Последний раз редактировалось Юлия67; 11.03.2013 в 19:40.
Юлия67 вне форума Ответить с цитированием
Старый 11.03.2013, 21:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Каждое значение функции рассчитывать с точностью эпсилон (е).
Что означает эта фраза?
Как можно функцию рассчитывать с какой-то точностью? И зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.03.2013, 22:56   #4
Юлия67
 
Регистрация: 07.03.2013
Сообщений: 8
По умолчанию

сама не понимаю, такое вот задание дали...
Юлия67 вне форума Ответить с цитированием
Старый 11.03.2013, 23:08   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Как можно функцию рассчитывать с какой-то точностью? И зачем?
Вот есть функция, равная сумме бесконечного ряда.
Поскольку факториал растет гораздо быстрее линейной функции от х, то очень быстро очередной член ряда оказывается меньше наперед заданного эпсилон.

Чуть-чуть исправил код:
Код:
Program Lena_1;
uses crt;
function Fact(N: word): real;
begin
  if N <= 1 then
    Fact := 1
  else
    Fact := N * Fact(N - 1);
end;

function Exp1(x, e: real): real;
var
  s, t: real;
  i: word;
begin
  i := 7;
  s := 0;
  t := 2 * x / Fact(2 * i + 1);
  while abs(t) >= e do
  begin
    s := s + t;
    inc(i);
    t := t / (2 * i + 1);
  end;
  Exp1 := s;
end;

var
  N, j: integer;
  a, b, c, x, y, e: real;

BEGIN
  clrscr;
  repeat
    write('vvedite tochnost 0<E<1 E:=');
    readln(e);
  until (e > 0) and (e < 1);
  writeln('Ukaghite otrezok glya x');
  repeat
    write('a:=');
    readln(a);
    write('b:=');
    readln(b);
    write('N:=');
    readln(N);
  until a <> b;
  if a > b then
  begin
    c := a;
    a := b;
    b := c;
  end;
  writeln('x prinadleghit otrezky [', a:0:0, ';', b:0:0, ']');
  x := a;
  j := 1;
  writeln;
  while x <= b do
  begin
    writeln('x', j, '=', x:5:2, ' y(x)=', Exp1(x, e):0:10, ' s tochnostyu E=',
      e:0:10);
    inc(j);
    x := a + (b - a) * (j - 1) / (N - 1);
  end;
  readln;
END.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 11.03.2013 в 23:28.
BDA вне форума Ответить с цитированием
Старый 12.03.2013, 14:11   #6
Юлия67
 
Регистрация: 07.03.2013
Сообщений: 8
По умолчанию

отлично, спасибо, а можно еще вопрос? почему у меня y(x) всегда 0 равен??
Юлия67 вне форума Ответить с цитированием
Старый 12.03.2013, 15:29   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пожалуйста.
Потому что факториал в первом члене равен 15! = 1307674368000.
Для теста я ввел a = 1307674368000, b - любое число, чуть большее a, и получил y, равный 2.11 (по-моему, вполне реальный результат).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.03.2013, 16:17   #8
Юлия67
 
Регистрация: 07.03.2013
Сообщений: 8
По умолчанию

все ясно)) спасибо огромное еще раз)
Юлия67 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Табуляция функции на заданом интервале lilywka Помощь студентам 1 29.03.2013 11:17
Pascal: Рассчитать N значений y(x) на интервале от а до b Юлия67 Помощь студентам 0 07.03.2013 20:49
В цикле do ... while посчитать сумму на интервале. Leshii Общие вопросы C/C++ 1 02.03.2012 11:10
продифференцировать на интервале IvaniuS Помощь студентам 7 21.04.2011 14:12
наити три деиствтельных числа в интервале 10 до 99 Lewd Помощь студентам 2 07.06.2010 16:42