Показать сообщение отдельно
Старый 04.04.2016, 10:09   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Алекс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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070