Как найти сумму ряда чисел паскаль

Перейти к содержанию

Сумма элементов ряда чисел

Просмотров 3.4к. Обновлено 15 октября 2021

Найти сумму n элементов следующего ряда чисел:
1 -0.5 0.25 -0.125 …
Количество элементов (n) вводится с клавиатуры.

В данном случае ряд чисел состоит из элементов, где каждый следующий меньше предыдущего в два раза по модулю и имеет обратный знак. Значит, чтобы получить следующий элемент, надо предыдущий разделить на -2.

Какой-либо переменной надо присвоить значение первого элемента ряда (в данном случае это 1). Далее в цикле добавлять ее значение к переменной, в которой накапливается сумма, после чего присваивать ей значение следующего элемента ряда, разделив текущее значение на -2. Цикл должен выполняться n раз.

Следует отметить, что чем больше n, тем меньше меняется сумма от прибавления каждого следующего элемента, т.к. на каждой итерации цикла значение элемента уменьшается в два раза (по модулю), т.е. прибавляется все меньшая и меньшая величина. Попробуйте выполнить программу, введя в качестве значения n сначала 3, затем 10 и 20. Вы увидите, что разница между первым и вторым случаем значительна, а между вторым и третьим — нет.

Pascal

сумма ряда паскаль


var
n,i: byte;
e,s: real;
begin
readln(n);
e := 1;
s := 0;
for i:=1 to n do begin
s := s + e;
e := e / -2;
end;
writeln(s:9:7);
end.



6
0.6562500

Язык Си


#include

main() {
unsigned short n,i;
float e, s;
scanf("%d",&n);
e = 1;
s = 0;
for (i=0;i< n;i++) {
s += e;
e /= -2;
}
printf("%.7fn",s);
}



10
0.6660156

Python

сумма ряда python (питон)


n = int(input())
e = 1
s = 0
for i in range(n):
s += e
e /= -2
print(s)



4
0.625

КуМир


алг сумма рядя
нач
цел n,i
вещ e,s
ввод n
e := 1
s := 0
нц для i от 1 до n
s := s + e
e := e / 2 * (-1)
кц
вывод s
кон



4
0.625

30
0.6666667

Basic-256


input n
start = 1
sum = 0
for i=1 to n
sum = sum + start
start = start / -2
next i
print sum



20
0.666666

  • В этой теме 1 ответ, 1 участник, последнее обновление 1 год, 10 месяцев назад сделано .
  • Сообщения

    • Задача: дана последовательность вида:
      $$sin(x) + sin(sin(x)) + … + sin(sin … (sin(x))).$$

      Необходимо подсчитать сумму данной последовательности. Значение x вводиться с клавиатуры.

      Решение: суммирование проводится до тех пор, пока очередной член ряда не окажется меньше заданного числа (точности):

      Uses Crt;
      Const Eps = 0.03;
      Var X,Y,S : Extended;
      	I : Longint;
      	F : Boolean;
      
      Begin
      	WriteLn;
      	Write('Введите значение X:   ');
      	ReadLn(X);
      	S := 0;
      	I := 0;
      	Y := X;
      	F := True;
      	While F Do Begin
      		Inc(I);
      		Y := sin(Y);
      		If Y < Eps Then F:=False;
      		S := S + Y;
      		WriteLn(I:5,' ',S:4:5,' ',Y:4:5);
      	End;
      	WriteLn('Число членов ряда:   ',I);
      	WriteLn('Сумма членов ряда:   ',S);
      	WriteLn('Последний член ряда: ',Y);
      	Repeat Until KeyPressed
      End.
    • В качестве еще одного примера вычислим сумму такого ряда:
      $$
      arctg(x) = sumlimits_{k=1}^n frac{x^{2cdot k+1} + frac{1}{5}}{sqrt{e^frac{x}{k}} + sqrt[k]{x^{k-1}}}
      $$

      Решение:
      Блок-схема алгоритма:

      Назначение переменных:

      Класс Имя Тип Структура Смысл
      Входные

      данные

      X, N Вещ Простая переменная Начало и количество шагов.
      Выходные

      данные

      s Вещ Простая переменная Сумма
      Промежуточные

      данные

      i Цел Простая переменная Итератор

      Исходный код поиска суммы ряда на языке Паскаль:

      var x,s:real;
          n,i:integer;
      begin
        writeln('Введите x');
        readln(x);
        writeln('Введите n');
        readln(n);
        
        s:=abs(ArcTan(x));
        i:=1;
        for i:=1 to n do
        begin
          s+=(power(x,2*i-1)+(1/5))/sqrt(power(e,x/i)+power(power(x,i-1),1/i));
        end;
        writeln(s);
      end.
  • Автор

    Сообщения

  • Для ответа в этой теме необходимо авторизоваться.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
