1 Востаннє редагувалося Odin88 (02.01.2014 16:46:10)

Тема: Ряд Тейлора.

Не правильна відповідь.

{Pascal}
const eps=0.00001;  MaxIter=1000;
var x,y,u:real; n:integer;
begin
read(x);
u:=1; y:=0; n:=0;
while (abs(u)>eps) and  (n<MaxIter) do
begin
u:=u*(-1)*(x-1)*(n+1)/(n+2);
y:=y+u;
inc(n);
end;
writeln(y:2:4);
y:=ln(x);
writeln(y:2:4);
readln;
readln
end.
Post's attachments

Безымянный.png 93.59 kb, 102 downloads since 2014-01-02 

2

Re: Ряд Тейлора.

1. Записуйте умову повністю.
2. Наводьте приклад вхідних даних, де результат неправильний.
3. Де ви в формулі побачили (n+2)?
Взагалі раджу вам на кожній ітерації виводити те, що виходить, і десь збоку на аркуші розрахувати, які значення повинні бути, та порівняти. Помилка має виявитися на першій-другій ітерації.

3

Re: Ряд Тейлора.

koala,1.Що ще потрібно мені написати,щоб ви умову зрозуміли?
2.Довільне значення x,від 1 до 2 включно.
3.Використав рекурентну формулу: U(n+1)=U(n)*T.Де T-деякий множник.T=U(n+1)/U(n).В даному випадку
T=(x-1)*(-1)*(n+1)/(n+2).
Дякую за пораду.

4

Re: Ряд Тейлора.

1. Проблема не в тому, що я не розумію - проблема в тому, що мені незручно, і я маю докладати певних зусиль, щоб розібратися. А я цілком можу вирішити, що витратив на вас достатньо часу вже на той момент, коли розберуся.
2. Все ж бажано писати "на значенні 1.6487212707 видає -0.2292 замість табличного 0.5".
3. Проблема у вас в нульовому члені. Ви за вашою рекурентною формулою маєте його ділити на 0; щоб уникнути цього, ви збільшуєте n на 1 - і виходить зовсім інша формула. Ось робочий код:

Прихований текст

const eps     = 0.00001;
      MaxIter = 1000;
var x, y, u : real;
     n : integer;
begin
  read( x );
  u := x - 1;
  y := u;
  n := 0;
  while ( abs( u ) > eps ) and  ( n < MaxIter ) do
  begin
    writeln( 'y[ ', n:2, ' ] = ', y:0:6, ' u = ', u:0:6 );{цей рядок можете прибрати}
    inc( n );
    u := -u * (x-1) * n / (n+1);
    y := y + u;
  end;
  writeln( 'y = '      :10, y      :0:6 );
  writeln( 'ln( x ) = ':10, ln( x ):0:6 );
  readln;
end.

Подякували: Torbins, Odin882

5

Re: Ряд Тейлора.

Odin88
Я повністю згодний з koala: чим менше ви лінуватиметеся при оформленні питання, чим більше шансів, що хтось захоче вам допомогти.

6

Re: Ряд Тейлора.

koala,дякую.