| imho.ws |
![]() |
|
|
|
# 1 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
График функции в C++
Это снова я
![]() У меня вот аткое задание на лабу: Разработать программу, отражающую на экране изменения функции y=e^(a*t) {экспонента в степени альфа умножить на тэ }во времени через заданный интервал времени t за время оценки Тоц . В процессе отображения функции необходимо проверять вхождение функции в допустимый диапазон Ymin–Ymax , в зависимости от результатов проверки выделять цветом на экране одно из сообщений на табло “Норма”, “Предупреждение”, “Авария”.Так вот. для начала меня интересует вопрос, как записать функцию эту..
|
|
|
|
|
# 7 |
|
Junior Member
Регистрация: 27.01.2005
Адрес: Пенза-City
Сообщения: 68
![]() |
Попробовал подругому..
Рисует 0..... НИдоганю никак. Помогите!.. :молись: Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
float min,max,a,y,t,stepen;
int x;
float e=exp(1); //e - экспонента...
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Забиваем значения..
min=StrToFloat(Edit3->Text);
max=StrToFloat(Edit4->Text);
t=StrToInt(Edit1->Text); //
a=StrToFloat(Edit5->Text); //коэффициент...
//Устанавливаем временные параметры..
InTr->Interval=(StrToInt(Edit1->Text)); //интревал t
OcTr->Interval=(StrToInt(Edit2->Text)*1000); //Оценочное время
//Включаем таймеры...
InTr->Enabled=true; //активируем таймер
OcTr->Enabled=true; //активируем таймер
//Обенуляем и очищаем... ;)
Form1->Chart1->Series[0]->Clear();
x=y=0;
//И еще.. по мелочи..
Panel1->Caption="НОРМА";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OcTrTimer(TObject *Sender)
{
//Когда кончится оценочное время - останавливаемся...
InTr->Enabled=false;
OcTr->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InTrTimer(TObject *Sender)
{
//Вот что будет происходить через заданный интервал времени t
stepen=-(a*t);
y=exp(stepen); //возводим ее в степень
x++;
//рисуем...
Form1->Chart1->Series[0]->AddXY(x,y,clRed);
}
//--------------------------------------------------------------------------
|
|
|
|
|
# 9 |
|
Junior Member
Регистрация: 02.11.2003
Адрес: г. Таганрог
Сообщения: 63
![]() |
Так естественно будет нуль
число е = 2.71828182845905 допусти значение stepen = -20 т.е. y станет равным 2.0611....e-9 Просто компонент Chart не может справится со столь малыми числами и округляет значение y до нуля.
__________________
Америка, Америка - это красиво, но Россия вот где есть СИЛА!!! |
|
|