Цитата:
Сообщение от Алекс2
Если я применю эту программу будет ли она работать
|
Нет, в таком виде не будет.
Цитата:
Сообщение от Алекс2
const a=0;{нижний предел}
b=1;{верхний предел}
|
Пределы интегрирования лучше задать в вещественном формате, а значит написать так:
const a=0.0;{нижний предел}
b=1.0;{верхний предел}
Величину n вообще не следует задавать в виде константы: ведь Вам нужно будет считать интеграл при разных значениях разбиения.
Цитата:
Сообщение от Алекс2
f:=1+ sqrt(х)*(2+sin^2x);
|
В Паскале нет символа ^, точнее, есть, но он используется совсем для другого (обозначает указатель при работе с динамическими переменными), а вовсе не как знак возведения в степень. Поэтому функцию следует задать так:
f:=1+ Sqrt(х)*(2+Sqr(sin(x)));
Цитата:
Сообщение от Алекс2
function integral(a,b:real):real;
|
Поскольку нижний и верхний предел у Вас заданы как константы, нет смысла задавать их, как параметры функции. А вот число шагов разбиения - другое дело. Я бы задал так:
function integral(n:integer):real;
Цитата:
Сообщение от Алекс2
{ тут я не знаю правильно или нет}
|
Правильно. Вообще - разбирайтесь с форматами вывода целых и вещественных чисел. Ничего там сложного нет.
Цитата:
Сообщение от Алекс2
{ тут возле а должна быть цыфра я не знаю какая }
|
Да... так же, как и в других выводах. Например, :0:4.
С учетом вышесказанного:
Код:
const
a=0.0;{lower limit}
b=1.0;{upper limit}
function f(x:real):real;
begin
f:=1+Sqrt(x)*(2.0+Sqr(sin(x)));
end;
function integral(m:integer):real;
var
h,k,s:real;
i:integer;
begin
h:=(b-a)/m;
s:=(f(a)+f(b))/2;
k:=a;
for i:=1 to m-1 do
begin
k:=k+h;
s:=s+f(k);
end;
s:=s*h;
integral:=s;
end;
Var
n,j:Integer;
Begin
Writeln(' n Integral');
for j:=1 to 10 do
begin
n:=j*10;
writeln(n:7, integral(n):16:6);
end;
Readln
End.