Упростить алгоритм - 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
. - Программа завершается чтением символа с клавиатуры.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д