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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2008, 14:08   #1
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию Паскаль. Подскажите пожалуста как решить эту задачу.

НЕ используя стандартные функции, вычислить с точностью ε>0

Y=arctgx=x-x(в степени 3)/3+x(в степени 5)/5-…+(-1)(в степени n) x(в степени2n+1)/(2n+1)+…(|x|<1)
svobodys вне форума Ответить с цитированием
Старый 28.10.2008, 14:26   #2
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

вроде так......

Код:
var dx,x,e,y:real;
    i:integer;
begin
 readln(x,e);
 y:=x;
 dx:=-x*x*x/3;
 y:=y+dx;
 i:=3;
 while dx>e do
  begin
   dx:=-dx*i*x*x/(i+2);
   y:=y+dx;
  end;
 writeln(y);
 readln;
end.
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 28.10.2008, 15:02   #3
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию

а можешь пояснить, что ты подрузомиваешь под этими переменными?
svobodys вне форума Ответить с цитированием
Старый 28.10.2008, 15:20   #4
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

e - это точность (лучше ставить около 0.0001)
dx - приращение функции....... элемент ряда....
y - сама функция
x - аргумент
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 28.10.2008, 16:39   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вообще-то неправильно считает, знаменатель не надо все время умножать. Вот так правильно считает.
Код:
var dx,x,e,y,t:real;
    i:integer;
begin
 readln(x,e);
 dx:=x;
 y:=0;
 i:=0;
 t:=1/(2*i+1);
 while abs(dx)>e do
  begin
   y:=y+dx*t;
   inc(i);
   dx:=-dx*x*x;
   t:=1/(2*i+1);
  end;
 writeln(y:0:5);
 readln
end.
puporev вне форума Ответить с цитированием
Старый 28.10.2008, 19:34   #6
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию

Последняя версия не работает нули выдает только
svobodys вне форума Ответить с цитированием
Старый 28.10.2008, 19:40   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вы даже готовой программой пользоваться не умеете. Да если бы она не работала, я бы выложил ее? Что-то где-то пропустили, или написали не так. Введите через пробел 0,5 0,0001 и получите 0,46365.
puporev вне форума Ответить с цитированием
Старый 30.10.2008, 01:11   #8
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

да да...... знаменатель то я домножал..... dx:=-dx*i*x*x/(i+2)
просто abs(e) не взял)))))
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 30.10.2008, 07:54   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Знаменатели то как раз и не надо перемножать, из-за этого и неправильно. У каждой дроби свой, не зависящий от предыдущего знаманатель t:=1/(2*i+1); Числитель домножаем на -x^2, а потом делим на знаменатель.
puporev вне форума Ответить с цитированием
Старый 04.11.2008, 13:51   #10
svobodys
Пользователь
 
Регистрация: 07.10.2008
Сообщений: 42
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Вообще-то неправильно считает, знаменатель не надо все время умножать. Вот так правильно считает.
Код:
var dx,x,e,y,t:real;
    i:integer;
begin
 readln(x,e);
 dx:=x;
 y:=0;
 i:=0;
 t:=1/(2*i+1);
 while abs(dx)>e do
  begin
   y:=y+dx*t;
   inc(i);
   dx:=-dx*x*x;
   t:=1/(2*i+1);
  end;
 writeln(y:0:5);
 readln
end.


Сказали, что код не правильный.
Вот еще раз условие, может вы меня не правИльно поняли...
[ATTACH]НЕ используя стандартные функции.doc[/ATTACH]
svobodys вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
есликто нибудь знает как решить эту задачу ,то все в ваших руках! эра Помощь студентам 9 25.04.2008 00:06
Подскажите как реализовать эту ерунду.. Origammi JavaScript, Ajax 2 17.08.2007 23:49