2014 dxdy logo

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

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




 
 Первые шаги в построении сетки
Сообщение03.01.2017, 20:21 
После прочтения данной теории
"Сетка в одномерной области. Пусть область изменения аргумента $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 
Аватара пользователя
Единственное, что здесь может быть понято не так (на мой взгляд): число точек сетки на 1 больше, чем число частей разбиения.
То есть точек здесь 11, и последняя будет $x_{10}=1$.

 
 
 
 Re: Первые шаги в построении сетки
Сообщение17.01.2017, 15:39 
Интересует вопрос правильно ли я построил график(теория указана в 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 
Аватара пользователя
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 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group