IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> прогрессия, хелп!
Andrej
сообщение 15.11.2006 16:03
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


arctg(X)= x-x^3/3+x^5/5-x^7/7+x^9/x+...... xe [-1;1]
правелно ли я делаю ? или лутше через массив?

Код

Program first;
uses crt;
var xn,E,summa,p,x2:real;
    i:integer;
begin
clrscr;
repeat
writeln ('введите xn [-1..1]');
readln(xn);
until (xn>=(-1)) and (xn<=1);
write('E=');
read(E);
x2:=xn*xn;
summa:=xn;
p:=xn;
i:=3;
repeat
p:=-p*x2/(i*(i-2));
summa:=summa+p;
i:=i+2;
until p<E;
writeln('p=',p:5:5);
writeln('summa=',summa:5:5);
readln;
readln;
end.


так как мне надо вводить n тоесть n=1 =x
n=2 = x+x^3/3
n=3 = x+x^3/3+x^5/5
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2006 16:22
Сообщение #2


Гость






У тебя не совсем верно здесь:
repeat
p:=-p*x2/(i*(i-2)); { <--- }
summa:=summa+p;
i:=i+2;
until p<E;

(тебе не нужно изменять знаменатель... То, что ты делаешь, аналогично:

x-x^3/3+x^5/(3*5*3)-x^7/(7*5*3*5*3)+...,
то есть знаменатель ДОМНОЖАЕТСЯ на i*(i-2), а тебе нужно:
next := xn;
repeat
p := next/i;
next := - next * x2; { next хранит изменяющийся числитель, знаменатель вычисляется уже в p }
summa:=summa + p;
i:=i+2;
until abs(p) < E; { <--- Не забывай про abs }

)
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 16:31
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


спасиба wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 16:47
Сообщение #4





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


что то не то если x=1 a e=0.2 то должна сумма быть 0 .... а у меня что-то считает wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 17:01
Сообщение #5





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


и еще с abs нелзя е=0
вечный цикл получается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2006 17:09
Сообщение #6


Гость






Ну вот расскажи мне, если у тебя X = 1, и s = X + ... то как может быть сумма равна 0 ???

Цитата
с abs нелзя е=0
E = 0 вообще нельзя... Какой смысл ты в это вкладываешь? "С точностью до НУЛЯ"???
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 17:30
Сообщение #7





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


да ты прав...понял give_rose.gif
а он считает только x+x^3/3 .... далше несчитает norespect.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 18:31
Сообщение #8





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Код

Program first;
uses crt;
var xn,p,E,summa,next,x2:real;
    i,n:integer;
begin
clrscr;
repeat
writeln ('iveskyte xn [-1..1]');
readln(xn);
until (xn>=(-1)) and (xn<=1);
repeat
writeln ('iveskyte E<>0=');
readln(E);
until E<>0;
x2:=xn*xn;
summa:=xn;
next:=xn;
i:=3;
for n:=1 to 3 do begin
repeat
p:=next/i;
next:=next*x2;
summa:=summa+p;
i:=i+2;

until abs(p)<E;
writeln('p=',p:5:5);
writeln('summa=',summa:5:5);
end;
readln;
end.



во..... но теперь я хотчу чтобы я вводил n а не чикл мне векидивал от 1 до 3 , хелп yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.11.2006 18:55
Сообщение #9


Гость






А вот теперь ты мне расскажи, зачем тебе в программе нужен вот этот цикл:
for n:=1 to 3 do begin
? Что, нельзя точность поменьше задать? Чего ты добиваешься этим циклом? Правильности результату он никак не прибавляет, в смысле, ты задал E = 0.2, и результат с данной точностью получился уже при n = 1... Все остальное - никому не нужные вычисления...

Сначала приведи код в нормальный вид, потом напиши, ЧТО ИМЕННО ты хочешь вводить, и какой результат получить, а потом будем разговаривать...
 К началу страницы 
+ Ответить 
Andrej
сообщение 15.11.2006 22:34
Сообщение #10





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Код
for n:=1 to 3 do begin

так хоть далше считает.... а то ответ такой же самий :/

мне же надо его вводить .... цикл считает отлично , но я им немогу руководит тока от и до ввести
а мне надо например чтобы n=3 ; p:=x+x^3/3-^5/5
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Andrej
сообщение 16.11.2006 2:33
Сообщение #11





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


