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

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

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

> Приближененное вычисление значения ряда
сообщение
Сообщение #1


Бывалый
***

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

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


Задание
Изображение
Мой код

uses crt;
var
zn:boolean;
s,x,st,e:double;
p_st,i,j,c:longint;
begin
clrscr;
s:=1;
zn:=false;
e:=0.1;
x:=0.9;
i:=1;
j:=2;
p_st:=1;
st:=1;
while (abs(x)<1) and (abs(1/sqrt(1+x)-s)>e) do
begin
x:=x-0.1;
for c:=1 to p_st do
st:=st*x;
if zn=false then
begin
s:=s-(i*st/j);
zn:=true;
end
else
begin
s:=s+(i*st/j);
zn:=false;
end;
j:=(i+3)*j;
i:=(i+2)*i;
{------------------------------------------}
writeln('e= ',e:5:5);
writeln('i= ',i);
writeln('j= ',j);
writeln('x= ',x:5:5);
writeln('s= ',s:5:5);
writeln('(1/sqrt(1+x))= ',(1/sqrt(1+x)):5:5);
writeln('(1/sqrt(1+x)-s)= ',abs(1/sqrt(1+x)-s):5:5);
end;
writeln('i= ',i);
writeln('j= ',j);
writeln('e= ',e:5:5);
writeln('x= ',x:5:5);
writeln('s= ',s:5:5);
writeln('(1/sqrt(1+x))= ',(1/sqrt(1+x)):5:5);
writeln('(1/sqrt(1+x)-s)= ',abs(1/sqrt(1+x)-s):5:5);
readkey;
end.

Вот с точностью 0,1 он вычисляет, если сменить поставить точность выше, при этом соответсвенно и шаг нужно уменьшить допусти 0,01 сделать его, то все программа не пашет, я так понялне хватает размераности типов данных, переменная j обнуляется, а еще заметил i выходит за пределы и становится равной -1. Правильные ли у меня вычисления и как сделать чтоб вычислить с более высокой точностью?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
При замени уже на 0,01 вылетает ошибка операции с плавующей точкой(
Интересное кино... У меня прекрасно работает при e = 0.00001:
Прикрепленное изображение

 К началу страницы 
+ Ответить 

Сообщений в этой теме
Account   Приближененное вычисление значения ряда   17.01.2009 16:58
volvo   Не надо постоянно вычислять Xn, просто домножай оч…   17.01.2009 17:08
Account   При замени уже на 0,01 вылетает ошибка операции с …   17.01.2009 17:12
volvo   Интересное кино... У меня прекрасно работает при e…   17.01.2009 17:21
Account   volvo, а как у тебя знак последующего множителя в …   17.01.2009 17:40
Account   volvo, огромное спасибо, очередной раз убеждаюсь ч…   17.01.2009 18:01
Account   Задача таже только другой ряд http://savepic.ru/3…   17.01.2009 19:28
volvo   А что, где-то указано, что она должна меняться? Пе…   17.01.2009 19:45
Account   Вот шапка задания из таблицы http://savepic.ru/40…   17.01.2009 19:58
Account   volvo Вот сделал для каждого x uses crt; var s,x,…   17.01.2009 20:44
volvo   А ты отладчиком пробегись, и посмотри, чему в дейс…   17.01.2009 20:59
Account   За поправку спасибо. Возьму на заметку, хорошо ч…   17.01.2009 21:29
volvo   Перенести s:=1; next:=1; i:=1; внутрь цикла While …   17.01.2009 22:17
Account   Блин даже стыдно за невнимательность)   17.01.2009 22:23


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

 





- Текстовая версия 12.09.2025 2:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name