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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2006, 11:23   #1
AfzaL
 
Регистрация: 03.12.2006
Сообщений: 3
Вопрос Логарифмический масштаб

Нужно построить график функции в линейном и логарифмическом масштабе. В линейном вроде справился, а вот с логарифмическим никак.

Помогите, пожалуйста.
Заранее большое спасибо!!!
AfzaL вне форума Ответить с цитированием
Старый 03.12.2006, 11:29   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,758
По умолчанию

Можно увидеть наработки. И указать относительно чего будет строиться график?
Alar вне форума Ответить с цитированием
Старый 03.12.2006, 12:16   #3
AfzaL
 
Регистрация: 03.12.2006
Сообщений: 3
Сообщение

Какой график на данный момент не важно.
Рассмотрим на примере lg(x). В логарифмическом масштабе эта функция должна быть в виде прямой.
Вот наработки вырисовывающие в линейном масштабе:
Код:
Type koordinati = Record
                  xek, xen, yek, yen: integer;	{значения в пикселях}
                  xn, yn, xk, yk: real;		{реальные значения фукции}
                         end;

Function lg(x: Real):Real;
begin
lg:=ln(x)/ln(10);
end;
...
Procedure Grafik (koord: koordinati; color: integer);
var x, y, hx, mx, my: real;
    kt, xe, ye, i: integer;
begin
  With koord do begin
    mx := (xk-xn)/(xek-xen);	{масштаб по X}
    my := (yk-yn)/(yen-yek); 	{масштаб по Y}
    kt := xek - Round(xen/mx) + 1; {количество пикселей в которых будет график}
    hx := mx;			{шаг}
    x := fo;			{начальное значение}
    SetColor (Color);
    SetLineStyle (0, 0, 3);
    For i:=1 to xek do
    begin
      y:=lg(x);
      xe := Round (xen + x/mx);
      ye := Round (yen - y/my);
      if i=1 then Moveto (xe, ye) else Lineto (xe, ye);
      x := x + hx;
    end;
  end;
end;
AfzaL вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск