ВЫЧИСЛЕНИЕ МАССИВА ЗНАЧЕНИЙ ФУНКЦИИ




Весьма распространенной задачей является создание массива значений некоторой заданной функции f(x) на заданном отрезке изменения аргумента xн < x < xк (от x–начального до x–конечного) с заданным шагом D x = h. Такая задача возникает в случаях приближенного вычисления интегралов, поиска локальных экстремумов функции, ее наибольших и наименьших значений, численного решения уравнений и т.п. Иногда одновременно с массивом значений функции необходимо иметь и массив соответствующих значений аргумента.

Рассмотрим программную реализацию данной задачи на конкретном примере, который без труда может быть обобщен на любые другие уравнения функций, величин отрезков и шагов.

Пример 3.1 Пусть необходимо создать массивы значений аргумента x и функции y для функции


на отрезке 0
x
6, с шагом h = 0.25.

Отметим прежде всего, что количество элементов массива в таком случае вычисляется по формуле


где хн и хк – начальное и конечное значения аргумента.

В данном случае n=
+ 1 = 25.

Последовательные значения аргумента X удобно вычислять по формуле

Xi = Xн + h (i – 1).

Фрагмент программы, реализующей поставленную задачу, может быть оформлен следующим образом:

program Masfun;

type mas= array [1..25] of real;

var x,y:mas; i:integer;

Begin

for i:=1 to 25 do

Begin

x[i] = 0 + 0.25*(i–1);

y[i] = 2*exp(1.5*x[i])*cos(x[i]/2–0.5);

writeln('x=';x[i]:5:2;' y=';y[i]:6:3)

end;

end.

СУММИРОВАНИЕ И ПЕРЕМНОЖЕНИЕ ЭЛЕМЕНТОВ МАССИВОВ

Рассмотрим задачу нахождения суммы и произведения всех элементов некоторого одномерного массива X т.е. пусть дано

X1,X2,... Xk,... Xn

и требуется вычислить:

S = X1 + X2 +... + Xk +...+ Xn;

P = X1 * X2 *... * Xk *...* Xn.

Из математической формулировки задачи вытекает и алгоритм вычисления суммы: присваиваем сумме значение первого слагаемого, а затем наращиваем эту величину последовательным прибавлением к ней каждого очередного слагаемого, начиная со второго и кончая последним. Делать это следует, разумеется, в цикле. Таким образом сумма может быть вычислена фрагментом из двух операторов:

S:= X[1];

for k:= 2 to n do S:= S + x[k];

Аналогично вычисляется и произведение:

P:= x[1];

for k:= 2 to n do P:= P * x[k];

Во многих случаях, однако, более удобно начинать вычисление суммы и произведения с присвоения им первоначально, соответственно нулевого и единичного значений, после чего наращивание суммы и произведения начинать с первого элемента массива, т.е. одновременное вычисление величин S и P может быть в данном случае выполнено и так:

S:=0;P:=1;

for k:=1 to n do

Begin

S:= S + x[k];

P:= P * x[k];

end;

При суммировании и перемножении элементов двумерных массивов – матриц требуется перебирать все элементы по рядам: либо по строкам и в каждой строке по столбцам, либо по столбцам и в каждом столбце по строкам. Например вычислить сумму и произведение всех элементов матрицы A размером m * n (см. пример 2.9) можно с помощью следующих операторов:

S:=0; P:=1;

for i:=1 to m do

Begin

for j:=1 to n do

Begin

S:= S + a[i,j];

P:= P * a[i,j];

end;

end;

Результат не изменится, если в данном фрагменте операторы циклов по i и j поменять местами.

Рассмотрим еще одну задачу, довольно часто встречающуюся в работе с массивами. Пусть дано два одинаковых по размеру массива X и Y (i=1,2,...n). Требуется вычислить величину

SP = x1 y1 + x2 y2 +... + xi yi +... + xn yn.

Отметим, что такая сумма – сумма попарных произведений одноименных элементов двух массивов (векторов) называется скалярным произведением этих массивов. Вычисление этого произведения может быть выполнено так:

SP:= 0;

for i:=1 to n do SP:= SP + x[i]*y[i];



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: