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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2007, 20:03   #1
AlieN1310
Новичок
Джуниор
 
Регистрация: 28.06.2007
Сообщений: 2
По умолчанию Задача с рядами

Помогите пожалуйста завтро сдавать а мучаюсь с этой задачей уже 2 дня(((

Функция Y от X задана 2-мя способами формулой ее размножением бесконечного ряда S. Разработать программу вычисления точного Y приближенного к T. Значение функций Y от X при изменение ее аргумента X от А до В шагом дельта Х. Приблеженное значение вычеслить путем суммирования членов ряда, до достижения требуемой точности. Предоставить завершение процесса суммирования членов ряда по заданному max номеру членов ряда n для предотвращения зацикливания итерационного числа, результат расчета вывести ввиде таблицы:
1) Аргумент
2)Точное значение
3)Преближенное значение
4)Количество слогаемых
5)Ошибка

Вот условие: S=-cos(x)+...+((-1)в степени n) * cos(n*x)/(n в квадрате) +...
y=-1/4*( (x в квадрате) - (Pi в квадрате)/3)
xe[0,5;1]; дельта х=0,01; e которая в константе = 0,05.

Вот что у меня получилось но что-то не правельно(((

Program pr4;
uses crt;
const e=0.05;
var S,x,y,p,c:real;
n:integer;
function k(n:integer;s,x:real):real;
var k:real;
begin
if (n div 2)=0 then
p:=cos(n*x)/exp(2*ln(n)) else
p:=-(cos(n*x)/exp(2*lnn)));
s:=s+p;
end;

begin
clrscr;
x:=0.5;
c:=0.1;
while x<=1.1 do begin
y:=-0.25*((sqr(x)-(sqr(Pi)/3)));
S:=-cos(x);
Repeat
n:=n+1;
k(n,s,x);
until ((abs(y-S))<=e) or (n>=1);
write (' n=', n);
write (' k=', k(n,x,s)3);
write (' x=' , x:6:3);
write (' y=' ,y:6:3);
write (' S=', S:6:3);
write (' y-S=' ,(abs(y-S)):6:3);
x:=x+0.1;
writeln;
end;
readln;
end.

Последний раз редактировалось AlieN1310; 28.06.2007 в 20:09.
AlieN1310 вне форума Ответить с цитированием
Старый 29.06.2007, 08:06   #2
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Если это оригинальный код, то в нем 2 ошибки:
Код:
Program pr4;
uses crt;
const
   e=0.05;
var
   S,x,y,p,c:real;
   n:integer;
function k(n:integer;s,x:real):real;
var
   k:real;
begin
  if (n div 2)=0 then
   p:=cos(n*x)/exp(2*ln(n))
    else
      p:=-(cos(n*x)/exp(2*ln(n));   {пропушена скобка перед n}
   s:=s+p;
end;
begin
   x:=0.5;
   c:=0.1;
 while x<=1.1 do
   begin
     y:=-0.25*((sqr(x)-(sqr(Pi)/3)));
     S:=-cos(x);
       Repeat
        n:=n+1;
        k(n,s,x);
       until ((abs(y-S))<=e) or (n>=1);
     write (' n=', n);
     write (' k=', k(n,x,s):3);   {пропушено : перед 3}
     write (' x=' , x:6:3);
     write (' y=' ,y:6:3);
     write (' S=', S:6:3);
     write (' y-S=' ,(abs(y-S)):6:3);
     x:=x+0.1;
     writeln;
   end;
readln;
end.

Последний раз редактировалось Alex21; 29.06.2007 в 08:09.
Alex21 вне форума Ответить с цитированием
Старый 29.06.2007, 13:25   #3
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Изначально n=0 (при инициализации) соответственно цикл
Repeat
n:=n+1;
k(n,s,x);
until ((abs(y-S))<=e) or (n>=1);
выполняется один раз
Трофимов Александр вне форума Ответить с цитированием
Старый 29.06.2007, 13:29   #4
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Не совсем понятно задание xe-это х в диапазоне или умноженный на е,
что за: e которая в константе = 0,05 и для чего она,
S -надо подобрать с точностью е?
Трофимов Александр вне форума Ответить с цитированием
Старый 29.06.2007, 16:58   #5
AlieN1310
Новичок
Джуниор
 
Регистрация: 28.06.2007
Сообщений: 2
По умолчанию

Трофимов Александ, спасибо что решили помочь.
Я до сих пор ломаю голову над задачей.
Правельно это оригинальный код и е это точность.
AlieN1310 вне форума Ответить с цитированием
Старый 29.06.2007, 19:17   #6
Tayfun
Форумчанин
 
Аватар для Tayfun
 
Регистрация: 24.06.2007
Сообщений: 351
По умолчанию Странно

Во первых члены ряда находяться на отрезке [0.5;1] значит цикл нужно открывать на этом отрезке с шагом 0.01, но с другой стороны дано еще приближеное значение находящееся через, отношение суммы эллементов на их количество, где их количество это мах n(индекс эллемента)
НУ примерный алгоритм исходя из моей логики можно представить так:
x:=0.5;
repeat
t:=t+1;
z:=0.5;
s:=0;
while z<=x do begin
if t mod 2=0 then s:=s+cos(x*t)/sqr(t) else s:=s-cos(x*t)/sqr(t)
z:=z+0.01;
end;
y=-1/4*( (sqr(x)) - (sqr(Pi))/3)
writeln('ARGUMENT=',x);
writeln('TOCH ZNACHENIYE=',y);
if s>e then writeln('PRIB ZNACHENIYE=',s-e) else writeln('PRIB ZNACHENIYE=',0);
writeln('KOLICHESTVO ELLEMENTOV=',t);
writeln('OSHIBKA=',e-s);
x:=x+0.01;
until x>1;
Остаеться граматно оформить и надеяться, что я правильно понял задачу!!!
П.С:На компе непроверял, но должно работать.
Я не маюсь бездельем, я от него тащусь!
Tayfun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача по SQL gotex SQL, базы данных 11 23.12.2010 17:52
задача по ООП Lenivec** Фриланс 2 17.07.2008 15:17
Задача по ТП. GE076 Помощь студентам 11 07.12.2007 19:29
Не могу разобраться с рядами RECREATOR Помощь студентам 3 05.12.2007 13:04