Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Writeln('Нажми Enter'); readln





End.

 

Практическое задание N 1. 9

Рассчитать конечные суммы последовательностей:

 

1) 13 + 23 + 33 +... + N3; SN = N2*(N+1)2/4;

 

2) 13 + 33 + 53 +... + (2*N-1)3; SN = N2*(2*N2-1);

 

3) (X3+1)/cos(1) + (X3+2)/cos(4) + (X3+3)/cos(9) + (X3+N)/cos(N2);

 

4) (X2+1)/sin(1) + (X2+2)/sin(2) + (X2+3)/sin(3) + (X2+N)/sin(N);

 

 

В некоторых случаях "N"-ый член последовательности определяется через сумму предыдущих членов, например, aN= p*SN-1, тогда SN= SN-1 + aN = SN-1*(1+р), и конечную сумму можно рассчитать по формуле:

SN= S0*(1+p)N, где "S0" - начальная сумма.

 

Рассмотрим программу вычисления конечной суммы денежного вклада в банк через N месяцев при ежемесячной процентной ставке "pr" (5% cоответствует pr=5).

 

PROGRAM VKLAD; { расчет конечной суммы вклада в банк }

var S, Sn, pr: real; i, N: integer;

Begin

Write('Введите начальную сумму вклада S='); readln(S);

Write('Введите процент по вкладу pr='); readln(pr);

Write('Введите количество месяцев вклада N='); readln(N);

For i:= 1 to N do S:= S*(1+pr/100.); { цикл произведений }

 

Writeln('Конечная сумма вклада S=', S:-10:2);

 

{ Оператор для расчета "Sn" напишите самостоятельно }

 

Writeln('Расчет конечной суммы вклада по формуле Sn=', Sn:-10:2);

Writeln('Нажмите Enter');

Readln

End.

 

 

Практическое задание N 1. 10

 

1. Вычислить конечную сумму денежного вклада в рублях при открытии валютного счета в банке через несколько месяцев при ежемесячной процентной ставке 1% и росте курса валютной единицы по отношению к рублю 2% в месяц. Программа запрашивает ввод суммы и срока вклада, и выводит на экран конечную сумму в рублях. Проверить расчет вычислением по формуле: SN = S0 * (1+pv)N * (1+pi)N,

где pv, pi - банковский и инфляционный коэффициенты.

 

2. В п. 1 сделать ежемесячный ввод банковской процентной ставки и роста курса валюты при подсчете конечной суммы.

 

 

Часто применяются вложенные операторы цикла. Например, если необходимо провести все варианты расчета при изменении нескольких параметров в заданных диапазонах.

Составим программу расчета функции y = A*sin(x) - cos(x)/A; при изменении аргумента "x" в диапазоне от 0 до Pi с шагом Pi/100 и при изменении параметра "A" в диапазоне от 1 до 3 с шагом 0. 5.

 

Program tabl;

var y, x, a, dx: real; i, j: integer;

Begin

Writeln(' Расчет по формуле: y=A*sin(x)-cos(x)/A; ');

Writeln('--------------------------------------------------');

Writeln('|___X___|__A=1.0_|_A=1.5_|_A=2.0_|_A=2.5_|_A=3.0_|');

Writeln('--------------------------------------------------');

dx:= pi/100;

for i:= 0 to 100 do begin { внешний цикл изменения аргумента "X" }

x:= dx*i; Write(x:8:4);

for j:= 1 to 5 do begin { вложеннный цикл изменения параметра "A" }

A:= 0.5*(j+1); y:= A*sin(x)-cos(x)/A; Write(y:8:4)

end;

Writeln; { перевод курсора на новую строчку }

if ((i+1) mod 20) = 0 then

readln { задержка прокрутки экрана до нажатия Enter }

End; readln

End.

 

 

Практическое задание N 1. 11

 

1. Рассчитать значения функции y = sin(x)/(x+a)2 при изменении аргумента "x" в диапазоне от 0 до Pi/2 с шагом Pi/80 и при изменении параметра "A" в диапазоне от 1 до 2 с шагом 0, 2.

 

2. Рассчитать значения функции y = xa/a3 при изменении аргумента "x" в диапазоне от 1 до 10 с шагом 0, 2 и при изменении параметра "A" в диапазоне от 1 до 5 с шагом 1.

 

Составим программу численной проверки неравенства Коши:

 

