% Иллюстрация биголоморфима, в данном случае w = exp (z)функция main () N = 11 ; % количество точек сетки эпсилон = 0,1 ; % смещения для каждого малого диффеоморфизма num_comp = 10 ; %, сколько раз диффеоморфизм составляется сам с собой Sx = linspace ( - 1 , 1 , N ); Sy = linspace ( 0 , пи / 2 , N ); [ X , Y ] = сетка ( Sx , Sy ); % настройки графика lw = 3,5 ; Цвета% KSmrq синий = [ 0 , 129 , 205 ] / 256 ; зеленый = [ 0 , 200 , 70 ] / 256 ; желтый = [ 254 , 194 , 0 ] / 256 ; белый = 0,99 * [ 1 , 1 , 1 ]; mycolor = синий ; % начать черчение figno = 1 ; фигура ( figno ); clf ; mode = 1 ; do_plot ( X , Y , ЛМ , figno , mycolor , режим ) saveas ( gcf , 'Biholom1.eps' , 'psc2' ); plot2svg ( 'Biholom1.svg' ); I = sqrt ( - 1 ); Z = X + I * Y ; F = ехр ( Z ); XF = реальный ( F ); YF = imag ( F ); figno = 2 ; mode = 2 ; do_plot ( XF , YF , ЛМ , figno , mycolor , режим ) saveas ( gcf , 'Biholom2.eps' , 'psc2' ); plot2svg ( 'Biholom2.svg' ); функция do_plot ( X, Y, lw, figno, mycolor, mode ) фигура ( figno ); clf ; держать на ; ось ровная ; ось выключена ; minX = min ( min ( X )); maxX = max ( max ( X )); minY = min ( min ( Y )); maxY = max ( max ( Y )); small = 0,2 ; если режим == 1 еще small = 0,5 * exp ( 1 ) * small ; конец A = minX - маленький / 2 ; B = maxX + small ; C = minY - маленький / 2 ; D = maxY + small ; % plot ([AB], [0, 0], 'ширина линии', lw, 'цвет', черный);% plot ([0, 0], [C, D], 'ширина линии', lw, 'цвет', черный); [ M , N ] = размер ( X ); для i = 1 : N участок ( X (:, я ), Y (:, я ), 'ширина линии' , ЛМ , 'цвет' , mycolor ); plot ( X ( i , :), Y ( i , :), 'ширина линии' , lw , 'цвет' , mycolor ); конец красный = [ 0,867 0,06 0,14 ]; серый = 0,2 * [ 1 , 1 , 1 ]; arrow_size = 0,07 * макс ( maxX , maxY ); резкость = 20 ; arrow_type = 1 ; крошечный = 0,01 ; scale_lw = 0,8 ; Стрелка ([ , 0 ], [ Б , 0 ], scale_lw * ЛМ , arrow_size , резкость , arrow_type , серый ); Стрелка ([ 0 , С ], [ 0 , D ], scale_lw * ЛМ , arrow_size , резкость , arrow_type , серый ); fs = 10 * max ( maxX , maxY ); myrad = 0,009 * max ( maxX , maxY ); % на двух картинках, отображаемый текст отличается если режим == 1 smallx = - 0,03 * макс ( B , D ); smally = - 0,12 * max ( B , D ); текст ( minX + smallx , smally , sprintf ( '% d' , minX ), 'fontsize' , fs , 'color' , серый ); текст ( maxX + smallx , smally , sprintf ( '% d' , maxX ), 'fontsize' , fs , 'color' , серый ); % ball (minX, 0, myrad, mycolor);% ball (maxX, 0, myrad, mycolor);% ball (0, maxY, myrad, mycolor); еще smallx = - 0,01 * макс ( B , D ); smally = - 0,12 * max ( B , D ); текст ( minX + smallx , smally , 'e ^ {- 1}' , 'fontsize' , fs , 'color' , серый ); текст ( maxX + smallx , smally , 'e' , 'fontsize' , fs , 'color' , серый ); % ball (exp (-1), 0, myrad, mycolor); мяч (exp (1), 0, myrad, mycolor);% ball (0, exp (-1), myrad, mycolor); мяч (0, exp (1), myrad, mycolor); конец function ball ( x, y, radius, color ) % нарисовать шар заданного однородного цвета Тета = 0 : 0,1 : 2 * пи ; X = радиус * cos ( Theta ) + x ; Y = радиус * sin ( Theta ) + y ; H = заливка ( X , Y , цвет ); set ( H , 'EdgeColor' , цвет ); функциональная стрелка ( начало, остановка, толщина, размер стрелки, резкость, тип стрелки, цвет ) % Аргументы функции:% start, stop: координаты начала и конца стрелки, векторы размера 2% толщина: толщина стержня стрелы% arrow_size: размер двух сторон угла на этом изображении ->% резкости: угол между стержнем стрелки и стороной стрелки, в градусах% arrow_type: 1 для закрашенной стрелки, в противном случае стрелка будет состоять только из двух сегментов% color: цвет стрелки, вектор длины три со значениями в [0, 1] % преобразовать в комплексные числа я = sqrt ( - 1 ); старт = старт ( 1 ) + я * старт ( 2 ); стоп = стоп ( 1 ) + я * стоп ( 2 ); rotate_angle = exp ( i * pi * резкость / 180 ); % точек, составляющих острие стрелки (помимо точки "стоп") point1 = stop - ( размер стрелки * угол поворота ) * ( стоп - начало ) / абс ( стоп - начало ); point2 = stop - ( размер стрелки / угол поворота ) * ( стоп - старт ) / абс ( стоп - старт ); если arrow_type == 1 % заполненная стрелка % рисуют палку, но не до конца, плохо смотрится t = 0,5 * размер стрелки * cos ( пи * резкость / 180 ) / абс ( стоп - начало ); stop1 = t * start + ( 1 - t ) * stop ; сюжет ( реальный ([ старт , стоп1 ]), образ ([ старт , стоп1 ]), 'Ширина линии' , толщина , 'Цвет' , цвет ); % заполните стрелку H = заливка ( реальная ([ остановка , точка1 , точка2 ]), воображаемая ([ остановка , точка1 , точка2 ]), цвет ); set ( H , 'EdgeColor' , 'нет' ) else % двухсегментная стрелка сюжет ( реальный ([ старт , стоп ]), образ ([ старт , стоп ]), 'ширина линии' , толщина , 'цвет' , цвет ); график ( реальный ([ стоп , точка1 ]), воображение ([ стоп , точка1 ]), 'Ширина линии' , толщина , 'Цвет' , цвет ); сюжет ( реальный ([ стоп , точка2 ]), воображение ([ стоп , точка2 ]), ширина линии , толщина , цвет , цвет ); конец