uses crt;
const n=8;
      m=3;
var a:array[1..n,1..m] of integer;
    i,j,s:integer;
begin
writeln('Введите данные по ',m,' бригадам за ',n,' часов');
for i:=1 to n do
 begin
  writeln(i,' час:');
  for j:=1 to m do
   begin
    write('Бригада ',j,'=');
    read(a[i,j]);
   end;
 end;
clrscr;
writeln('Учет в течение дня:');
writeln('----------------------------');
writeln('| час | Бр.1 | Бр.2 | Бр.3 |');
writeln('----------------------------');
for i:=1 to n do
 begin
  gotoXY(1,whereY);write('|',i:3);
  gotoXY(7,whereY);
  for j:=1 to m do
  write('|',a[i,j]:5,' ');
  gotoXY(28,whereY); writeln('|');
 end;
writeln('----------------------------');
write('|Итог |');
for j:=1 to m do
 begin
  s:=0;
  for i:=1 to n do
  s:=s+a[i,j];
  write(s:5,' |');
 end;
writeln;
writeln('----------------------------');
end.

Лабораторная
работа № 3

Тема:
Вычисление сумм (произведений) конечного
числа элементов ряда. Оператор FOR …DO
(FOR … DOWNTO)

Цель
работы:

научиться разрабатывать блок-схему
алгоритма и программу с использованием
операторов цикла FOR …DO на примере
вычисления сумм (произведений) элементов
конечного ряда

Теоретическая
часть

Оператор FOR
DO

Циклические
вычисления в Паскале реализуются с
помощью операторов
FORTO(DOWNTO)…DO,
WHILEDO
или
REPEATUNTIL.

Особенностью
операторов FORTO
(
DOWNTO)…DO
является
встроенный
внутренний счетчик цикла, фиксирующий
количество повторений.

Форматы записи
оператора:

FOR
переменная
цикла := выражение
1
TO
выражение
2
DO

{операторы тела
цикла};

или

FOR
переменная
цикла
:=выражение
1
DOWNTO
выражение
2
DO

{операторы тела
цикла};

В
формате: переменная
цикла

(управляющая
переменная, счетчик
цикла) – имя переменной целочисленного
типа; выражения
1
и 2 — выражения, тип результата которых
совпадает с типом переменной цикла;
операторы
тела
цикла
любой
исполнимый оператор
или блок операторов, заключенных в
операторные скобки; FOR,
TO,
DOWNTO
и
DO

ключевые слова.

!!!
Использование оператора FOR
регламентируется следующими правилами.

  • Переменная
    цикла, её начальное и конечное значения
    должны
    быть одного типа.

  • При
    выполнении оператора очередное значение
    параметра цикла вычисляется автоматически.
    В частности, для
    целого типа шаг изменения значения
    переменной цикла равен 1
    при конструкции с TO
    и -1 при конструкции с DOWNTO.

  • После
    служебного слова DO
    может стоять только один оператор.
    Если в цикле необходимо выполнить
    группу операторов, то
    их заключают в операторные скобки
    BEGINEND,
    образуя составной
    оператор.

  • Цикл
    не выполняется вообще, если начальное
    значение переменной
    цикла больше (при DOWNTO
    меньше), чем конечное. В
    этом случае управление передается
    оператору, следующему непосредственно
    за конструкцией FOR..TO(DOWNTO)…DO.

  • В
    конструкции FOR..TO(DOWNTO)…DO
    используется только
    одна переменная цикла. При наличии
    вложенных циклов у каждой
    конструкции FOR..TO(DOWNTO)…DO
    должна быть своя, отличающаяся
    от других переменная.

  • При
    организации вложенных циклов внутренний
    и внешний циклы
    не должны пересекаться. Цикл, который
    начинается последним,
    должен завершаться первым:

