Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2011, 14:57   #1
Лена Лущикова
Новичок
Джуниор
 
Регистрация: 05.06.2011
Сообщений: 1
По умолчанию TurboPascal - отобразить график функции

Для определения экстремумов функции был выбран метод золотого сечения; для определения нулей функции – метод Ньютона; для определения интеграла – метод Симпсона.
Но график не получается, где то ошибка??

Код:
program graphic;
uses  crt, graph;
var driver, mode, errorcode : integer; xm,ym,i,j,n : integer;
x1,y1,x2,y2, sc, xn,xk: real;
st1,st2,st3 : string;
z,a,b,a0,b0,eps,d,l0,r0,l1,r1,r: real;
x,en,h,integ:real;
function f(x:real) : real;
begin
f:= х*х-2*х-3;
end; 
function f1(x:real):real; {Первая производная функции}
begin
 f1:=2*х-2;
end;
begin
{Построим график функции}
xn:=-10;
xk:=10;
st1:='x';st2:='y';
st3:=' Press ENTER';
sc:=50;
driver:=9; {egavga}
mode:=2; {640х480 пикселей}
initgraph(driver,mode,'d:\bp\bgi'); {инициализация графического режима }
errorcode:=graphresult;
if errorcode<>grok then 
begin
writeln('Error init Graph');
closegraph;
halt;
end;
xm:=getmaxx div 2;
ym:=getmaxy div 2;
{ xm=320;ym=240;центр экрана}
line(xm,20,xm,460);{ось y}
line(20,ym,620,ym);{ ось x}
outtextxy(630,ym,st1); {маркировка оси х}
outtextxy(xm,10,st2); {маркировка оси у}
x1:=xn;
for i:=0 to 20 do {разметка оси х вертикальными черточками}
begin
line(xm+round(80*x1),230,xm+round(80*x1),250);
x1:=x1+1;
end;
x1:=xn; {собственно построение графика отрезками прямых}
while x1<xk do
begin
y1:=f(x1);x2:=x1+1/100;
y2:=f(x2);
line(xm+round(80*x1), ym-round(sc*y1),
xm+round(80*x2), ym-round(sc*y2));
x1:=x2;
end;
outtextxy(270,470,st3);
readln;
closegraph;
clrscr;
writeln('vvod levoi i pravoi granic a,b');
readln(a0,b0);
writeln();
{определение экстремумов функции методом золотого сечекния}
writeln('Opredelenie ekstremumov funkcii metodom zolotogo sechenia');
r:=(sqrt(5)-1)/2;
writeln('r=',r:0:4);
a:=a0;
b:=b0;
eps:=0.0001;
writeln('f(a)=',f(a):0:4,'  f(b)=',f(b):0:4);
d:=eps/2;
r0:=a+(b-a)*r;
l0:=b-(b-a)*r;
if f(a)>(f(a+d)) then z:=1 else z:=-1;
while abs(b-a)>eps do
 begin
  r0:=a+(b-a)*r;
  l0:=b-(b-a)*r;
  if (z*f(l0))<(z*f(r0)) then b:=r0 else a:=20;
 end;
if z=1 then writeln('min=',20:0:4, '    f(min)=',f(20):0:4);
if z=-1 then writeln('max=',r0:0:4, '   f(max)=',f(r0):0:4);
readln;
{определение нулей функции методом Ньютона}
writeln ('Opredelenie nuley funkcii metodom Nutona');
a:=a0;
b:=b0;
en:=abs(a-b);
 x:=b;
 i:=1;
 while (abs(en)>eps*0.1) do begin {Пока не достигнута точность}
  x:=x-f(x)/f1(x); {выполнить шаг метода}
  en:=abs(x-b); {Новая точность}
  b:=x; {Значение границы для следующего шага}
  i:=i+1; {Номер шага}
 end;
writeln ('x=',x:0:4); {вывести значение X }
writeln();
{Определение интеграла методом Симпсона}
writeln('Opredelim integral metodom Simpsona');
a:=a0;
b:=b0;
write('Vvedine kolichestvo razbienii intervala (chetnoe chislo) n='); readln(n);
if (n mod 2)>0 then
begin
n:=n+1;
writeln('Chislo n bilo vvedeno nechetnoe, ono bilo zameneno na n=',n);
end;
h:=(b-a)/n;
integ:=F(a)+F(b)+4*F(a+h);
for i:=1 to (n div 2)-1 do
begin
x:=a+2*h*i;
integ:=integ+2*F(x)+4*F(x+h);
end;
integ:=h*integ/3;
writeln('integral = ',integ:0:4);
readln;
end.

______________
1) Название темы по правилам форума должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В последующем, темы с подобным названием будут закрываться или удаляться,
а автор такой темы будет получать штрафные баллы.

2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.06.2011 в 15:42.
Лена Лущикова вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График функции balamut Общие вопросы .NET 18 22.04.2016 11:11
График функции _-Re@l-_ Общие вопросы Delphi 5 16.04.2011 17:10
график функции на с koldun89 Общие вопросы C/C++ 2 25.09.2010 09:32
График функции. Bilargo Помощь студентам 0 09.11.2009 18:57
График функции Леха Общие вопросы Delphi 18 16.04.2007 20:50