Ö(a1 * a2 *... * aN) £ (a1 + a2 +... + aN)/N; где a1, a2,..., aN > 0,

 

в частном случае двух целых чисел в диапазоне от 1 до 250.

Примечание: погрешности в вычислениях могут привести к неверному выводу, поэтому формулы преобразованы для расчета целых чисел!

 

Program TEOREMA; {проверка теоремы о ср. арифметическом и ср. геометрическом }

var a1, a2, N1, s, g: longint; bb: boolean;

Begin bb:= true; Writeln ('Процесс пошел, ждите!');

N1:= 250;

For a1:= 1 to N1 do { внешний цикл }

For a2:= 1 to N1 do begin { вложенный цикл }

S:= (a1+a2)*(a1+a2); G:= 4*a1*a2;

if S < G then bb:= false end;

If bb = true then Writeln ('Теорема верна')

else Writeln ('Теорема не верна');

Writeln('Нажми Enter'); readln

End.

 

Практическое задание N 1. 12

 

1. Провести численную проверку неравенства Коши-Буняковского:

 

(a1*b1+ a2*b2+... + aN*bN)2 £ (a12+a22+... +aN2) * (b12+b22+... +bN2);

где a1, a2,..., aN > 0, b1, b2,..., bN > 0,

в частном случае двух пар целых чисел в диапазоне от 1 до 50.

 

2. Провести численную проверку неравенства:

 

(a1 + a2 +... + aN)/N £ Ö ((a12 + a22 +... + aN2)/N), где a1, a2,..., aN > 0

в частном случае трех целых чисел в диапазоне от 1 до 70.

 

В некоторых случаях во вложенных циклах начальные или конечные значения параметров цикла зависят от текущего значения внешнего параметра цикла.

Например, одно из неравенств Чебышева имеет вид:

 

(a1+a2+... +aN) * (b1+b2+... +bN)/N2 £ (a1*b1+ a2*b2+... + aN*bN)/N;

 

для 0 < a1 £ a2 £ a3 £... £ aN, 0 < b1 £ b2 £ b3 £... £ bN.

При проверке этого неравенства в случае двух пар целых чисел в диапазоне от 1 до 50 можно использовать операторы:

 

bb:= true;

For a1:= 1 to 50 do For a2:= a1 to 50 do

For b1:= 1 to 50 do For b2:= b1 to 50 do

Begin

S:= (a1+a2)*(b1+b2); P:= (a1*b1+ a2*b2)*2;

if S > P then bb:= false end;

Практическое задание N 1. 13

 

Провести численную проверку неравенств Чебышева:

 

1. (a1+a2+... +aN) * (b1+b2+... +bN)/N2 ³ (a1*b1+ a2*b2+... + aN*bN)/N;

 

2. (a12+ a22+...+aN2) * (b12 +b22+...+bN2)/N2 ³ ((a1*b1)2 +(a2*b2)2+...+(aN*bN)2 )/N;

 

для 0 < a1 £ a2 £ a3 £... £ aN, b1 ³ b2 ³ b3 ³... ³ bN > 0,

в частном случае трех пар целых чисел в диапазоне от 1 до 10.

 

 

Начальные и конечные значения параметров циклов могут определяться из условий задачи, например, для расчета количества "k" повторений цифры "N" в целых двузначных числах можно использовать операторы:

 

k:= 0; for i:= 1 to 9 do

for j:= 0 to 9 do begin if i = n then k:= k+1;

if j = n then k:= k+1 end;

 

Здесь первая цифра числа может принимать значение от 1 до 9, а вторая - от 0 до 9,

 

 

Практическое задание N 1. 14

 

1. Рассчитать все целые чисела (a, b, c), удовлетворяющие условию:

 

a2 + b2 = c2; где с<101.

 

2. Рассчитать все целые чисела (a, b, c, d), удовлетворяющие условию:

 

a3 + b3 + c3 = d3; где d<21.

 

3. Рассчитать все трехзначные чисела, сумма цифр которых делится нацело на тринадцать.

 

4. Рассчитать номера всех счастливых четырехзначных билетов.

 

Примечание: программы выводят на экран все числа, удовлетворяющие указанным условиям и суммарное число возможных комбинаций. Для приостановки вывода строк на экран можно использовать оператор: If (I MOD 20)=0 then Readln;

где I - число выведенных строк.

 

