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

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

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

> Приближененное вычисление значения ряда
Account
сообщение 17.01.2009 12:58
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 17.01.2009 13:21
Сообщение #2


Гость






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

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

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


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

 



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