Упростить алгоритм - Free Pascal
Формулировка задачи:
Помогите исправить ошибки и упростить алгоритм.
Выбрать алгоритм, составить блок-схему и программу для вычисления в точках xi = a + i×h, i = 0,1,2…,n, h = (b – a)/n промежутка [a,b]наибольшего и среднего значений функции y = f(x), указанной в варианте задания. Для выполнения задания воспользоваться оператором цикла FOR;
http://saveimg.ru/show-image.php?id=9104d6110c1d1bde4d18890f4f8c212b
program lab3_12A
function step2(chislo,stepen:real):real;
begin
Result:=exp(stepen*ln(chislo));
end;
function f(x:real):real;
begin
Result:=(Step2(ln((x-1)*(x-1)/x),3)+cos(2*x)*cos(2*x))/Step2(x*x-5*x+6,1/6)*
sin(Step2(3,x*x-1)/2);
end;
const n=5;
a=3.5;
b=4;
var h,x,y,sr,min,max:real;
i:integer;
begin
sr:=0;
min:=f(a);
max:=f(a);
h:=(b-a)/n;
For i:=0 to n do
begin
x:=a+i*h;
y:=f(x);
sr:=sr+y;
If min>y then
min:=y;
If max<y then
max:=y;
Writeln(x:5:5,' ',y:5:5);
end;
sr:=sr/(n+1);
Writeln;
Writeln('sr = ',sr:5:5);
Writeln('min = ',min:5:5);
Writeln('max = ',max:5:5);
Readln;
end.Решение задачи: «Упростить алгоритм»
textual
Листинг программы
program lab3_12A;
function step2(chislo, stepen: real): real;
begin
step2 := exp(stepen * ln(chislo));
end;
function f(x: real): real;
begin
f := (Step2(ln((x - 1) * (x - 1) / x), 3) + sqr(cos(2 * x))) /
Step2(x * x - 5 * x + 6, 1 / 6) * sin(Step2(3, x * x - 1) / 2);
end;
const
n = 5;
a = 3.5;
b = 4;
var
h, x, y, sr, min, max: real;
i: integer;
begin
sr := f(a);
min := f(a);
max := f(a);
h := (b - a) / n;
for i := 0 to n do
begin
x := a + i * h;
y := f(x);
sr := sr + y;
if min > y then
min := y;
if max < y then
max := y;
Writeln(x: 5: 5, ' ', y: 5: 5);
end;
sr := sr / (n + 1);
Writeln;
Writeln('sr = ', sr: 5: 5);
Writeln('min = ', min: 5: 5);
Writeln('max = ', max: 5: 5);
Readln;
end.
Объяснение кода листинга программы
- Программа на языке Free Pascal.
- Функция
step2принимает два аргумента типаreal:chisloиstepen. - Функция
fпринимает один аргумент типаreal:x. - Константы:
n- 5;a- 3.5;b- 4;
- Переменные:
h- (b - a) / n;x- a + i * h;y- f(x);sr- сумма значений функцииfна отрезке [a, b];min- минимальное значение функцииfна отрезке [a, b];max- максимальное значение функцииfна отрезке [a, b];
- Цикл
forвыполняется от 0 до n. - Внутри цикла вычисляется значение
xиy, после чего обновляются значенияsr,minиmax. - Выводится текущее значение
xиyс шагом 0.05. - После выполнения цикла, вычисляется среднее значение функции
fна отрезке [a, b] и выводится на экран вместе со значениямиsr,minиmax. - Программа завершается чтением символа с клавиатуры.