Войти

Показать полную графическую версию : простая задача на pascal


Glareone
15-07-2010, 15:28
простая задача на решение уравнения с заданной точностью.
Но корректно работает не всегда. Написал 2 разных кода на паскаль, решил на черновике-все должно сходиться,а понять где ошибка не могу.

Само уравнение:

Y = 1 – X / 2 + (1*3*X^2) / (2*4) – (1*3*5*X^3) / (2*4*6) + (1*3*5*7*X^4) / (2*4*6*8) – ...


program run1;
uses crt;
var q,up_k,k1,k2,znak :integer;
var x,y,x_st,eps,slag :real;
begin
writeln('write X and eps');
read(x,eps);

znak:=-1;
x_st:=x*x; {otvechaet za stepen x}
k1:=1; {mnojitel #1}
k2:=2; {mnojitel #2}
slag:=0; {slagaemoe}
up_k:=2; {uvelichenie mnojiteley}
y:=(1-x)/2;

repeat
znak:=znak*(-1); {otvechaet za znak slagaemogo}
slag:=(znak*k1*(up_k+1)*x_st)/(k2*(up_k+2)); {podschet ocherednogo slagaemogo}
y:=y+slag; {osnovnoe uravnenie}

x_st:=x_st*x; {//otvechaet za stepen X}
k1:=k1*(up_k+1); {otvechaet za mnojitel pri X, uvelichivaetsya}
k2:=k2*(up_k+2); {otvechaet za chastnoe, uvelichivaetsya }
up_k:=up_k+2;
until abs(slag)<eps; {uslovie cikla}
writeln('zaversheno!');
writeln('y= ',y); {vivod}
read(q);
end.

pva
15-07-2010, 20:26
Само уравнение: »
на уравнение не похоже (не задано y). Больше похоже на функцию y(x)

Причём эта функция расходится (т.е. расходится ряд, а функция не имеет конечного значения) , думаю что при |x| >= 1 (хотя границы ещё можно проверить)

Glareone
16-07-2010, 19:45
Тоже думаю, что ряд расходящийся. Ряды последний раз решал так давно,что сейчас уже и не вспомню как Даламбером решать такие :) Ладно,разберусь.Тут задача скорее математическая(деление на ноль надо поймать),нежели программирования.




© OSzone.net 2001-2012