Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Метод прямоугольника

63K
22 марта 2011 года
memoRRRRR
10 / / 12.02.2011
Код:
uses crt, graph;
const
 E=0.0001;
var
  grdriver:integer;
  grMode:integer;
 Fa,Fb,h,x,g,y,n,tg ,a,b,i,s,Sn:real;
  begin
 grDriver:=Detect;
 InitGraph(grDriver, grMode,' ');
 clearDevice;
 outtextXY(0,0,'"Prymoygolnika"');
 readln;
 closegraph;
 n:=1;
 a:=0;
 b:=1.57;
grDriver:=Detect;
 InitGraph(grDriver, grMode,' ');
 If GraphResult<>grOk then Halt;
 clearDevice;
 line(320,0,320,480);
 line(0,240,640,240);
 
 Fa:=a*tg*(a/2);
 Fb:=b*tg*(b/2);
 SN:=(Fa+Fb)/2*(A+B);
 repeat
 h:=(B-A)/n;
 S:=0;
 x:=a+h;
 repeat
 S:=S+x*tg*(x/2);
 x:=x+h;
 Until x>b;
 S:=S*h;
 g:=sn;
  n:=2*n;
  Until (abs(S-g)/3)<E;
  x:=a;
  repeat
  y:=x*tg*(x/2);
 putpixel(310+round(x*10),230+round(y*10),red);
 x:=x+0.001;
 Until x>b;
 x:=a;
  repeat
  y:=x*tg*(x/2);
  line(310+round(x*10),230+round(y*10),310+round(x*10),240);
  x:=x+0.5;
  Until x>=b+0.5;
  readln;
  ClearDevice;
  CloseGraph;
 Fa:=a*tg*(a/2);
 Fb:=b*tg*(b/2);
 
 writeln('S=',s:2:5);
 writeln('N=',n:2:5);
 readln;
end.

вот задание если, что...Вычислить определенный интеграл с заданной точностью..вывести на экран значения интеграла,кол-во разбиений, значение первообразной. Нарисовать график подынтегральной ф-ции.
Проблема в том, график криво выводится( не уверен, что функция правильно написана
первообразная
xtg*x/2
247
23 марта 2011 года
wanja
1.2K / / 03.02.2003
А функция какая?
В этом месте надо писать не первообразную, а саму подынтегральную функцию :
S:=S+x*tg*(x/2);

Во вторых: tg*(x/2) - значит переменную tg (да еще и с незаданным значением) умножить на x/2. Ведь тангенс - это функция, а не переменная. В Turbo Pascal, насколько я помню, тангенса нет, так что надо писать sin(x)/cos(x)
63K
23 марта 2011 года
memoRRRRR
10 / / 12.02.2011
[ATTACH]4997[/ATTACH]
вот функция
я менял тангенс..вообще ничего не выводит..только оси и все(
63K
23 марта 2011 года
memoRRRRR
10 / / 12.02.2011
Код:
uses graph;
const xn=-0;
      xk=pi/2;
function F(x:real):real;
begin
F:=(x+sin(x)/(1+cos(x)));
end;
var mx,my,x,dx,y:real;
    grD,grM,x0,y0,i,px,py:integer;
    s:string;
begin
grD:=detect;{инициализация графического режима}
initgraph(grD,grM,'');
X0:=50;{начало координат в центре экрана}
Y0:=getmaxY-60;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=(getmaxX-80)/(xk-xn);
my:=(y0)/F(xk);
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
 
 
 
for i:=1 to round(F(xk)*10) do   {максимальное количество засечек в одну сторону}
 begin
  {подриси оси Х}
  line(x0+round(i*mx/10),y0-3,x0+round(i*mx/10),y0+3); {засечки на оси Х}
  str(i/10:0:1,s);
  outtextXY(x0+round(i*mx/10),y0+10,s);
  {подписи оси Y}
  line(x0-3,y0-round(i*my/10),x0+3,y0-round(i*my/10));
  str(i/10:0:1,s);
  outtextXY(x0-40,y0-round(i*my/10),s);
 end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=xn;
while x<=xk do
 begin
  px:=x0+round(x*mx); {изменение по оси Х}
  y:=F(x); {график в реальных координатах}
  py:=y0-round(y*my);{в экранных}
  putpixel(px,py,12);{график красным}
  x:=x+dx; {наращиваем х}
 end;
readln
end.

вот вроде с графикой разобрался...как теперь арифметику вставить..правильно высчитать(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог