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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2011, 10:44   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд.

Составить программу вычисления таблицы значений функции, заданной в виде разложения в ряд. Значение функции вычислять с точностью е>0, т.е. вычисление суммы членов ряда необходимо прекратить, когда абсолютная величина очередного члена ряда разложения окажется меньше е: abs(ак) <е.
При вычислении очередного члена целесообразно воспользоваться рекурентным выражением:
ак+1=ск ак; к= 0, 1, 3, ...,
где ак - некоторый к-ый член ряда; ак+1 - следующий к+1-ый член ряда; ск - коэффициент, определяемый номером к.
При составлении программы необходимо по возможности воспользоваться операторами организации циклов WHILE, REPEAT, FOR.
Границы интервала вычислений функций a и b, величина шага изменения аргумента h и точность вычисления функции е задаются при вводе. На печать выводятся номер по порядку, значение аргумента, соответствующие ему, значение функции и номер члена ряда, на котором закончилось вычисление значение функции, в форме таблицы:
№ Х f (x) № чл.р.
1
2
3
...

Значение выражения,которое необходимо вычислить прикреплено в рисунке!
Изображения
Тип файла: jpg Безымянный.jpg (4.3 Кб, 160 просмотров)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 27.11.2011 в 10:53.
McFrey вне форума Ответить с цитированием
Старый 27.11.2011, 12:46   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Вот что получилось у меня, но программа работает не при любых исходных данных (к примеру, разница между нижней и верхней границей интервала может быть всего лишь в десятых долях, но мне кажется что это не верно).

Код:
uses
  crt;

var
  a, b, h, e, x, fx, ak: real;
  g, f, i, k: integer;

begin
  writeln('Ведите нижнюю границу интервала');
  read(a);
  write('Введите верхнюю границу интервала');
  read(b);
  while b < a do
  begin
    writeln('Значение верхней границы интервала должно быть больше нижней. Повторите ввод');
    readln(b);
  end;
  writeln('Введите шаг изменения переменной Х');
  read(h);
  while (h < 0) or (h > (b - a)) do
  begin
    writeln('Введено не корректное изменение шага Х, повторите ввод');
    read(h);
  end;
  writeln('Введите точность вычислений');
  read(e);
  while e <= 0 do
  begin
    writeln('Точность вычислений не может быть числом отрицательным, повторите ввод');
    read(e);
  end;
  writeln('---------------------------------------------------------------');
  writeln('I № I    X    I     F(x)     I  №чл.ряда');
  writeln('---------------------------------------------------------------');
  x := a;
  g := 1;
  while x <= b do
  begin
    fx := 0;
    k := 0;
    repeat
      if k = 0 then f := 1 else
      begin
        f := 1;
        for i := 1 to k do
          f := f * i;
      end;
      ak := exp(k * ln(2 * x)) / f;
      fx := fx + ak;
      k := k + 1
    until abs(ak) < e;
    writeln('I ', g, ' I  ', x, '  I  ', fx, '  I ', k, ' I');
    x := x + h;
    g := g + 1;
  end;
  writeln('---------------------------------------------------------------');
  readkey;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось Serge_Bliznykov; 28.11.2011 в 16:19.
McFrey вне форума Ответить с цитированием
Старый 29.11.2011, 16:29   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Есть у кого-нибудь идеи?....
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 01.12.2011, 07:21   #4
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
  writeln('---------------------------------------------------------------');
  writeln('I ¹ I       X      I     F(x)     I  №чл.ряда');
  writeln('---------------------------------------------------------------');
  x := a;
  g := 1;
  while x <= b do
  begin
    fx := 0;
    k := 0;
    repeat
      if k = 0 then ak:=1 else
       ak:=ak*2*x/k;
      fx := fx + ak;
      k := k + 1
    until abs(ak) < e;
    writeln('I', g:3, 'I  ', x:11:6, ' I  ', fx:11:6, ' I', k:9, ' I');
    x := x + h;
    g := g + 1;
  end;
  writeln('---------------------------------------------------------------');
Догадаетесь, какой кусок исправить?)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 01.12.2011, 18:31   #5
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Исправил вот так....

Код:
  writeln('---------------------------------------------------------------');
  writeln('I   №   I   X    I   F(x)   I  №чл.ряда');
  writeln('---------------------------------------------------------------');
  x := a;
  g := 1;
  while x <= b do
  begin
    fx := 1;
    u:=2*x;
    k := 1;
    repeat
      f:=1;
      for i := 1 to k do
          f := f * i;
      ak := u / f;
      fx := fx + ak;
      u:=u*2*x;
      k := k + 1
    until abs(ak) < e;
    writeln('I   ', g, '   I  ', x:2:2, '  I  ', fx:2:2, '   I ', k, ' I');
     writeln('I   ', g, '  I  ', x:2:2, '  I  ', fx:2:2, '   I ', k, ' I');
     writeln('I   ', g, ' I  ', x:2:2, '  I  ', fx:2:2, '   I ', k, ' I');
    x := x + h;
    g := g + 1;
  end;
  writeln('---------------------------------------------------------------');
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 01.12.2011 в 18:35.
McFrey вне форума Ответить с цитированием
Старый 01.12.2011, 18:32   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

теперь все работает(( но вот опять беда, точность вычислений "е"....можно брать только меньше 1.....а если программе предстоит с миллионами работать? то точность вычислений определенно должна быть больше чем 1.....как быть?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 02.12.2011, 19:41   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
а если программе предстоит с миллионами работать
не предстоит
ты разберись что такое точность для начала
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 02.12.2011, 20:10   #8
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

точность вычисления.....ну почти тоже самое что допустимая погрешность, но а если в целом? то программа правильно составлена?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 02.12.2011, 21:26   #9
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
if Работает and Считает верно then  программа правильно составлена
else программа неправильно составлена
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 02.12.2011, 21:33   #10
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Все я во всем разобрался)))....спасибо всем что откликнулись))
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 02.12.2011 в 21:40.
McFrey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу вычисления значений Y Настька Помощь студентам 6 20.02.2011 13:49
Составить программу для вычисления значений функции в Delpi Queen Помощь студентам 5 30.05.2010 20:13
Составить программу в delphi для вычисления значений функции на отрезке [a,b] с шагом h. Queen Помощь студентам 1 30.05.2010 15:39
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся.... EVIL Помощь студентам 3 22.11.2009 02:37
Вычисление функции заданной в виде разложения в ряд StudeHt Паскаль, Turbo Pascal, PascalABC.NET 2 02.05.2009 20:08