Часть 2. Нахождение наибольшего или наименьшего значения при вычислении значения функции




ЛАБОРАТОРНАЯ РАБОТА #2

ПРОГРАММИРОВАНИЕ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ

Часть 1. Табулирование функции

 

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

Рассмотрим задачу, называемую табулированием функции. Вычислить и вывести на печать значения функции Y=F(X) при X, изменяющемся на отрезке [A, B], с разбиением его на N подотрезков. Это цикл с заданным числом повторений N, где шаг изменения аргумента X определяется как H=(B-A)/N.

Перед первым выполнением цикла необходимо задать начальное значение аргумента X, равное A, а затем организовать (N+1) раз вычисление и печать значений функции Y. При каждом новом выполнении цикла необходимо изменять аргумент на шаг H. Чтобы процесс был конечным, необходимо задать условие окончания цикла. Таким образом, для организации цикла необходимо:

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

Последние три функции выполняются многократно.

 

Описание алгоритма задачи табулирования функции может иметь вид:

 

1. Прочитать A.

2. Прочитать B.

3. Если B<A, то поменять местами A и B.

4. Прочитать N.

5. Если N<=0, то повторить п. 4.

6. Вычислить H=(B-A)/N;

7. Вычислить X=A.

8. Напечатать X и Y=F(X).

9. Вычислить X=X+H.

10. Если X<=B, то повторить п. 8.

 

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

 

1. Прочитать A.

2. Прочитать B.

3. Если B<A, то поменять местами A и B.

4. Прочитать N.

5. Если N<=0, то повторить п. 4.

6. Вычислить H=(B-A)/N;

7. Вычислить X=A.

8. Организовать цикл для параметра цикла i, изменяющегося от 1 до N+1 c шагом 1; в теле цикла выполнять:

a. напечатать X и Y=F(X);

b. вычислить X=X+H.

 

Пример. Вычислить и вывести на печать значения функции Y=SIN(X). В соответствии со вторым вариантом описания алгоритма можно написать такую программу:

 

program Tabul;

 

{$APPTYPE CONSOLE}

 

uses

SysUtils;

 

procedure Pause;

begin

Write('Press <Enter>...');

Readln

end;

 

var

a, b, h, x, temp: Real;

n, i: Integer;

 

begin

Write('Enter a: ');

Readln(a);

Write('Enter b: ');

Readln(b);

if (b < a) then

begin

temp:=a;

a:=b;

b:=temp;

end;

repeat

Write('Enter n: ');

Readln(n);

until (n > 0);

Writeln;

h:=(b-a)/n;

x:=a;

writeln('+--------------------+');

writeln('| x | sin(x) |');

writeln('+--------------------+');

for i:=1 to (n+1) do

begin

Writeln('|',x:6:2,' | ',sin(x):6:2,' |');

x:=x+h

end;

writeln('+--------------------+');

Writeln;

Pause

 

end.

 

Протокол выполнения программы будет иметь вид:

 

Enter a: -1

Enter b: 1

Enter n: 10

 

+--------------------+

| x | sin(x) |

+--------------------+

| -1.00 | -0.84 |

| -0.80 | -0.72 |

| -0.60 | -0.56 |

| -0.40 | -0.39 |

| -0.20 | -0.20 |

| -0.00 | -0.00 |

| 0.20 | 0.20 |

| 0.40 | 0.39 |

| 0.60 | 0.56 |

| 0.80 | 0.72 |

| 1.00 | 0.84 |

+--------------------+

 

Press <Enter>...

 

Часть 2. Нахождение наибольшего или наименьшего значения при вычислении значения функции

При поиске наибольшего Ymax (наименьшего Ymin) из вычисляемых значений функции F(X) переменной Ymax (Ymin), которая после вычислений будет представлять максимальное (минимальное) значение функции, до входа в цикл следует присвоить одно из вычисляемых значений F(X), а в цикле для каждого очередного значения функции F(X) проверять: если F(X) >Ymax (F(X) <Ymin), то Ymax (Ymin) присвоить это значение функции.

Если заранее известно, что наибольшее (наименьшее) значение функции на заданном интервале больше (меньше) некоторой величины, например, -1015 (1015), то эту величину можно использовать в качестве начального значения при поиске наибольшего (наименьшего) значения функции, например, Ymax:=-1E15 (Ymin:=1E15).

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

Ниже представлен фрагмент программы поиска наибольшего значения функции

Y(X)=e-XSin(5X), вычисляемых на значениях X, изменяющихся от A до B с шагом H, а также значения аргумента, на котором он достигается.

 

Ymax:=Exp(-a)*Sin(5*a);

Xmax:=a;

X:=a+h;

Xk:=b+h/2;

while X < Xk do

begin

Y:= Exp(-X)*Sin(5*X);

if Y > Ymax then

begin

Ymax:=Y;

Xmax:=X;

end;

X:= X+h;

end;

WriteLn('Ymax = ',Ymax:6:2);

WriteLn('Xmax = ',Xmax:6:2);

 

Рассмотренные выше приёмы нахождения на заданном интервале максимума/минимума функции и точек (значений аргумента), на которых они достигаются, не следует путать с нахождением экстремумов функции, так как искомый максимум/минимум может находиться на границе интервала, где производная функции не равна нулю.

 

Задание

Написать программу табулирования функции Y=F(X) (в соответствии со своим вариантом), определенной на отрезке [A, B], с разбиением его на N подотрезков. Найти наибольшее и наименьшее значения функции на заданном отрезке, а также значения аргументов, при которых они достигаются.

Варианты заданий

 

№№ Формула №№ Формула №№ Формула
  у= 3√х   у= sin(x)eх   у= sin(x) sh(x)
  у= х√х   у= x2+ cos(x)   y= 0.5+sh2(x)
  у= ln(х)   у= x+ sin(x)   у= √х ch(x)
  у= 1+ ln2(х)   у= cos(x)/x2   у= 1/ (1+ ch2(x) )
  у= 1+ eх   у= ln(х2)   у= √х sh(x)
  у= 1/3√х   у= eхx /2   у= ch(x)e
  у= 1/√х   у= cos(x) eх   у= √x+ sin(x)
  у= 4√х   у= 1/(1+ e)   y= x(1-cos(x))
          y= 5√х +sh2(x)

 



Поделиться:




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

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


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