Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   простая задача на pascal (http://forum.oszone.net/showthread.php?t=180650)

Glareone 15-07-2010 15:28 1453881

простая задача на pascal
 
простая задача на решение уравнения с заданной точностью.
Но корректно работает не всегда. Написал 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 1454083

Цитата:

Цитата Glareone
Само уравнение: »

на уравнение не похоже (не задано y). Больше похоже на функцию y(x)

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

Glareone 16-07-2010 19:45 1454685

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


Время: 18:00.

Время: 18:00.
© OSzone.net 2001-