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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 11:10   #1
Toxy
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию Надо чтобы на одной оси координат отображались два графика разным цветом

Подсобите кто может, мозг сломан... всё врем прямые получаются...
такая вот задачка:
Надо чтобы на одной оси координат отображались два графика разным цветом.
Для функций х(t) и w(t), при значениях параметров а, b и c, построить в одной системе координат их графики с шагом dt

х(t) = e^(-4c((t-1.6)^2))

w(t)=e^(-10at)-e^(-10bt)

dt =0.10
a=1.0
b=1.5
c=4.0
Toxy вне форума Ответить с цитированием
Старый 21.04.2012, 12:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а сам код то где?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.04.2012, 12:16   #3
Toxy
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию

Код:
{$N+}
uses graph;
const a=1.0;b=1;c=1.5;dt=0.05;
x1=-10;
x2=10;
var
mx,my,x,dx:real;
x0,y0,grD,px,py,grM,i,k:integer;
y1,y2,y3,y4:DOUBLe;t:comp;
s,s1:string;
begin
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;
Y0:=getmaxY div 2;

mx:=600/(x2-x1);
my:=420/18;
SetBkColor(7); 
setlinestyle(0,0,1);
SetColor(1);
line(0,y0,getmaxX,y0); 
line(x0,getmaxy,x0,0); 
setlinestyle(1,0,0);  
Setcolor(8);  
for i:=1 to 10 do   
   begin
    line(10,y0-round(i*my),630,y0-round(i*my));
    line(10,y0+round(i*my),630,y0+round(i*my));
    line(x0+round(i*mx),0,x0+round(i*mx),getmaxY);
    line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);
    str(i,s);
    
     outtextXY(x0-5,y0-round(i*my),s);
     outtextXY(x0-5,y0+round(i*my),'-'+s);
    {подпись оси Х}
    str(i,s);
    outtextXY(x0+round(i*mx),y0+10,s);
    outtextXY(x0-round(i*mx),y0+10,'-'+s);
 end;

outtextXY(x0+5,y0+10,'0');

outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+10,10, 'Y');
dx:=0.001;

x:=x1;
t:=1;
x:=x+dx;
while x<=x2 do
   begin
     px:=x0+round(x*mx); 
     y1:=exp(-6*b*t)-exp(-10*c*t);
     py:=y0-round(y1*my);
     putpixel(px,py,9);
     y2:=exp(-20*a*(t-1.6)*(t-1.6)); 
     py:=y0-round(y2*my);
     putpixel(px,py,5);
     t:=t+dt; 

   end;
setlinestyle(0,0,1);
setcolor(9);
outtextXY(30,30,'Grafik functii  y1:=exp(-6*b*t)-exp(-10*c*t)');
setcolor(5);
outtextXY(30,60,'Grafik functii y2:=exp(-20*a*(t-1.6)*(t-1.6))');
readln
end.
уже перековырял.. терь графики не строит...
Toxy вне форума Ответить с цитированием
Старый 21.04.2012, 12:20   #4
Toxy
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию

Вот еще предыдущий вариант
Код:
uses graph;
const t=0.10; a=1.0; b=1.5; c=4.0;
x1=-10;
x2=10;
var
mx,my,x,dx,y1,y2,y3,y4,e:real;
x0,y0,grD,grM,i,k,px,py:integer;
s,s1:string;
begin
y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6))));
y2:=exp(-10*a*t)-exp(-10*b*t);
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;
Y0:=getmaxY div 2;
mx:=600/(x2-x1);
my:=420/16;
SetBkColor(7);
setlinestyle(0,0,1);
SetColor(1);
line(0,y0,getmaxX,y0);
line(x0,getmaxy,x0,0);
setlinestyle(1,0,0);
Setcolor(8);
for i:=1 to 10 do
   begin
    line(1,y0-round(i*my),630,y0-round(i*my));
    line(1,y0+round(i*my),630,y0+round(i*my));
    line(x0+round(i*mx),0,x0+round(i*mx),getmaxY);
    line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);
    str(i,s);
     outtextXY(x0-10,y0-round(i*my),s);
     outtextXY(x0-20,y0+round(i*my),'-'+s);

    str(i,s);
    outtextXY(x0+round(i*mx),y0+10,s);
    outtextXY(x0-round(i*mx),y0+10,'-'+s);
  end;

outtextXY(x0+5,y0+10,'0');

outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+10,10, 'Y');
dx:=0.001;

x:=x1;
while x<=x2 do
   begin
     px:=x0+round(x*mx);
     y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6))));
     py:=y0-round(y1*my);
     putpixel(px,py,9);
     y2:=exp(-10*a*t)-exp(-10*b*t);
     py:=y0-round(y2*my);
     putpixel(px,py,5);
     x:=x+dx;
     end;