FOR
N := 1 TO
5
DO

BEGIN WRITELN (N:2,’.’);

FOR
J := 1 TO 5 DO WRITELN (N:2,’.’, J:2,’.’)
END;

Пример
работы циклов

Пример
3.1.

Найти сумму конечного ряда. Значение x
вводится с клавиатуры.


program
Project1;

var
x,s:real; i:integer;

begin

Write(‘x=’);
Readln(x);

s:=0;

for
i:=1 to 10 do //начало
цикла
For

s:=s+x*i;
//конец
цикла
For

Writeln(‘s=’,s:5:3);
//вывод результата

Readln;

end.

Пример 3.2.
Дано действительное число х.
Вычислить сумму элементов ряда. Число
суммируемых элементов ряда (N)
задается во время работы программы с
клавиатуры.


.

Program
Project2;
//вычисление суммы заданного числа
элементов ряда

var

x,s,a:real;

f:longint;

i,n,k:integer;

begin //начало
раздела операторов

write(‘введите
значение x=’);

readln(x);

write(‘введите
значение n=’);

readln(n);

//значение первого
слагаемого ряда вычисляется до цикла

a:=x; //значение
x
в степени (2*1-1)

f:=1; //значение
f=(2*1-1)!=1

s:=a;
//а — значение 1-го слагаемого, s=a

//к — переменная
для изменения знака очередного слагаемого
с + на —

k:=1;

for i:=2 to
n do //начало
цикла

begin

k:=-
k;
//значение (-1) для i-го
слагаемого

a:=a
* sqr(x);
//вычисление х в степени (2i+1)
i-го
слагаемого

f:=f
* (2*i-2)*(2*i-1);
//вычисление факториала i-го
слагаемого

s:=s+k*a/f;
//добавление i-го
слагаемого к общей сумме

end;
//конец цикла

//вывод
результата на экран

writeln(‘при x=’,x:4:2,’
сумма’, n,’
элементов =’,s:7:5);

readln;

end.

Пример 3.3.
Задано число х
и натуральное число N.
Вычислить произведение N
элементов ряда


.

Для вычисления
произведения целесообразно использовать
рекуррентные соотношения, т.е. каждую
дробь в скобках, начиная со второй,
выражать через предыдущую. Это позволит
существенно сократить объем вычислений.
Расчет N!
в числителе дроби каждого множителя
выполняется в программе в теле цикла
по формуле f:=f*n.
p:=p*(2+f/a)
— формула умножения элементов ряда
Р=P1*P2*…*Pi-1
на
очередной Pi
элемент
ряда.

Схема алгоритма
и текст программы

Program
Project3;

//вычисление
произведения заданного числа элементов
ряда

var

x,p,a :
real; f : longint; i,n : integer;

begin

write(‘введите
x=’);

readln(x);

write(‘введите
n=’);

readln(n);

p:=1;
//начальное значение произведения

a:=1;
f:=1;
//начальные значение числителя
и знаменателя дроби

for i:=1 to
n do //начало
цикла

begin

a:=
a*x;

f:=f*i

p:=p*(2+f/a);

end; //конец
цикла

//вывод
результата на экран

writeln(‘при x=’,x:4:2,’
произведение’, n:2,’ элементов=’,p:7:5);

readln;

end.

Задания для
лабораторной работы

1.
С клавиатуры вводится последовательность
из n-чисел.
Определить количество членов
последовательности:

  1. являющихся
    нечетными числами;

  2. кратных 3 и не
    кратных 5;

  3. являющихся
    квадратами четных чисел.