5. Рассчитать зарплату купюрами достоинством 1, 3, 5 рублей. Программа запрашивает ввод величины зарплаты и выводит на экран все возможные комбинации числа купюр, сумма которых равна заработной плате. Начальные значения параметров циклов равны нулю, конечные значения параметров циклов находятся делением величины зарплаты на 1, 3, 5.

 

 

 

Операторы цикла с условием

 

 

В Турбо-Паскале применяются два оператора цикла с условием:

 

While "условие" DO "оператор";

 

- цикл с предусловием: проверка условия перед каждым выполнением "оператора",

 

Repeat "операторы" Until "условие";

 

- цикл с постусловием: проверка условия после каждого выполнения "операторов".

Здесь "условие" - выражение логического типа (Boolean).

 

Схема выполнения операторов имеет вид:

False

While Repeat

"операторы"

True

Do False

"оператор" Until

True

 

В цикле While... "оператор" выполняется если условие верно (True), если условие ложно (False), то цикл заканчивается, т. е. цикл While... повторяется пока выполняется условие. Цикл While... начинается проверкой условия, поэтому, если начальное условие ложно, то "оператор" не выполняется ни разу. Для включения в тело цикла нескольких операторов применяется составной оператор: Begin "операторы" end.

 

Цикл Repeat... повторяется, если условие ложно (False), и заканчивается, если условие верно (True), т. е. цикл Repeat... повторяется до выполнения условия. Цикл Repeat... заканчивается проверкой условия, поэтому "операторы" выполняются не менее одного раза. В теле цикла может записываться более одного оператора.

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

Сумма членов бесконечной последовательности a1, a2, a3,..., aN,... называется бесконечным рядом и записывается в виде:

a1 + a2 + a3 +... + aN+....

Здесь aN - общий член ряда. Сумма конечного числа членов ряда называется частичной суммой и обозначается " SN ". Если сумма членов бесконечного ряда имеет конечный

 

предел "S", то ряд называется сходящимся. Для некоторых рядов получены формулы расчета суммы членов ряда. Например, сумма членов числового ряда:

 

1 + 1/32 + 1/52 +... + 1/(2*N-1)2 +... имеет предел S = Pi2/8;

и общий член aN= 1/(2*N-1)2, где N = 1, 2, 3,...

Для сходящегося ряда вычисляется последовательность частичных сумм с заданной погрешностью. Абсолютная погрешность расчетов определяется по формуле Eps=abs(S-SN), либо Eps=abs(aN), если значение S неизвестно. Относительная погрешность расчетов определяется по формуле Eps_o=abs((S-SN)/S), либо Eps_o=abs(aN/SN). Частичные суммы вычисляются по формуле: SN = SN-1 + aN;

Для знакопеременного ряда следует добавить k1=-1, а в цикле: k1:=-k1, aN=k1*aN. В некоторых случаях "N"-ый член ряда выражается через "N-1"-ый, например, для ряда:

 

1 + 1/2! + 1/4! + 1/6! +... + 1/(2*N)! +...; N = 0, 1, 2,...

 

общий член ряда вычисляется по формуле: aN = aN-1*k;

Параметр k = aN/aN-1; - коэффициент роста вычисляется предварительно (до написания программы). Для данного ряда

 

aN = 1/(2* N)! = 1/(1*2*... *(2*N-2)*(2*N-1)*2*N);

aN-1 = 1/(2*(N-1))!= 1/((2*N-2))!= 1/(1*2*... *(2*N-2));

 

k = aN/aN-1 = 1/((2*N-1)*2*N).

Здесь N! = 1*2*3*... *N; - вычисление факториала числа "N", причем 0! = 1.

Расчет частичных сумм производится в цикле с условием, например, для данного ряда операторами:

 

N:= 0; a:= 1; SN:= 1; e:= 2. 7182828; S:= (e2 + 1)/e;

repeat N:= N+1; k:= 1/((2*N-1)*2*N); a:= a*k;

SN:= SN+a;

Writeln('Частичная сумма Sn=', Sn:-11:6, '_ _ n=', n:2);

until abs(S-Sn) < eps; { eps - допустимая погрешность расчетов}

Writeln('_ _ _ Сумма ряда S =', S:-11:6);

Практическое задание N 1. 15

 

Определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:

N Вид ряда Общий член ряда Сумма N=

1 1- 1 / 22 + 1 / 32 - 1 / 42 +... (-1)(N-1) / N2 Pi2 / 12 1, 2, 3,...

2 1- 1 / 3 + 1 / 5 - 1 / 7 +... (-1)N / (2*N+1) Pi / 4 0, 1, 2,...