setlinestyle(0,0,1);
setcolor(9);
outtextXY(30,30,'Grafik functii y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6)));');
setcolor(5);
outtextXY(30,60,'Grafik functii y2:=exp(-10*a*t)-exp(-10*b*t)');
readln
end.
Toxy вне форума Ответить с цитированием
Старый 21.04.2012, 12:41   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: твоя формула y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6)))); не содержит изменяемой компоненты.
Тебе нужно t заменить на Х тогда формула действительно сработает, а ты ей во время цикла одинаковые значения подсовываешь, она у тебя линию рисует ессно.

Во-вторых: Формула имеет свою область допустимых значений - узнай при каких значениях Х формула работать не будет.
По-моему при нулевых. И через IF отсеки их. Понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.04.2012, 12:50   #6
Toxy
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию

Сможешь исправить? а то я 3й день сижу, уже мозг превратился в кашу...
Toxy вне форума Ответить с цитированием
Старый 21.04.2012, 14:31   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

У вас вторая формула очень быстро убывает при стремлении к минус бесконечности, т.е. при х=-3 у=-7*10^19. Паскаль просто не сможет показать такое число.
Stilet, разве есть ограничения на х? Возведение в степень определено для всех чисел же Другое дело, что здесь ограничения будут чисто паскалевские, так как больше Longint нельзя получить целое, и это ограничение очень быстро достигается.

Пришлось сузить х и закомментировать то, что не работает (результат "не радует"):
Код:
{$N+}
uses graph;
const t=0.10; a=1.0; b=1.5; c=4.0;
x1=-0.3;
x2=0.3;
var
mx,my,x,dx,y1,y2,y3,y4,e:real;
x0,y0,grD,grM,i,k,px,py:integer;
s,s1:string;
begin
{y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6))));
y2:=exp(-10*a*t)-exp(-10*b*t);     }
grD:=detect;
initgraph(grD,grM,'');
X0:=getmaxX div 2;
Y0:=getmaxY div 2;
mx:=600/(x2-x1);
my:=420/16;
SetBkColor(7);
setlinestyle(0,0,1);
SetColor(1);
line(0,y0,getmaxX,y0);
line(x0,getmaxy,x0,0);
{setlinestyle(1,0,0);
Setcolor(8);
for i:=1 to 10 do
   begin
    line(1,y0-round(i*my),630,y0-round(i*my));
    line(1,y0+round(i*my),630,y0+round(i*my));
    line(x0+round(i*mx),0,x0+round(i*mx),getmaxY);
    line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);
    str(i,s);
     outtextXY(x0-10,y0-round(i*my),s);
     outtextXY(x0-20,y0+round(i*my),'-'+s);

    str(i,s);
    outtextXY(x0+round(i*mx),y0+10,s);
    outtextXY(x0-round(i*mx),y0+10,'-'+s);
  end; }

outtextXY(x0+5,y0+10,'0');

outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0+10,10, 'Y');
dx:=0.001;

x:=x1;
y3:=exp((-4*c*(x-1.6)*exp(2*(x-1.6))));
y4:=exp(-10*a*x)-exp(-10*b*x);
while x<=x2 do
   begin
     px:=x0+round(x*mx);
     y1:=exp((-4*c*(x-1.6)*exp(2*(x-1.6))));
     py:=y0-round(y1*my);
     {putpixel(px,py,9);  }
     setcolor(9);
     moveto(x0+round((x-dx)*mx),y0-round(y3*my));
     lineto(px,py);
     y3:=y1;
     y2:=exp(-10*a*x)-exp(-10*b*x);
     py:=y0-round(y2*my);
     {putpixel(px,py,5); }
     setcolor(5);
     moveto(x0+round((x-dx)*mx),y0-round(y4*my));
     lineto(px,py);
     y4:=y2;
     x:=x+dx;
     end;

setlinestyle(0,0,1);
setcolor(9);
outtextXY(30,30,'Grafik functii y1:=exp((-4*c*(t-1.6)*exp(2*(t-1.6)));');
setcolor(5);
outtextXY(30,60,'Grafik functii y2:=exp(-10*a*t)-exp(-10*b*t)');
readln
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 21.04.2012 в 14:39.
BDA вне форума Ответить с цитированием
Старый 21.04.2012, 14:49   #8
Toxy
Новичок
Джуниор
 
Регистрация: 21.04.2012
Сообщений: 5
По умолчанию

BDA, огромное спасибо...а то думал что с ума сойду... щас оси разобью и сделано...
был бы рядом пиво по любому бы поставил...
Toxy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Listbox строки разным цветом dozo Microsoft Office Access 3 05.01.2012 16:50
оси координат) willhunting Фриланс 6 13.06.2010 17:36
подсчет строк выделеннх разным цветом mars56 Microsoft Office Excel 3 12.03.2010 09:37
Клетки в listView разным цветом Altera Компоненты Delphi 9 24.09.2009 16:08
Вывод слов параграфа разным шрифтом и цветом miatu Microsoft Office Word 1 04.09.2009 13:26