постоение графика 1/x
Модератор: Модераторы
постоение графика 1/x
люди помогите построить график 1/x !
т.e. как его построить чтоб он выглядел по человечески ?
т.e. как его построить чтоб он выглядел по человечески ?
-
first-leon
- новенький
- Сообщения: 68
- Зарегистрирован: 20.04.2006 18:46:31
- Контактная информация:
-
first-leon
- новенький
- Сообщения: 68
- Зарегистрирован: 20.04.2006 18:46:31
- Контактная информация:
Это довольно простой график. В первую очередь нужно учесть что функция в точке 0 не определена(или не существует, матан уж точно и не помню).
Значит тебе нужно построить график во всех точках кроме 0.
Можно сделать так:
x_old и y_old - координаты прошлой вычесленной точки графика. x, y - точки графика координаты которой мы только что вычислили. Чертим отрезок с концами в наших двух точках.
Вроде все.
Значит тебе нужно построить график во всех точках кроме 0.
Можно сделать так:
Код: Выделить всё
...
for x:=-100 to 100 do
begin
if x<>0 then
begin
y:=1/x;
line(x_old, y_old,x,y);
x_old:=x;
y_old:=y;
end;
end;
...
x_old и y_old - координаты прошлой вычесленной точки графика. x, y - точки графика координаты которой мы только что вычислили. Чертим отрезок с концами в наших двух точках.
Вроде все.
-
first-leon
- новенький
- Сообщения: 68
- Зарегистрирован: 20.04.2006 18:46:31
- Контактная информация:
Ты прав писать надо так
И еще - в цикле с шагом в 1 ниче хорошего не нарисуешь.
Так наверное лучше будет:
Код: Выделить всё
line(round(x_old), round(y_old), round(x), round(y));
И еще - в цикле с шагом в 1 ниче хорошего не нарисуешь.
Так наверное лучше будет:
Код: Выделить всё
var
x,y,x_old,y_old:double;
...
x:=-10
y:=1/x;
repeat
if x<>0 then
begin
y:=1/x;
line(round(x_old*10+100), round(100-y_old*10), round(x*10), round(y*10));
x_old:=x;
y_old:=y;
end;
x:=x+0.1
until x<10;
...
-
first-leon
- новенький
- Сообщения: 68
- Зарегистрирован: 20.04.2006 18:46:31
- Контактная информация:
Вот на TP, точно работает:
Код: Выделить всё
program Project1;
uses
graph, crt;
var
x,y,x_old,y_old:real;
gd, gm:integer;
begin
gd:=9;
gm:=2;
initgraph(gd, gm, 'egavga.bgi');
x:=-10;
x_old:=x;
y_old:=1/x_old;
repeat
if x<>0 then
begin
y:=1/x;
line(round(x_old*20+300), round(200-y_old*20), round(x*20+300), round(200-y*20));
x_old:=x;
y_old:=y;
end;
x:=x+0.01
until x>-0.1;
x:=0.1;
x_old:=x;
y_old:=1/x_old;
repeat
if x<>0 then
begin
y:=1/x;
line(round(x_old*20+300), round(200-y_old*20), round(x*20+300), round(200-y*20));
x_old:=x;
y_old:=y;
end;
x:=x+0.01
until x>10;
readln;
end.
