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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2012, 19:05   #1
misery24-7
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 23
По умолчанию ряд Тейлора

сидел делал прогу на ряд Тейлора,вот само задание и формула:



Написал ее вобщем,но значение считает она не верное.Не являюсь сильным знатоком математики,поэтому прошу помощи.Код прилагаю

Код:
program demo;
var
  xn, xk, h, x, t, e, s, c,k: real;
  n:integer;
  begin
  repeat
    write('Vvedite nachalo i konec intervala xn,xk, xk>xn: ');
    {Запрашиваем у пользователя отрезок, на котором будем рассчитывать функцию}
    readln(xn, xk);
  until (xk > xn);
  repeat
    write('vvedite shag tabulacii h>0,h<', xk - xn:0:1, ' h= ');
    {Запрашиваем шаг, пока он не удовлетворит условиям: больше нуля и меньше
     рассматриваемого отрезка}
    readln(h);
  until(h > 0) and (h < xk - xn);
  repeat
    write('vvedite tochnost(0,1) e= ');
    {Запрашиваем точность расчета, пока она не станет в пределах (0;1)}
    readln(e);
  until(e > 0) and (e < 1);
  writeln('Tabulirovanie funkcii y=e^(-x)');
  writeln('Na intervale [', xn:0:1, ';', xk:0:1, '] s shagom ', h:0:1);
  writeln('---------------------------');
  writeln('|   x   |    S    |   n   |');
  writeln('---------------------------');
  x := xn; {становимся в начало отрезка}
  while x <= xk + h / 2 do {перебираем все иксы на данном отрезке}
  begin
    s := 0;
    n := 0;
    c := 1;
    t := 1;
    k:=1;
    while abs(t / c) > e do {считаем функцию по формуле,пока элемент не станет
    меньше точности}
    begin
      n := n + 1;
      s := s + (t / c)*(k);
      k:=-k;
      t := t * (-x);
      c := c * n;
    end;
    writeln('|', x:4:1, ' |', s:8:4, ' |', n:8, ' |');
    x := x + h;
  end;
  writeln('---------------------------');
end.
misery24-7 вне форума Ответить с цитированием
Старый 20.06.2012, 19:28   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Все никак не сделаете?

Ошибка состоит в том, что вы ввели параметр k, отвечающий за знак, но знак уже учтен.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.06.2012, 19:35   #3
misery24-7
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 23
По умолчанию

BDA, да чет все не могу сдать ее
препод говорит что неправильно она считает,сам не понимаю почему
вот убрал параметр k,так должно быть?

Код:
while x <= xk + h / 2 do {перебираем все иксы на данном отрезке}
  begin
    s := 0;
    n := 0;
    c := 1;
    t := 1;
    while abs(t / c) > e do {считаем функцию по формуле,пока элемент не станет
    меньше точности}
    begin
      n := n + 1;
      s := s + (t / c);
      t := t * (-x);
      c := c * n;

Последний раз редактировалось misery24-7; 20.06.2012 в 19:38.
misery24-7 вне форума Ответить с цитированием
Старый 20.06.2012, 19:45   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Да, так. А что именно не нравится преподу?
Числа получаются неправильные?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.06.2012, 19:54   #5
misery24-7
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 23
По умолчанию

BDA,ввожу такие значения:
начало отсчета - 1
конец - 6
шаг табуляции - 2
точность - 0.001
потом прога считает,вылезает табличка:
x - значение аргумента
S - значение функции
n - количество просуммированных членов ряда

---------------------
| x | S | n |
----------------------
| 1.0 | 0.3681 | 7 |
| 3.0 | 0.0500 | 13 |
| 5.0 | 0.0063 | 18 |
| 7.0 | 0.0007 | 24 |
------------------------

и препод мне говорит,мол,подставь свой первый икс(1.0) в функцию(то есть e^(-1),как в формуле),должно получаться -2.7, а у меня там 0.3681,типа неправильно
misery24-7 вне форума Ответить с цитированием
Старый 20.06.2012, 19:57   #6
misery24-7
Пользователь
 
Регистрация: 01.04.2012
Сообщений: 23
По умолчанию

все,я уже сам запутался,уже считаю неправильно,все вроде сходится :DDDD
misery24-7 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ряд Тейлора Антон16 Помощь студентам 2 25.05.2012 00:26
Ряд Тейлора в С++ D.vers Помощь студентам 1 02.01.2012 13:45
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 03:44
ряд Тейлора alexmikt Общие вопросы C/C++ 5 09.12.2010 10:08
Ряд Тейлора siriusz Общие вопросы C/C++ 6 06.02.2009 20:26