Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

Можно увидеть наработки. И указать относительно чего будет строиться график?
Alar вне форума   Ответить с цитированием
Старый 03.12.2006, 13: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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


13:12.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.