Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 95
Текст из файла (страница 95)
Отметим, что изучаемое векторное поле периодично по переменным х и ус периодом 2к, а потому при рассмотрении его структуры достаточно ограничиться интервалом [-п, и] по этим переменным. В первую очередь в виде и)-файла опишем функцию че), вычисляющую компоненты векторного поля в узлах прямоугольной сетки.
Входными параметрами процедуры являются матрицы Х, У и 2, содержащие координаты узлов и значение параметра е. Результатом выполнения процедуры будут три матрицы (), У и й, определяющие соответственно три компоненты векторного поля в узлах сетки: Уопс!!оп [0.У.И)-че)(Х.У.2,ерв11оп) 0 - ерв()оп*в1п(2)~4.*1!ел(2).*в(п(Х)./(сови(2)."3)-... 2.+в)п(У)./(совн(2)."2); у - ерш )оп*сов(2)»4.*11пл(2).*в(п(у),/(совл(Е)."3)+... 2.*юп(Х)./(сови(2)."2): Н-(2."сов(Х)+2.*сов(У))./(совн(2)."2): Отметим, что при вычислении «омпонснт вектора используются знаки позлементных математических операций (то есть арифметические знаки с предшествующей точкой) для расчета вектора скорости для массива точек. Чтобы создать рисунок, сгенерируем сетку для аппроксимации векторного поля командой п(ев))0г1 !( и вычислим значения компонент вектора в этих узлах при 0-0: » [Х У 2)-мевндг10(-р1:р(/20:01.-01:р!/20:01,-1.55:0.1:1.55): [О У И)-че)(Х,У.2.0); Следующие команды находят минимумы и максимумы значений трех координат, вычисляют длину вектора в узлах сетки и присваивают нх значение переменной че) ов, а две последние команды создают новый рисунок и включают режим сохранения объектов на рисунке: » хи1п-и1п(Х(:)); хнах у!ех(Х(:)); хм1п-м)п(У(:)); Трехмерная визуализация функций и векторных полей 503 уках=пах(Ч(:)): хв)п=в(п(2(;)): хвах=аих(7(;)); че1оз-здгт(0."2~Ч."2»И."2): т1доге; ПЬ16 оп Теперь все готово для изображения структуры векторного поля.
Построим при помои(и команды 511се на трех плоскостях у рг', г=-й5 их=-р( картины плотности функции че]оз и введем дескрипторы Ь1, Ь2 и ЬЗ для этих изображений. Параметр сиЬ)с указывает на то, что для приближения функции используется кубическая интерполяция. Для каждой плоскости команда зет задает режим интерполирования цвета по значениям функции: » П)=з1;се(Х.Ч,7,че1оз.[],р).[],'оно~с'); зет(П1.'Еасесо1ог','~птегр'.'ЕодеС01ог'.'попе' ); П2=з1~се(Х.Ч.2.че1оз.[].[].[-1.5].'соы с'): зет(П2.'ЕасеСо1ог', Ч п(егр'.'Еодесо1ог','попе' >: ПЗ=з)~се(Х.Ч,7.че1оз -рк [].[],'соозс'): зет(ПЗ.'ЕасеСо1ог', Ч птегр'.'Еодесо1ог' 'попе'): Команда зсгеав51(се изображает линии тока векторной функции, определенной значениями компонент вектора [О.Ч. )Ч] в узлах сетки на заданных плоскостях.
В примерее выбраны три плоскости: г=-7, а=О из=15. После построения линий тока присвоим нм черный цвет командой зет: » П2з-з(геавз1~се(Х.),7.0.Ч,Н,[].[],[- 1.0 0.0 1 5]>; зег(П2з,'Со1ог'.'Х'): Для представления векторного поля можно использовать не только плоские сечения, но и сложные поверхности. Эти поверхности сначала нужно определить координатами узлов, а затем обратиться к нужной команде, указав в качестве параметров переменные, содержащие эти координаты. Например, зададим командой зог[ синусоидальную поверхность, а затем повернем ее командой госете.
После этого преобразованные координаты узлов присвоим переменным х6, у6 и 26, а саму поверхность удалим командой бе1ете. Наконец, введем на синусоидальной поверхност)и изображение плотности функции че105 (дескриптор Ь4): » Па=аост(1~пзрасе(хвзп.хвах 101),1~пзрасе(уппп умах,!01>. -0.5*ззп(2*везпдгзо(гвзп:(хнах-зппп)/100 гавах)>); гота(е(пз,[0. 1, Ц . 15); хо-дес(ьз,'хдаса'); уо-цес(пз,')цаса'); хо=цес(пз,'70аса'); 6е)ете(пз); Па-з)~се(Х,Ч Е.че1оз,хо,уо.хо,'сиЬ)с'); зее(П4.'Еасесо1ог'.
Мптегр','Еодесо1ог','попе' ); Следующая группа команд завершает оформление рисунка. Команда.базресЬ устанавливает пропорции по осям, в частности увеличенный в два раза размер по оси 2. Команда ч) ен задает угол взгляда на рисунок. Затем определяется заголовок рисунка, надписи по осям координат и область вывода. Три последние команды соответственно задают палитру рисунка (оттенки серого), шкалу значений функции че1 и осветление рисунка: » созреет([! 1 0.5]>; ч(ен(25.15), С)С1е("САВО-течение" >; х1аЬе1("Х"): у1аЬе1("т"); Х1аЬе1("7"); ах(з([-р( р) -рз рт -1.5 1.5]): со1опаар дгау; со1огЬаг: Ьгтдптеп(0.5>: 604 глава тв. Дополнения и прниеры Сдао-твчвнив ал ав 05 о -1 5 Рис. 18.8.
Трн плоскости с линиями тока вместе с тремя плоскими и одним синусоидальным сечением, раскрашенными в зависимости ат значений функции Результат работы описанных команд представлен на рис. 18.8. Создадим новое окно и для большей наглядности свойств течения определим новую сетку, выбрав интервал величиной в два периода по осям х и у: » (!роге ЕХ Т 73 пес)цг10(0:р!/10:4*р1.0:рт/)О:4*р1.-р1:рт/10:рт): Теперь вычислим компоненты векторного поля и значение модуля скорости в узлах сетки: » ЕО У Ы)-ЧЕ)(Х.Ть7.0): те)ов=вцгг(У."2»у."2+И."2); На четырех граничных плоскостях с помощью команды соптоыг511се изобразим линии уровня модуля скорости уе)05 и зададим их толщину и цвет (черный): » Ьсопт-сопгоцгв)(се(Х.Т.7,че1ов,(0,4"'р1.4"р!).4 р1,-р1.8); вес(Псопг.'ЕпреСЬ)ог',ЕО О 0).
Е)пем10ТП',0.5): Для изображения линий тока течения подготовим набор начальных точек: » Евх ву вх)-певпрг!/)(р1,0:р1/4;5~р(/4,-р1/2:р!/4:р1/2): Теперь для вывода линий тока в виде трубок с толщиной, которая зависит от дивергенции векторного поля, обратимся к команде зтгеаитцЬе. Дескриптор этого объекта есть переменная Псонез, командой зес определены цвета поверхности трубки, сетки на ней и освещенность: » Ьтссев-втгеааецье(Х,Т,7,0,у,н,вх,ву,вх): веЫЬЬцаев.'Ес)ресо1ог'.'попе'.'ЕасеСЬ)ог'.'г'..., "ЛяЫепт5тгепдаа",0.5); Для завершения рисунка определим ракурс, заголовок, маркировку осей координат и источник света. Трехмерная визуализация функций и векторных полей 505 » ч(еа(60.35): <)Х1е("САЗС-течение"): х1аЬе1("Х"): у1аЬе1("У"); х1аЬе!("Г ): ах!з Юднс; ах!з еоиа1: саа1!дпт 1егт Результат приведен на рис.
18.9. САВС-твчвиив 20 Х о У Рнс. 1З д. Изображен ив линий тона в виде трубок с толщиной, зависящей отдиварганцин вантарногв поля На следующем рисунке для вывода линий тока в виде лент (команда 61 гезя)г ! ЬЬоп) воспользуемся уже вычисленными сеткой, векторным полем и начальными точкамн, Командой зеЬ определим темно-серый цвет лент, уровень освещенности и отменим штриховку на лентах: » Ттднге: Ьг(ЬЬ-з<геаиг!ЬЬоп<Х,Т,Е,О,Ч,Н,зх,зу,вх.0.3): зе<(ЬгтЬЬ.'60десо1ог','попе','Еасесо1ог'.... 10.2 0.2 0.21,'Аио!ел<5<гено(Ь',0.5): Теперь включим режим сохранения объектов на рисунке и определим еще один набор точек. Командой р)013 выведем этот набор в виде звезд черного цвета: » ПЬ10 оп (зх1 зу1 521) аезндгтб<3*р(:р(/6:23*0!/6,2*р),-рт/2:Р(/4;РЧ/2); 01ЬХЗ(зх1(:),зу1<:),лх1(:), ак'); Используем определенные массивами зх1, зу1 и 521 точки в качестве начальных для построения обычных линий тока (коими(а зсгеая1 1пе) и аададнм для них черный цвет: » Ь-зхгеаа)!пе<ХЛ.2,0.у.н,зх1лу1,зг1); вес<И.
"Со1ог". "Ь)асй"); Закончим оформление очередного рисунка заданием характеристик осей координат, определением угла взгляда, положения и типа источника подсветки: » ттщг(60,35); ах(в Х!дне; ах!а ециа): дг)б оп: саа1тднт(45 45,'(пт!п!Х'); 1!днстпд Т)а(н 506 Глава 15.
Дополнения и примеры Рис, ХЗЛО. Линии тока в виде лент и обычные линии тока Полученное изображение линий тока представлено на рис, 18.10. На заключительном рисунке данного раздела изобразим структуру и характеристики векторного поля в окрестности точки х" ж У-О, г-0 при 0=0,1.
Прп с=О зта точка является особой точкой векторного поля, то есть в ней все компоненты вектора обращаются в ноль, а при изменении параметра в ее окрестности имеет место хаотическое движение жидкой частицы (~781). Убедимся в том, что при 0=0 точка является особой: » Гч1 ч2,чз)=че)(рт,О 0 О): (рюптт("$7.57 $7.5т Х7.5т 'тп",ч1,ч2,чз) О.ООООО 0.00000 0.00000 Теперь создадим рисунок, определим более подробную сетку и вычислим в ее уз- лах компоненты векторного поля при е 0.1: (т9оге: ГХ Ч 71-певПОгтп(4*0175:р(/50.6"р)75,-0(75:р1750:рт/5,. -Р1! 10: р( 7100: рт 710); 10 ч и)-че)(х,ч,7,0.
1): Переменной чс присвоим значение угловой скорости вихря. Эта величина вычисляется, если при обращении к этой команде указан один выходной параметр. При присвоении результата набору из трех переменных (например, Гчх, чу, чг) =сап) (х,у. г, щ ч,ы) ) в этих переменных будут находиться компоненты вектора вихря: » чс-сиг)(Х,Х,7 дь Ч.Ы); Далее с помощью команды ) зозвгтасе выведем поверхность, на которой значение чс равно 1.5. Затем определим желтый цвет поверхности и отменим вывод сетки: » П-равсщ!вовнгтасе(Х,Ч.г.чс, 1.5)); вет(П2'Расесо)ог'.'уе))оы'.'ЕбвеСо)ог'.'попе' ). трехнерная визуализация функций и венторных полей 507 Теперь с помощью составной команды окрасим ограничивающие построенную поверхность плоскости цветом, зависящим от значения переменной чс.
Отметим, что окрашиваются только те участки, где величина чс меньше указанного значения (в примере [.5); » Псар-рагсм ззасарз(Х,Ч,7.чс,).5).'Еасеса1аг'.'тпгегр'.... "ЕареСО1аг".'папе' ): Далее перейдем к изображению векторного поля конусами различной величины, которая зависит от длины вектора в точке. Сформируем сначала набор конусов на равномерной сетке, для чего определим эту сетку и обратимся к команде сапер>о[. Конусы этого набора будут окрашены в красный цвет: » хг-1тпврасе(си п(Х(:)>лах(Х(:)).6): уг-)~пзрасе(ппп(Ч(.)>лак(Ч(.)>.б).
гг-1зпзрасе(п(п(7(:))лах(7(:)),4): [сх су сг)-пезндющхг,уг,гг); П1-сапер1а((Х.Ч.7.П,Ч.И.сх.су.сг,2), вес(П), ТасеСа>аг'.'геа'.'Еачеса1аг','папе' ); Переменной че1оз присвоим сумму первых двух компонент векторного поля: че ав-и+ч. Второй набор конусов разместим на криволинейной поверхности, определяемой нулевым значением че1аз. Вычислим с помощью 15овогуасе требуемую поверхность. Результатом этой команды будет некоторое количество вершин и граней, аппроксимирующих поверхность, а командой геспсератсв оставим только десять процентов этих объектов.