3 1 / (1*2) + 1 / (2*3) + 1 / (3*4) +... 1 / (N*(N+1)) 1 1, 2, 3,...

4 1 / (1*3) + 1 / (3*5) + 1 / (5*7) +... 1 / ((2*N-1)*(2*N+1)) 1 / 2 1, 2, 3,...

5 1- 1 / 1! + 1 / 2! - 1 / 3! +... (-1)N / N! 1 / e 0, 1, 2,...

6 1+ 1 / 1! + 1 / 2! + 1 / 3! +... 1 / N! e 0, 1, 2,...

 

 

Если члены ряда являются функциями аргумента "x", то ряд называется функциональным. Расчет многих функций производится разложением функции в степенной ряд. Приведем пример расчета значения функции y=sin(x) при некотором значении "х" с использованием представления функции в виде ряда:

 

y1 = x - x3/3! +... + (-1)(N+1) * x(2*N+1)/(2*N+1)! +...

где a0= x, aN= k * aN-1, k= (-x2)/(2*N*(2*N+1)), N= 0, 1, 2,...

 

Kаждый член ряда аN при N>0 можно получить умножением предыдущего члена ряда aN-1 на коэффициент k. Приближенное значение функции y=sin(x) находится как частичная сумма "N" членов ряда. Погрешность вычисления значения функции "у" при некотором значении "х" зависит от количества членов ряда и значения "х", поэтому расчет заканчивается при |aN| < eps, где eps - допустимая погрешность расчетов. В программе используем цикл с условием, например:

 

PROGRAM SIN_R;

Var y, y1, x, eps, a, k: real; n: Word;

Begin

Writeln('Вычисление y=sin(x) с использованием ряда!');

Write('Введите значение аргумента x='); readln(x);

Write('Введите значение погрешности еps='); readln(eps);

Writeln; y:= sin(x);

n:= 0; a:= x; { a - первый член ряда }

y1:= a; { y1 - первая частичная сумма ряда }

While abs(a) > eps do begin

n:= n+1; k:= -x*x/(2*n*(2*n+1)); a:= a*k; y1:= y1+a;

Writeln('Приближенное значение функции y1=', y1:-11:8, ' при n=', n)

end;

Writeln('Контрольное значение функции y=sin(x)=',y:-11:8);

Writeln('Нажмите Enter'); readln;

End.

 

Применение оператора Repeat... в данном примере имеет вид:

 

Repeat "операторы" Until abs(a) < eps;

 

Операторы цикла с условием могут применяться для анализа правильности вводимых данных. Контроль входных данных обязателен для рядов, сходящихся не во всей области "X", например, |X|<1 при разложении функции arctg(x) в степенной ряд. В этом случае можно использовать "защиту от дурака", например:

 

Repeat Write('введите значение |х|<1;_ _x='); readln(x)

until abs(x)<1;

 

 

Практическое задание N 1. 16

 

1. Рассчитать значение функции y=f(x) при некотором значении "х" с использованием представления функции в виде ряда:

 

 

N Вид ряда Общий член " N" "Y" "X"

1 1 - x2/2! + x4/4! -... (-1)N *x(2*N) / (2*N)! 0, 1,... cos(x) любое

2 1 + x1/1! + x2/2! +... xN / N! 0, 1,... ex любое

4 x - x3/3 + x5/5 -... (-1)N *x(2*N+1) 0, 1,... arctg(x) |X|<1

(2*N+1)

5 (x-1) + (x-1) 2 +... (x-1)N 1, 2,... ln(x) X>0. 5

x 2*x2 N * xN

6 x - x2/2 + x3/3 -... (-1)N *xN / N 1, 2,... ln(1+x) -1<X<=1

 

Программа запрашивает ввод величин "х", "еps" и выводит на экран приближенное значение "y1" для каждого "N" и "контрольное" значение "y".

 

2. Определить число месяцев, через которое начальная сумма вклада в банк увеличится более чем в три раза. Процентная ставка равна 5% в месяц. Программа выводит на экран ежемесячное значение конечной суммы.

3. Определить число месяцев, через которое начальная сумма валютного вклада в банк увеличится в рублях более чем в три раза. Процентная ставка равна 0. 3% в месяц, а курс валюты растет по отношению к рублю 1% в месяц. Программа выводит на экран ежемесячное значение конечной суммы в рублях.

 







Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.