ну кажись решил....посчитал на бумаге вроде всио оки
Код

Program first;
uses crt;
var xn,p,E,summa3,summa2,next,x2:real;
    i,n:integer;
begin
clrscr;
repeat
writeln ('iveskyte xn [-1..1]');
readln(xn);
until (xn>=(-1)) and (xn<=1);
repeat
writeln ('iveskyte E=');
readln(E);
until E<>0;
repeat
writeln ('iveskyte n=');
readln(n);
until n<>0;
x2:=xn*xn;
summa2:=xn;
next:=xn;
i:=3;
for n:=1 to n do begin
repeat
next:=next*x2;
p:=next/i;
summa2:=summa2+p;
i:=i+2;
until abs(p)<E;
writeln('p=',p:5:10);
writeln('summa2=',summa2:5:5);
end;
readln;
end.


еще бы зделать чтобы все n непоказывало , а толко последний

Сообщение отредактировано: Andrej - 16.11.2006 2:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Sozialist
сообщение 16.11.2006 3:11
Сообщение #12


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


Код

Program first;
uses crt;
var xn,p,E,summa3,summa2,next,x2:real;
    i,n:integer;
begin
clrscr;
repeat
writeln ('iveskyte xn [-1..1]');
readln(xn);
until (xn>=(-1)) and (xn<=1);
repeat
writeln ('iveskyte E=');
readln(E);
until E<>0;
repeat
writeln ('iveskyte n=');
readln(n);
until n<>0;
x2:=xn*xn;
summa2:=xn;
next:=xn;
i:=3;
for n:=1 to n do begin
repeat
next:=next*x2;
p:=next/i;
summa2:=summa2+p;
i:=i+2;
until abs(p)<E;
end;
writeln('p=',p:5:10);
writeln('summa2=',summa2:5:5);
readln;
end.


чтоб только значения при последнем n? есля я правильно понял, надо предпоследний end на 2 строки выше поднять, как у меня выше.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.11.2006 9:14
Сообщение #13


Гость






Sozialist, ты что изменил-то в основном цикле программы??? Зачем просто так Copy/Paste-ить?

Объясните вы мне РУССКИМ языком, зачем КОМБИНИРОВАТЬ 2 цикла (For + Repeat), если можно обойтись одним Repeat-ом, только не Until abs(p)<E ...

Особенно мне понравилось вот это:
Цитата
for n:=1 to n do begin
smile.gif

Program first;
uses crt;
var
xn,p,E,summa3,summa2,next,x2:real;
i,n:integer;
begin
clrscr;
repeat
writeln ('iveskyte xn [-1..1]');
readln(xn);
until (xn>=(-1)) and (xn<=1);

{
!!! Этот кусок можно убрать - от него теперь никакого толка нет...
Ты НЕ можешь одновременно считать и ДО определенной точности, и
определенное число членов ряда... Или одно или другое...
}
repeat
writeln ('iveskyte E=');
readln(E);
until E<>0;
{ ... !!! }

repeat
writeln ('iveskyte n=');
readln(n);
until n > 0; { А если бы я при твоем условии задал -1 ? }

x2:=xn*xn;
summa2:=xn;
next:=xn;
i:=3;

if n = 1 then p := 0
else repeat
next:=-next*x2; { А вот сюда посмотреть уже 10 постов никто не догадался, я забыл здесь минус }
p:=next/i;
summa2:=summa2+p;
i:=i+2;
dec(n);
until n <= 1;

writeln('p=',p:5:10);
writeln('summa2=',summa2:5:5);

readln;
end.

Теперь ясно?
 К началу страницы 
+ Ответить 
Sozialist
сообщение 16.11.2006 13:09
Сообщение #14


Клавиатурный тиран
**

Группа: Пользователи
Сообщений: 79
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  -2  +


Человек просил вывести только последний результат, что я и обеспечил, за основной код я не брался, т.к. товарищ им удовлетворен, я ничего не имею против ;-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Andrej
сообщение 16.11.2006 15:32
Сообщение #15





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


ище мне надо так же найти cумму которая >E
но наверна ана почти всегда будет 0

Сообщение отредактировано: Andrej - 16.11.2006 15:40
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 9:57
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"