function f(x: real): real; begin f:=0.5*x*cos(2*x); end;
// l (logical) - логические координаты // s (screen) - физические координаты procedure drawGraph(x1,x2,y1,y2: real; f: FUN); var xl,xl0,wl,yl,yl0,hl: real; xs0,ws,ys0,hs: integer; function LtoSx(xl: real): integer; begin Result:=round(ws/wl*(xl-xl0)+xs0); end; function LtoSy(yl: real): integer; begin Result:=round(hs/hl*(yl-yl0)+ys0); end; function StoLx(xs: integer): real; begin Result:=wl/ws*(xs-xs0)+xl0; end; var xi: integer; begin // drawGraph xs0:=0; ys0:=WindowHeight; ws:=WindowWidth; hs:=WindowHeight; xl0:=x1; yl0:=y1; wl:=x2-x1; hl:=-(y2-y1); MoveTo(xs0,LtoSy(f(StoLx(xs0; for xi:=xs0+1 to xs0+ws do LineTo(xi,LtoSy(f(StoLx(xi; end;
begin // program SetWindowCaption('График функции'); drawGraph(-12,12,-23,23,f); end.
import math
x = float(input('Введите аргумент Х точки: '))
if -3 <= x < -1:
y = -x + 1
elif -1 <= x < 1:
y = 0
elif 1 <= x < 5:
y = math.sqrt(4 - (x-3)*(x-3))
elif 5 <= x < 7:
y = -(x/2)+2.5
else:
print('Х вне допустимого диапазона')
input()
exit()
print('Точка с координатами %2.2f ; %2.2f'%(x, y))
А это так, для интереса и наглядности:
import turtle, math
def line(x1,y1,x2,y2):
turtle.pu()
turtle.goto(x1,y1)
turtle.pd()
turtle.goto(x2,y2)
turtle.pu()
turtle.title('График функции')
turtle.setup(800,400)
turtle.setworldcoordinates(-4,-2,8,4)
turtle.hideturtle()
line(-4,0,8,0)
line(0,-2,0,4)
for x in range(-3,8):
line(x,-0.1, x, 0.1)
for y in range(-1, 4):
line(-0.1,y,0.1,y)
turtle.pensize(2)
line(-3,2,-1,0)
line(-1,0,1,0)
turtle.pd()
x = 1
while x < 5:
turtle.goto(x, math.sqrt(4 - (x-3)*(x-3)))
x += 0.01
line(5,0,7,-1)
x = float(input('Введите аргумент Х точки: '))
turtle.pencolor('red')
if -3 <= x < -1:
y = -x + 1
elif -1 <= x < 1:
y = 0
elif 1 <= x < 5:
y = math.sqrt(4 - (x-3)*(x-3))
elif 5 <= x < 7:
y = -(x/2)+2.5
else:
print('Х вне допустимого диапазона')
input()
exit()
y1 = '%2.2f'%y
print('y = %2.2f'%y)
turtle.pu()
turtle.goto(x,y)
turtle.dot(7, 'red')
turtle.pensize(1)
turtle.pencolor('green')
line(x,y,0,y)
line(x,y,x,0)
turtle.goto(0.5,3.5)
turtle.write('Точка ('+str(x)+'; '+y1+')', font=('Arial',10))
turtle.exitonclick()
uses GraphABC;
type FUN = function (x: real): real;
function f(x: real): real;
begin
f:=0.5*x*cos(2*x);
end;
// l (logical) - логические координаты
// s (screen) - физические координаты
procedure drawGraph(x1,x2,y1,y2: real; f: FUN);
var
xl,xl0,wl,yl,yl0,hl: real;
xs0,ws,ys0,hs: integer;
function LtoSx(xl: real): integer;
begin
Result:=round(ws/wl*(xl-xl0)+xs0);
end;
function LtoSy(yl: real): integer;
begin
Result:=round(hs/hl*(yl-yl0)+ys0);
end;
function StoLx(xs: integer): real;
begin
Result:=wl/ws*(xs-xs0)+xl0;
end;
var xi: integer;
begin // drawGraph
xs0:=0; ys0:=WindowHeight;
ws:=WindowWidth;
hs:=WindowHeight;
xl0:=x1;
yl0:=y1;
wl:=x2-x1;
hl:=-(y2-y1);
MoveTo(xs0,LtoSy(f(StoLx(xs0;
for xi:=xs0+1 to xs0+ws do
LineTo(xi,LtoSy(f(StoLx(xi;
end;
begin // program
SetWindowCaption('График функции');
drawGraph(-12,12,-23,23,f);
end.