Помощь - Поиск - Пользователи - Календарь
Полная версия: Приближенные вычисления
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
real888
Разработать алгоритм и программу вычисления приближенного значения суммы
x-1/x + (x-2)2/2x2 + (x-3)3/3x3 +… С заданной точностью Е (0,1>=E>=0.0001).
Вычисления следует прекратить, когда очередной элемент ряда , включаемый в сумму не превышает точность Е.
Точность Е и Х (Х-действительное число Х>0,5) уст. пользователем. Наложить верхнее ограничение на значение Х.

Кто знает напишите на Паскале или помогите чем можете

Это название было тоже не ахти информативным, я исправил, в следующий раз будь внимательней и прочти правила форума

Спасибо в следующий раз учту
Гость
Принцип - здесь:
Разложение функции в ряд

+ Поиск по форуму...
klem4
Исользуй поиск "приближенные вычисления", "приближенное вычисления фуекции"
подобные задачи решались неоднократно

+ FAQ : как разложить ф-ю в ряд ?

Volvo Опередил ;)
real888
А вот этот знак ^ это степень?
klem4
Цитата
А вот этот знак ^ это степень?

угу ..

отвечать по форме!!!
Не угу а так точно! smile.gif
real888
я написал так, но работает не очень, подправте если знаете

Код
uses crt;
var
sum,x,e:real;
i,j:integer;
c: char;
buf:array[1..2] of real;
begin
textcolor(red);
repeat
Begin
{$I-}
clrscr;
repeat
clrscr;
settextbuf(input, buf);
write('Vvedite chislo x ot 0.5 do 5.5 ');
readln(x);
until ((ioresult=0)and(x>0.5)and(x<5.5));
i:=1;sum:=0;
Begin
e:=(x-i)/x;
for j:=1 to (i-1) do
Begin
e:=e*e;
end;
e:=e/i;
sum:=sum+e;
i:=i+1;
end;
writeln('sum= ', sum:3:3);
write(#13#10);
writeln('dlya vihoda najmite "N"');
writeln('dlya prodoljeniya lubaya klavisha');
c:=readkey;
end;
until (c=#110);
end.
volvo
Цитата
работает не очень
- это не определение... Что именно не работает?

P.S. Теги это не для тебя? Ты избранный?
volvo
Подсказка:
как ты думаешь, что будет вычислено в этой части программы, при I = 3 ?
e:=(x-i)/x;
for j:=1 to (i-1) do
Begin
e:=e*e;
end;
real888
volvo ты любишь давать намеки, если ты знаешь как исправить напиши пожалуйста
klem4
Он описался немного, не при i=3, а при i=1, у тебя получается цикл
for j := 1 to 0 ...
volvo
Я не люблю решать за кого-то задачу полностью !!! Подсказать, где кроется ошибка - это одно, а дать отлаженное готовое решение - СОВСЕМ другое.

klem4, давай не будем говорить от моего имени! mad.gif

Внимательно смотрим на приведенный фрагмент и видим, что при I = 3 получается не E^3 (как задумывалось) а E^4... Дальше объяснять?
klem4
Опс.. извиняюсь unsure.gif , тогда получается в этом месте тоже ошибка ....


i:=1; sum := 0;
Begin
e:=(x-i)/x;
for j:=1 to (i-1) do

ps теги pascоde и b лагать вместе начали ;(
real888
у меня еще вопрос. Как сделать чтобы точность Е тоже вводил пользователь
Ozzя
Код
var
  e:real;
...
WriteLn('Введите точность:');
ReadLn(e);
...
real888
да это понятно, только что с этой точностью, что без нее результат одинаковый
klem4
Ну так если ты ее вводишь, то вычислять - то ее уже не надо .. а вообще если ты все правильно сделал и результат одинаковый, то это хорошо ..)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.