Вычисление конечных сумм - Free Pascal (786)
Формулировка задачи:
компилируется и запускается, но почему то не считает,
program hhhj ; const n=30; var k:longint; x,z,sum,h,a,y,b:real; BEGIN a:=0.1;b:=1; sum:=1;h:=0.1; x:=a; while x<=b+h/2 do begin y:=((x*x)/4+x/2+1)*exp(x/2); z:=1; for k:=1 to n do begin z:= ((2*n+1)/(n+1))*(x/2); sum:=sum+z; end; end; writeln(x:5:2,',,,',sum:9:5,',,,,',y:13:5);readln(); END.
Решение задачи: «Вычисление конечных сумм»
textual
Листинг программы
program hhhj ;
const n=30;
a=0.1;
b=1;
h=0.1;
function f(x:real):real;
begin
f:=(x*x/4+x/2+1)*exp(x/2)
end;
function s(x:real):real;
var i:integer;
sm,t:real;
begin
t:=1;
sm:=t;
for i:=1 to n do
begin
t:=t*(x/2)/i;
sm:=sm+t*(i*i+1);
end;
s:=sm
end;
var x:real;
begin
x:=a;
while x<=b+h/2 do
begin
writeln('x=',x:4:1,' y=',f(x):6:3,' s=',s(x):6:3);
x:=x+h
end;
readln
end.
Объяснение кода листинга программы
В данном коде решается задача вычисления конечных сумм.
- Объявлены константы: n = 30 (количество точек для вычисления суммы), a = 0.1 (начальное значение переменной x), b = 1 (конечное значение переменной x), h = 0.1 (шаг изменения переменной x).
- Определены функции: f(x: real): real, s(x: real): real. Функция f(x) вычисляет значение функции y = (xx/4 + x/2 + 1) exp(x/2). Функция s(x) вычисляет сумму sm,t, используя формулу суммы ряда.
- Создана переменная x со значением a.
- Запускается цикл while, выполняющийся до тех пор, пока x <= b + h/2. Выполняется: — Вывод на экран значений x, y, s. — Увеличение x на h.
- В конце программы ожидается ввод пользователя с помощью readln.