ПаскальАВСРазработать программку построения графика функции [tex] y=x^2 -x [/tex] на

ПаскальАВС
Создать программку построения графика функции  y=x^2 -x на участке  1\leq x\leq 2.5

Задать свой вопрос
Полина Колено
x^2-x это парабола. Нужно просто отсечь излишнее на участке?
Akusheva Stefanija
Т.е. должна получится кривая от 1 до 2.5 по x?
Nadezhda Vure
Да, но не запамятовай, что это ПаскальАБЦ, так что там с модулем graph
Гена Седлик
Могу сделать на PascalABC.NET. Там модуль graphABC.
1 ответ
Uses
  graphABC;
const
  W = 800; H = 500;
 
function F(x: real): real;
begin
  F := x * x - x;
end;

var
  x0, y0, x, y, xLeft, yLeft, xRight, yRight, n: integer;
  a, b, fmin, fmax, x1, y1, mx, my, dx, dy, num: real;
  i: byte;
  s: string;
begin
  SetWindowSize(W, H);
  xLeft := 50;
  yLeft := 50;
  xRight := W - 50;
  yRight := H - 50;
  a := -2; b := 5; dx := 0.5;
  fmin := -2; fmax := 5; dy := 0.5;
  mx := (xRight - xLeft) / (b - a);
  my := (yRight - yLeft) / (fmax - fmin);
  x0 := trunc(абс(a) * mx) + xLeft;
  y0 := yRight - trunc(абс(fmin) * my);
  line(xLeft, y0, xRight + 10, y0);
  line(x0, yLeft - 10, x0, yRight);
  SetFontSize(12);
  SetFontColor(clBlue);
  TextOut(xRight + 20, y0 - 15, 'X');
  TextOut(x0 - 10, yLeft - 30, 'Y');
  SetFontSize(7);
  SetFontColor(clRed);
 
  n := round((b - a) / dx) + 1;
  for i := 1 to n do
  begin
    num := a + (i - 1) * dx;
    x := xLeft + trunc(mx * (num - a));
    Line(x, y0 - 3, x, y0 + 3);
    str(Num:0:1, s);
    if abs(num) gt; 1E-15 then
      TextOut(x - TextWidth(s) div 2, y0 + 10, s)
  end;
 
  n := round((fmax - fmin) / dy) + 1;
  for i := 1 to n do
  begin
    num := fMin + (i - 1) * dy;
    y := yRight - trunc(my * (num - fmin));
    Line(x0 - 3, y, x0 + 3, y);
    str(num:0:1, s);
    if abs(num) gt; 1E-15 then
      TextOut(x0 + 7, y - TextHeight(s) div 2, s)
  end;
  TextOut(x0 - 10, y0 + 10, '0');
 
  x1 := a;
  while x1 lt;= b do
  begin
    y1 := F(x1);
    if ((x1 gt;= 1) and (x1 lt;= 2.5)) then
    begin
      x := x0 + round(x1 * mx);
      y := y0 - round(y1 * my);
      if (y gt;= yLeft) and (y lt;= yRight) then SetPixel(x, y, clBlue);
    end;  
    x1 := x1 + 0.001
  end
end.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт