2014 dxdy logo

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

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




 
 Нелинейные уравнения.
Сообщение17.04.2009, 14:05 
Аватара пользователя
Вот так выглядят некоторые решения системы уравнений:

$f_x = k_x \cos( a x ) \sin( b y ) \sin( c z ) = 0$
$f_y = k_y \sin( a x ) \cos( b y ) \sin( c z ) = 0$
$f_z = k_z \sin( a x ) \sin( b y ) \cos( c z ) + 1 = 0$

ИзображениеИзображениеИзображениеИзображение

ИзображениеИзображениеИзображениеИзображение

ИзображениеИзображениеИзображениеИзображение

Для того чтобы нарисовать решения я строил поверхность уровня для функции

$g = \sqrt{ f_x^2 + f_y^2 + f_z^2 } = \varepsilon$

где $\varepsilon$ достаточно мало. Решениями являются либо точки, либо "эллипсы" с точками либо пара пересекающихся "эллипсов". В точках пересечения у поверхности $g$ утолщение. Как по другому ввести функцию $g$ чтобы утолщений не было ?

 
 
 
 
Сообщение17.04.2009, 14:28 
Аватара пользователя
Draeden. Не совсем понятно про утолщение. Можно по-подробнее?

 
 
 
 
Сообщение17.04.2009, 15:50 
Аватара пользователя
Возьмём простой пример. Уравнение поверхности цилиндра вдоль оси $z$ записывается так:

$f(x,y,z) = x^2+y^2-1=0$

Найдём пересечение двух цилиндров:

$g(x,y,z)=\sqrt{f(x,y,0)^2+f(x,z,0)^2}=c$

Если взять $c=0$ то мы получим искомое пересечение, но это пересечение нельзя будет нарисовать средствами рейтрейсинга. Чтобы результат было видно нужно взять $c>0$, в этом случае будет видно что то вроде трубочек вокруг пересечения цилиндров. Хотелось бы, чтобы эти трубочки были равномерны по толщине, но как видно из рисунка, толщина увеличивается в некоторых местах.

Изображение

 
 
 
 
Сообщение17.04.2009, 16:07 
Аватара пользователя
Непонятно, утолщение соответствует геометрии отображаемой поверхности, или это глюк метода (рейтресинга) ? (Извините, в выходные я офф-лайн).

 
 
 
 
Сообщение17.04.2009, 18:59 
Аватара пользователя
Да, утолщение соответсвует геометрии. Мне бы хотелось так задать функцию $g$ чтобы поверхность $g(x,y,z)=c$ соответсвовала нулям исходной системы уравнений.

 
 
 
 
Сообщение17.04.2009, 21:32 
Здорово построено! Хотя тут красота относится именно к тому, что поверхности гладкие и периодические. Можно попробовать $g=\max(|f_x|,|f_y|,|f_z|)$, но поверхности кое-где могут стать негладкими (липшецевыми). Или попробовать средние гармонические. Но тут непонятно, что получится.

 
 
 
 
Сообщение18.04.2009, 13:51 
Аватара пользователя
Пробовал с максимумом модулей: в этом случае построение идёт быстрее (таков алгоритм POV Ray) но поверхности становятся неэстетичными.

Изображение

Если $f=0$ это первый цилиндр, а $g=0$ второй, то на этой картинке:

Красный - $\sqrt{f^2+g^2}$
Синий - $(f^3+g^3)^{\frac 1 3}$
Зелёный - $\text{max}(|f|,|g|)$
Черный - $(f^6+g^6)^{\frac 1 6}$

Однако ни один из способов не даёт равномерного изображения - трубочек вокруг двух пересекающихся окружностей.

 
 
 
 
Сообщение18.04.2009, 14:40 
Аватара пользователя

 
 
 
 
Сообщение18.04.2009, 14:47 
Во всех этих примерах норма в $l_p$? $p\ge2$. Для полноты картины только нормы в $l_1$ $|f|+|g|$ не хватает :)

Возможно, тут проблема по существу. Поскольку пересечение двух окружностей - негладкое многоборазие, а его предлагается приблизить гладкими. Вот в окрестности точек пересечения приближение и ухудшается. Для анализа и подгонки нормы можно взять случай попроще в меньшей размерности - объединение прямых $x=0$ и $y=0$. И пытаться получить две полоски вокруг них в окрестности нуля. Проблема будет в том, что на пересечении полосок будут углы, чего у поверхностей уровня гладких фунций быть не может.

 
 
 
 
Сообщение26.04.2009, 14:33 
Пересечение двух окружностей можно представить в виде опорной функции к этому множеству, а далее сгладить её с любой степенью точности(стандартными методами). По сглаженной опорной функции можно легко построить само множество. При высокой точности приближения визуально теряется гладкость, а при низкой - гладкость хорошая, но сильно отличается от исходного множества. Так что нужно искать золотую середину.

 
 
 [ Сообщений: 10 ] 


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