2.
Последовательность чисел Фибоначчи
u0,
u1,
… образуется по закону u0=0;
u1
=1; ui=ui-1+ui-2
(i=2,
3, …). Дано натуральное число n>1.

Получить u0,
u1,
…, un.

3.
С клавиатуры вводится натуральное число
n,
действительные числа а1,
… ,an.
В последовательности а1,
… ,an
определить
число соседств:

  1. двух положительных
    чисел;

  2. двух чисел разного
    знака;

  3. двух чисел одного
    знака, причем модуль первого числа
    должен быть больше модуля второго
    числа.

4.
У прилавка в магазине выстроилась
очередь из n
покупателей.
Время обслуживания продавцом iго
покупателя равно
ti
(i=1,
… ,
n).
Пусть даны
натуральное число n
и действительные
t1,
… ,
tn.
Получить c1,
… ,
cn
, где ci
– время
пребывания iго
покупателя в очереди (i=1,
… ,
n).
Указать
номер покупателя, для обслуживания
которого продавцу потребовалось самое
малое время.

5. Даны
действительные числа a,
b
(
a<b),
натуральное
число n,
функция y=f(x),
определенная
на отрезке [a,
b].
Для значений аргумента xi
=
a+ih
(
i=0,1,
… ,
n),
h=(ba)/n
вычислить
значения функции yi
= f(
xi
) (i=0,1,
… ,
n).

Вывести
xi
и
yi
(i=0,1,
… ,
n)
в виде таблицы
из двух колонок. В iю
строку
таблицы заносятся соответствующие
значения xi
и
yi.
Рассмотреть следующие функции:


  1. ,
    a= –π, b=π, n=50;


  2. ,
    a=
    0, b=2π, n=50;


  3. ,
    a=
    –3, b=5, n=40;


  4. ,
    a=
    –1, b=2, n=30;


  5. ,
    a=
    –1, b=3, n=40.

Задания для
самостоятельного выполнения

Варианты
заданий в табл. 1, 2.

Вычислить значение
суммы или произведения членов ряда.
Значение x
задать с клавиатуры.

Таблица
1–
Задание 1

1

9

2

10

3

11

4

12

5

13

6

14

7

15

8

16

Таблица
2 – Задание 2

1

9

2

10

3

11

4

12

5

13

6

14

7

15

8

16

Контрольные
вопросы

  1. Для чего предназначен
    оператор цикла?

  2. Какие виды циклов
    есть в Паскале?

  3. Какой
    формат записи имеет оператор FOR?
    Какие
    существуют
    варианты этого цикла?

  4. Как
    работает оператор
    FOR?
    B
    каких случаях применяется?

  5. Что является телом
    цикла?

  6. Как в теле цикла
    выполнить несколько операторов?

  7. Почему
    перед выполнением цикла некоторым
    переменным
    нужно задавать начальные значения?

  8. При
    каких условиях оператор for
    не выполнится ни разу?

Соседние файлы в предмете Программирование на Pascal

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Вычислить значение суммы ряда через Pascal:

y=1+1/2+1/3+ … +1/i+…+1/n

Вычисления прекратить, если i член ряда, т.е. 1/i станет меньше, чем заданная точность (eps).

Код программы на Pascal

Program sum;
uses crt;
const
eps=1.0E-3;
var
y,u:real;
n:integer;
begin
clrscr;
y:=0;
for n:=1 to 10000 do
begin
u:=1/n;
y:=y+u;
if u<=eps then
break;
end;
writeln(‘значение y=’,y:10:6,
‘всего было вычислений’,n:8);
end

Пояснения
1. Точность eps задана в программе как const EPS = 1.0E-3.

2. Вычисления заданы бесконечным циклом for n:=1 to 10000 do, выход из которого осуществляется по достижению указанной точности с помощью оператора break.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти работу при изотермическом процессе формула
  • Как найти комплект быстрого перемещения
  • Как легко найти зачарованный меч террария
  • Как найти склонение у существительных 3 склонения
  • Как найти в квартире жучек

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии