Чтобы излишне не терять точность и не тратить лишнее время на вычисления, выведем рекуррентную формулу.
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е. |aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (ai1,eps,s,i):=(3/2,0.001,3/2,2); while true do begin var a:=3/(4*i-2)*ai1; if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end else Break end; Writeln('S = ',s:0:3) end.
ответ:алг т;
нач
Сместится в точку(2,1);
Опустить перо;
Сместится на вектор(0,2);
Сместится на вектор(1,0);
Сместится на вектор(-2,0);
кон.
алг я;
нач
Сместится в точку(1,1);
Опустить перо;
Сместится на вектор(1,1);
Сместится на вектор(0,1);
Сместится на вектор(-1,0);
Сместится на вектор(0,-1);
Сместится на вектор(1,0);
Сместится на вектор(0,-1);
кон.
алг с;
нач
Сместится в точку(3,1);
Опустить перо;
Сместится на вектор(-2,0);
Сместится на вектор(0,2);
Сместится на вектор(2,0);
кон.
Объяснение: на таком примере делай все буквы
В задании не сказано точно, как определять условие окончания суммирования. Примем, что суммирование завершается, если очередной член ряда не может изменить накопленную сумму больше, чем на ε, т.е.
|aₓ| ≤ ε.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017
// Внимание! Если программа не работает, обновите версию!
begin
var (ai1,eps,s,i):=(3/2,0.001,3/2,2);
while true do begin
var a:=3/(4*i-2)*ai1;
if Abs(a)>eps then begin i+=1; s+=a; ai1:=a end
else Break
end;
Writeln('S = ',s:0:3)
end.
Результат
S = 2.532