С использованием векторных операций. disp('значения x'); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

С использованием векторных операций. disp('значения x');



xn=-1;

xk=1;

h=0.1;

x= xn:h:xk;

f=cos(x).^2; 

disp('значения x');

disp(sprintf('%4.1f', x))

disp('значения f');

disp(sprintf('%7.2f',f))

 

Задача 9. Поиск максимального значения функции

Условие задачи. Найти максимальное из n значений функции  на отрезке от a до b, где х изменяется с шагом .

Задача поиска максимального или минимального из множества значений встречается достаточно часто. Для поиска максимума поступают следующим образом. Выделяют переменную, которая будет хранить временное значение максимума, назовём её max. Сначала ей присваивают одно из проверяемых значений, оно может быть любым из них, чаще всего берут первое по порядку (можно также взять число, заведомо меньшее, чем все проверяемые значения, если известен возможный диапазон этих значений).

Далее все остальные значения проверяемого множества сравниваются со значением переменной max, она служит эталоном для сравнения, и, как только встречается большее значение, то оно заносится в переменную max. Таким образом, в каждый момент она хранит наибольшее из проверенных к этому времени значений, а к концу проверок – самое большое из всех значений.

Исходными данными в этой задаче являются границы изменения аргумента функции х (вещественные а и b) и количество значений функции (целочисленное n), которое нужно получить и проверить на отрезке от а до b. Чтобы получить n значений функции, нужно в цикле изменять аргумент х от а до b с постоянным шагом h. Поскольку требуемое количество значений функции известно (n), то проще всего использовать арифметический цикл, или «цикл с предопределённым количеством выполнений». До начала цикла следует вычислить значение шага изменения аргумента х по формуле , установить начальное значение аргумента х=а и, вычислив первое значение функции , взять его за начальное значение максимума.

Далее в цикле n -1 раз (так как одно значение уже найдено и учтено) повторяется следующая последовательность действий: вычисляется следующее значение аргумента x=x+h, вычисляется очередное значение функции  и сравнивается с текущим значением максимума - если оно больше max, то его значение заносится в переменную max. По окончании цикла в переменной max останется самое большое из всех проверенных значений, оно и будет искомым результатом.

Структурированная запись алгоритма 9

1. Ввести a, b и n.

2. Вычислить h=(b-a)/(n-1).

3. Задать начальные значения x=a и max=2*sin(a)+cos(2*a).

4. Повторять в цикле n-1 раз:

4.1. Вычислить следующее значение аргумента x=x+h и функции f= 2*sin(x)+ cos (2* x).

4.2. Проверить: если f>m a x, то max=f

5. Вывести результат max.

Схема алгоритма 9

Программа на языке Си

#include <stdio.h>

#include <math.h>

int main (void)

{

double a, b, x, h, f, max;

int i, n;

printf (״Введите n\n”);

 scanf (״%d”, &n);

printf (²Введите границы отрезка a и b\n”);

scanf (²%lf%lf”, &a, &b);

h=(b-a)/(n-1);

max=2*sin(a)+cos(2*a);

x=a;

for (i=2; i<=n; i++)

{

x+=h;

f=2*sin(x)+log(x);

if (f>max) max=f;

}

printf (²Максимальное значение функции на \
интервале [%lf;%lf] равно %lf”, a, b, max);

return 0;

}

Программа на языке Паскаль

Program Main_9;

Var

i, n: integer;

a, b, h, f, max: real;

begin

writeln(' Введите а, b и n');

readln(a, b, n);

h:=(b-a)/(n-1);

x:=a;

max:=2*sin(a)+cos(2*a);

for i:=1 to n-1 do

begin

x:=x+h;

f:=2*sin(x)+cos(2*x);

if f>max then max:=f;

end;

writeln('max=', max:5:3);

end.

Программа на языке Фортран

Program main_9

Implicit none

integer i, n

real a, b, h, f, max

print *, 'Введите а, b и n'

read *, a, b, n

h=(b-a)/(n-1)

x=a

max=2*sin(a)+cos(2*a)

do i=1,n-1

x=x+h

f=2*sin(x)+cos(2*x)

if (f>max) max=f

enddo

print *,'max=', max

end program

Программа на языке Python

from math import sin

from math import cos

print("Введите a, b, n по одному в строке, “)

print(“a <= b, n - натуральное:")

a=float(input())

b=float(input())

n=int(input())

h=(b-a)/(n-1)

x=a

max=2*sin(x)+cos(2*x)

for i in range(n-1):

# i = 0, 1,..., n-2 - всего n-1 Значений

x = x + h

f = 2*sin(x)+cos(2*x)

if f > max:

max = f

print("max = ", max)

Программа в системе Матлаб

a= input('a=');

b= input('b=');

n= input('n=');

h=(b-a)/(n-1);

x=a;

max=2*sin(x)+cos(2*x);

for i=1:n-1

x = x + h;

f = 2*sin(x)+cos(2*x);

if (f > max)

max = f;

end

end

disp('max=')

disp(max)



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 76; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.10.137 (0.009 с.)