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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2014, 13:57   #1
trinitr0
 
Регистрация: 25.09.2014
Сообщений: 3
Печаль построение простого графика

Здравствуйте!

Есть код построения графика по формуле расчёта методом конечных разностей
(метод решёток):


Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     float dT[8];
     float T[8];

     int i;
     int m = 8;

     float dtau = 0.1;
     float lx = 0.14;
     float a = 0.0001; 
     float dx = lx/(m-1);
     
     int tt;

     for (int i=0; i<m; i++)
     {
        T[i]=0;
        dT[i]=0;
     }


     for (int tt=1; tt<=500; tt++)
     {
         T[0] = 100;

              
                     T[7] = 0;

                         for (int i=2; i<m-1; i++)
                         {
                           dT[i] = a*dtau*((T[i-1]-2*T[i]+T[i+1])/(dx*dx))+T[i];
                           T[i] = T[i]+dT[i];
                         }
                              if (tt%100 == 0)
                                Series1 -> AddXY(tt*dtau, T[2]);

             
      }
  }
Но вместо графика рисуется просто прямая, с нулями по оси Y

Не могу никак написать код правильно, чтобы строился график по нажатию Button1!
Прошу помощи!

Последний раз редактировалось Stilet; 25.09.2014 в 14:19.
trinitr0 вне форума Ответить с цитированием
Старый 25.09.2014, 14:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

tt*dtau и T[2] выведи в ListBox и посмотри какие данные пишутся.
Возможно какой-то из точек дается заоблачная координата.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.09.2014, 15:18   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Сорри. Ошибся.

Ордината T[2] :
Код:
T[i] = T[i]+dT[i]; // поставь сюда брейк и посмотри значения при i = 2
Абсцисса принимает значения tt*dtau = 10, 20, 30, 40, 50.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 25.09.2014 в 15:21.
min@y™ вне форума Ответить с цитированием
Старый 25.09.2014, 16:01   #4
trinitr0
 
Регистрация: 25.09.2014
Сообщений: 3
Радость РЕШЕНО!

Ещё попотел и, вот, рабочий пример:

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     const int m = 8;
     double dT[m],
             T[m],
             dtau = 0.1,
             lx   = 0.14,
             a    = 0.0001;
     double dx    = lx/(m-1);
     for (int i=0; i<m; i++){
        T[i]=dT[i]=0;
     }
     for (int tt=1; tt<=500; tt++){
         T[0] = 100;
         T[7] = 0;
                      for (int i=1; i<m-1; i++){
                          dT[i] = a*dtau*((T[i-1]-2*T[i]+T[i+1])/(dx*dx))+T[i];
                          T[i] = T[i]+dT[i];
                      }
                    if (tt%100 == 0)
                       Series1 -> AddXY(tt*dtau, T[2]);
                      
                }
      }
  }

Последний раз редактировалось Stilet; 25.09.2014 в 20:33.
trinitr0 вне форума Ответить с цитированием
Старый 25.09.2014, 16:48   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Я в упор не понимаю, почему вычисляется T[i] = ... а потом при вызове всегда передаем T[2]?
waleri на форуме Ответить с цитированием
Старый 25.09.2014, 17:57   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Я в упор не понимаю, почему вычисляется T[i] = ... а потом при вызове всегда передаем T[2]?
Военная тайна, покрытая матом мраком!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 25.09.2014, 18:00   #7
trinitr0
 
Регистрация: 25.09.2014
Сообщений: 3
По умолчанию

Это вопрос к преподавателю!
trinitr0 вне форума Ответить с цитированием
Старый 25.09.2014, 20:38   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я в упор не понимаю, почему вычисляется T[i] = ... а потом при вызове всегда передаем T[2]?
А ты присмотрись: Вычисляется некая таблица. Там же два цикла. Каждая итерация вычисляет целый набор данных. А по заданию нужно выводить только некоторое поле из набора судя по всему.
Наверное это имеется ввиду: http://mathhelpplanet.com/static.php...i-polureshetki
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графика egrozavr Помощь студентам 5 06.05.2014 16:49
построение графика Smirnov Паскаль, Turbo Pascal, PascalABC.NET 1 26.04.2012 21:02
построение графика 30gb Помощь студентам 1 20.10.2010 21:37
Построение графика kzmd Общие вопросы Delphi 1 19.01.2009 09:36
Построение отношений простого предшествования Mary Паскаль, Turbo Pascal, PascalABC.NET 2 18.11.2007 21:44