Необходимо построить графики заданной функции в паскале.
Условие задачи:
Построить графики функции, заданной в параметрически, при разных значениях параметра "а" (должна быть реализована возможность вывода нескольких графиков при разных значениях "а")
x=a(sh(t) -t), y=a(ch(t)-1) (a>0).
Помогите пожалуста. Заранее благодарю.
http://forum.pascal.net.ru/index.php?showtopic=2729&st=0&p=23770entry23770
Мне та прога не поможет... у меня задание в параметрическом виде построить.
volvo, благодарю. Помог твой мануал.
Вот что получилось:
{$N+}
{$E+}
program ex;
uses crt, graph;
type
tcurve = procedure(t: double;
var x, y: double);
const
a = 3;
b = 9;
L: double = 4;
scale = 12; { mashtab izobrageniya }
step = 0.005;
{
procedura dlya otrisovki tochki krivoy,
parametricheskoe predstavlenie kotoroy zadano funkchiey F
pri znachenii parametra = T
}
procedure set_point(t: double; f: tcurve);
var
x, y: double;
begin
f(t, x, y);
putpixel( (getmaxx div 2) + trunc(scale * x),
(getmaxy div 2) - trunc(scale * y), white );
end;
{
otrisovka krivoy so znacheniem parametra,
legavshim v intervale [start, finish] i shagom izmeneniya parametra step
}
procedure draw_curve(start, finish, step: double;
f: tcurve);
var t: double;
begin
{ risovanie osi koordinat }
setcolor(green);
line(0, getmaxy div 2, getmaxx, getmaxy div 2);
line(getmaxx div 2, 0, getmaxx div 2, getmaxy);
t := start; { nachalo intervala }
{ poka ne vishli za granichu intervala }
while t <= finish do begin
set_point(t, f);
t := t + step; { narashivaem parametr}
end;
end;
procedure giper(t: double; var x, y: double); far;
begin
{ sh(t)=(exp(t)-exp(-t))/2, ch(t)=(exp(t)+exp(-t))/2 }
x := a * ((exp(t)-exp(-t))/2-t);
y := a * ((exp(t)+exp(-t))/2-1);
end;
var
mode, driver:integer;
begin
driver:=detect;
initgraph(mode, driver, 'D:\program\bp\bgi');
{draw_curve(nachalo intervala, konech intervala, shag, my_curve);}
draw_curve(-10, 10, step, giper);
readln;
closegraph;
end.
Тебя смущает то, что A задана константой, и ее нельзя менять? Тогда опиши A вот так:
Const a: double = 3;
Const a: double = 3;
const
a: double = 3;
...
begin
driver:=detect;
initgraph(mode, driver, 'D:\program\bp\bgi');
draw_curve(-10, 10, step, giper); { <--- Рисуешь с параметром А = 3 }
a := 27; { меняешь параметр }
draw_curve(-10, 10, step, giper); { <--- Рисуешь уже с A = 27 }
readln;
closegraph;
end.
Так, например:
procedure set_point(t: double; f: tcurve; color: integer);
var x, y: double;
begin
f(t, x, y);
putpixel( (getmaxx div 2) + trunc(scale * x), (getmaxy div 2) - trunc(scale * y), color );
end;
procedure draw_curve(color: integer; start, finish, step: double; f: tcurve);
var t: double;
begin
setcolor(green);
line(0, getmaxy div 2, getmaxx, getmaxy div 2);
line(getmaxx div 2, 0, getmaxx div 2, getmaxy);
t := start; { nachalo intervala }
{ poka ne vishli za granichu intervala }
while t <= finish do begin
set_point(t, f, color);
t := t + step; { narashivaem parametr}
end;
end;
...
draw_curve(white, -10, 10, step, giper);
a := 27;
draw_curve(yellow, -10, 10, step, giper);
...
Здравствуйте! А у Вас не найдётся готовой задачи(.pas) для улитки Паскаля, Декартова листа, спирали Архимеда и др. Заранее благодарен Вам! До свидания!
Зайди по ссылке из сообщения №5, там лежит файл curves.pas ...