2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки





Начать новую тему Ответить на тему
 
 Первые шаги в построении сетки
Сообщение03.01.2017, 20:21 


25/02/16
56
После прочтения данной теории
"Сетка в одномерной области. Пусть область изменения аргумента $x$ есть отрезок $0\leq x\leq L$. Разобьём этот отрезок на $N$ равных частей длины $h = L / N$, точками $x_i=ih$, $i=0,1,...N$. Множество этих точек называется равномерной сеткой на отрезке от $[0,L]$ и обозначается $\varphi =\{x_i=ih, i=0,1,...N , hN=L\}$, а число $h$ - расстояние между точками (узлами) сетки $\varphi $ - шагом сетки."(с) Самарский

В итоге было сделано:
1) Создан массив и задано $N=10$
2) Получено значение шага $h=L/N$, а учитывая что $L$ это 1(так как во многих задачах рассматриваются отрезков от 0 до 1), то получился шаг со значением 0,1.
В итоге отрезок поделён на 10 частей и это выражается тем что массив выводит 0; 0,1; 0,2; 0,3; 0,4; 0,5; 0,6; 0,7; 0,8; 0,9.

Программа компилируется и делит на 10 частей с заданным шагом 0,1.

Меня интересует вот что
Правильно ли я понял этот кусок теории?
То есть правильные ли мои действия которые я написал выше(про массив и про вывод 0,0,1,0,2)?
Код не выкладываю, он работает да и форме ещё (так как там будет большая программа)
 i  GAA:
Исправлен набор некоторых символов, в частности $\varphi$. В книге Тихонова и Самарского (и ряде других книг) сетка обозначается через $\omega$, ($\bar \omega$, возможно с индексами).

 Профиль  
                  
 
 Re: Первые шаги в построении сетки
Сообщение04.01.2017, 00:29 
Заслуженный участник
Аватара пользователя


01/08/06
2212
Уфа
Единственное, что здесь может быть понято не так (на мой взгляд): число точек сетки на 1 больше, чем число частей разбиения.
То есть точек здесь 11, и последняя будет $x_{10}=1$.

 Профиль  
                  
 
 Re: Первые шаги в построении сетки
Сообщение17.01.2017, 15:39 


25/02/16
56
Интересует вопрос правильно ли я построил график(теория указана в 1-ом сообщении)

Для начала что я сделал:

Сначала я создаю 2 массива и заполняю их значениями шагов.
Исходные параметры с которыми я работаю N=10(число разбиений),шаг по пространству h = 0,1,шаг по времени thau = 1,1;

Используется синтаксис C++
              for(int i = 1;i<N+1;i++) 
                                         {
                                                 for(int j = 1;j<N+1;j++)
                                                 {
                                                         wh[i+1]=wh[i]+h;//массив wh
                                                         wt[j+1]=wt[j]+t;// массив wt    
                                                 }     
                                         }



График сетки получился таким(промежуточно проверяю)
Рисую в chart

Используется синтаксис C++
for(int i = 1;i<N+1;i++)       
                                         {
                                                 for(int j = 1;j<N+1;j++)
                                                 {
                                                         chart1->Series["Series1"]->Points->AddXY(i,wh[i]);
                                                         chart1->Series["Series2"]->Points->AddXY(i,wt[i]);                                            
                                                 }
                                         }



Изображение

А вот запись $wht = wt \times wh$(Взято из книги Самарского)
я понял так.

Используется синтаксис C++
        for(int i = 1;i<N+1;i++)       
                                         {
                                                 for(int j = 1;j<N+1;j++)
                                                 {
                                                         wht[i][0]=wh[i];
                                                         wht[0][j]=wt[j];
                                                 }
                                         }


То есть двумерный массив где содержатся шаги по пространству и по времени
Когда я его вывожу а chart то график совершенно пуст

Используется синтаксис C++
for(int i = 1;i<N+1;i++)       
                                         {
                                                 for(int j = 1;j<N+1;j++)
                                                 {                                                       
                                                         chart1->Series["Series3"]->Points->AddXY(i,wht[i][j]);
                                                 }
                                         }


Изображение

 Профиль  
                  
 
 Re: Первые шаги в построении сетки
Сообщение17.01.2017, 16:36 
Заслуженный участник
Аватара пользователя


01/08/06
2212
Уфа
1) Случайно получилось, что у вас и в сетке по $x$ и в сетке по $t$ одинаковое количество точек, которое вы обнзначили $N$. Это неправильно. По разным переменным может быть разное число точек, для которых нужно завести два разных обозначения, например, $N_x$ и $N_t$ (в коде программы Nx и Nt).

2) Из-за п. 1) у вас путаница с вложенным циклом. На этапе формирования сеток по $x$ и $t$ нужен один одномерный массив для сетки по $x$ и другой одномерный массив для сетки по $t$. Массив сетки для переменной $x$ лучше обозначить wx, а не wh:
Используется синтаксис C
// Здесь ещё забыли инициализацию нулевых элементов массива:
wx[0] = 0.0; // (например)
wt[0] = 0.0; // (например)
for (int i = 1; i < Nx+1; i++)
{
    wx[i+1] = wx[i] + hx;
}
for (int j = 1; j < Nt+1; j++)
{
  wt[j+1] = wt[j] + ht;
}

3) Массив wtx не нужен. Двумерный массив нужен для значений искомой функции, если она от двух агрументов (вообще-то, сначала вам бы разобраться с функцией от одного аргумента, с обыкновенными дифурами). Для сеток двумерный массив не нужен. Точка сетки имеет две координаты: первая берётся из массива wx, вторая — из массива wt. Всё, больше сетке ничего не надо. Другое дело искомая функция, например будет $u$ (в коде U). Это двумерный массив: U[i,j] — это значение искомой функции в точке с координатами wx[i], wt[j] ($u(x_i, t_j)$).

4) Функцию от двух агрументов визуализировать не так-то просто. Возможно, TeeChart это умеет, а может быть, и нет. С помощью TeeChart вы отображаете координаты сеток wx и wt, но это никому не нужно, тем более, что это координаты по разным переменным. В общем, я бы рекомендовал графику пока отложить в сторону, а значения выводить в текстовый файл.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: maxal, Karan, Toucan, PAV, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group