Название: [Решено]Дискретный оператор Лапласа и числовой градиент. Отправлено: kuzulis от Апрель 23, 2019, 14:24 Всем привет,
мож кто сталкивался... Видел/использовал кто какую-нить опен-сорс библиотеку в которой есть аналоги Matlab-овских ф-й: * del2 (https://www.mathworks.com/help/matlab/ref/del2.html#bt1j9e4-2) * gradient (https://www.mathworks.com/help/matlab/ref/gradient.html) нужны преобразования в "реальном времени" для размерности 1-D. Для дискретного лапласа "надыбал" эти (https://people.sc.fsu.edu/~jburkardt/c_src/laplacian/laplacian.c)сорцы. Код: double *l1pp_apply ( int n, double h, double u[] ) вроде это что-то похоже на то что нужно, судя по этой доке (https://people.sc.fsu.edu/~jburkardt/f_src/laplacian/laplacian.html). Но непонятно одно: в качестве параметра u[] я должен "занести" весь исходный массив точек? А что делать, если у меня эти точки добавляются по-очереди по одной штуке в "рантайме" (т.е. мне надо посчитать этот Лапласиан для каждой новой точки)? ЗЫ: Я с высшей математикой уже давно не дружу и тяжко заново учиться с нуля... Какая-то жесть... :( Название: Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: m_ax от Апрель 23, 2019, 15:24 Цитировать Но непонятно одно: в качестве параметра u[] я должен "занести" весь исходный массив точек? Необязательно. Лапласьян в 1D - это просто вторая производная. В дискретном случае вторая производная в точке i определяется также и значениеми функций в соседних ближайших точках:f''(i) = (-f(i+dx) + 2*f(i) - f(i-dx))/(dx*dx) Аналогично и с градиентом (градиент - это вектор) grad f(i) = (f(i+dx) - f(i-dx))/(2*dx) Название: Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: kuzulis от Апрель 23, 2019, 16:00 Оххх.. Спасибо тебе огромное... :)
А минимальный dx для дискретных точек равен 1? Название: Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: m_ax от Апрель 23, 2019, 17:32 Оххх.. Спасибо тебе огромное... :) Да. Это расстояние между двумя ближайшими точками)А минимальный dx для дискретных точек равен 1? Название: Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: kuzulis от Апрель 23, 2019, 17:59 Цитировать Лапласьян в 1D - это просто вторая производная. Что-то не пойму одну вещь: а почему в лапласиане и во второй производной тогда формулы немного разные? Например, знак '-' немного по-другому применяется. Например, вторая производная считается так: y1'' = (y2 - 2*y1 + y0) / h^2 (взято отсюда (http://portal.tpu.ru:7777/SHARED/l/LOPATKIN/Students/DG/7-Differentiation.pdf)и прочих других) но, лапласиан считается так: y1'' = (-y2 + 2*y1 - y0) / h^2 в чем фишка то, если ты говоришь, что лапласиан - это вторая производная? Название: Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: m_ax от Апрель 23, 2019, 18:27 Цитировать но, лапласиан считается так: y1'' = (-y2 + 2*y1 - y0) / h^2 Да, ошибка в знаке.Ниже приатачил вывод: Название: [Решено]Re: Дискретный оператор Лапласа и числовой градиент. Отправлено: kuzulis от Апрель 23, 2019, 18:51 Ахх. спасибо..
|