Elettracompany.com

Компьютерный справочник
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Трехмерная графика matlab

Трехмерная графика matlab

3.3. Отображение трехмерных графиков

Программа MatLab обладает рядом инструментов для визуализации графиков в трехмерном пространстве. Такие задачи обычно возникают при отображении графиков функций типа .

В самом простом случае, для визуализации графика в трехмерных координатных осях, используется функция

которая в качестве первых двух аргументов принимает матрицы с координатами точек по осям Ox и Oy соответственно, а в качестве третьего аргумента передается матрица значений точек по оси Oz. Рассмотрим работу данной функции на примере отображения графика функции

,

при и .

Сформируем матрицы X и Y, содержащие координаты точек данного графика по осям Ox и Oy соответственно. Данные матрицы нужны для того, чтобы функция plot3() «знала» какие реальные координаты соответствуют точке Z(i,j) матрицы значений по оси Oz. Для этого достаточно взять i-ю и j-ю компоненту матриц

Формирование матриц X и Y можно осуществить с помощью функции

языка MatLab. Здесь x и y – одномерные векторы значений координат по осям Ox и Oy соответственно, которые можно сформировать как

x=-1:0.1:1; % координаты точек по оси Ox
y=-2:0.1:2; % координаты точек по оси Oy

и, затем, вычислить матрицы

[X,Y]=meshgrid(x,y); % матрицы координат точек по осям Ox и Oy

В результате, матрицы X и Y будут содержать следующие первые восемь значений по строкам и столбцам:

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-2 -2 -2 -2 -2 -2 -2 -2

-1,9 -1,9 -1,9 -1,9 -1,9 -1,9 -1,9 -1,9

-1,8 -1,8 -1,8 -1,8 -1,8 -1,8 -1,8 -1,8

-1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7

-1,6 -1,6 -1,6 -1,6 -1,6 -1,6 -1,6 -1,6

-1,5 -1,5 -1,5 -1,5 -1,5 -1,5 -1,5 -1,5

-1,4 -1,4 -1,4 -1,4 -1,4 -1,4 -1,4 -1,4

-1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3

Используя данные матрицы, можно вычислить значения матрицы Z, следующим образом:

и отобразить результат на экране

Рис. 3.10. Пример отображения графика с помощью функции plot3()

Из приведенного рисунка видно, что функция plot3() отображает график в виде набора линий, каждая из которых соответствует сечению графика функции вдоль оси Oy.

Такое представление графика не всегда удобно, т.к. набор одномерных не дает полное представление о характере двумерной плоскости. Более лучшей визуализации можно получить, используя функцию

mesh(X,Y,Z); % отображение графика в виде сетки

В результате получим следующий вид трехмерного графика (рис. 3.11).

Благодаря использованию функции mesh() получается график, образованный интерполяцией точек массивов X, Y и Z линиями по осям Ox и Oy. Кроме того, цветом указывается уровень точки по оси Oz: от самого малого значения (синего) до самого большого (красного) и производится удаление «невидимых» линий. Это позволяет лучше визуально оценивать структуру трехмерного графика по сравнению с функцией plot3(). Если же необходимо отобразить «прозрачный» график, то следует выключить режим удаления «невидимых» линий:

hidden off; % скрытые линии рисуются

В системе MatLab предусмотрена функция визуализации непрерывной поверхности в трехмерных осях

surf(X,Y,Z); % отображение непрерывной поверхности

В результате получается график, представленный на рис. 3.12.

Рис. 3.11. Результат работы функции mesh()

Рис. 3.12. Результат работы функции surf()

Функция surf() может использоваться в режиме

shading interp; % интерполяция тени на гранях графика

которая интерполирует цвет на гранях для получения более гладкого изображения поверхности (рис. 3.13). Также существует возможность менять цветовую карту отображения графика с помощью функции

colormap( ); % установка цветовой карты

Например, карта с именем hot, используемая по умолчанию может быть заменена на любую другую доступную (hot, hsv, gray, pink, cool, bone copper) или созданную самостоятельно.

Рис. 3.13. Результат работы функции surf() в режиме shading interp

Следует отметить, что все три функции plot3(), mesh() и surf() могут быть использованы и с одним аргументом Z, который интерпретируется как матрица со значениями точек по оси Oz.

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

axis([xmin xmax ymin ymax zmin zmax]);

с очевидным набором параметров.

Для оформления трехмерных графиков можно пользоваться описанными ранее функциями: text, xlabel, ylabel, zlabel, title, grid [on/off], subplot.

Наконец, для трёхмерных графиков существует возможность изменять точку их обзора, т.е. положение виртуальной камеры с помощью функции

где az – угол азимута; el – угол возвышения. Изменение первого угла означает вращение плоскости xOy вокруг оси Oz против часовой стрелки. Угол возвышения есть угол между направлением на камеру и плоскостью xOy.

Трехмерная графика matlab

3. Трёхмерная графика .

Графики функций двух переменных представляют из себя куски поверхностей, нависающие над областями определения функций. Отсюда ясно, что изображение графиков функций двух переменных требует реализации «трёхмерной графики» на пл оском экране дисплея компьютера.

Высокоуровневая графическая подсистема MATLABа автоматически реализует трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргументов) x2,y2 вычисляют значение функции z2. Продолжая этот процесс, получают массив (набор) точек (x1,y1,z1), (x2,y2,z2), (xN,yN,zN) в количестве N штук, расположенных в трёхмерном пространстве. Специальные функции системы MATLAB проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компбютера.

Чаще всего точки аргументов расположены в области определения функции регулярно в виде прямоугольной сетки (то есть матрицы). Такая сетка точек порождает две матрицы одной и той же структуры: первая матрица содержит значения первых координат этих точек (x — координат), а вторая матрица содержит значения вторых координат (y — координат). Обозначим первую матрицу как X, а вторую — как Y. Есть ещё и третья матрица — матрица значений функции z=f(x,y)при этих аргументах. Эту матрицу обозначим буквой Z.

Простейшей функцией построения графика функции двух переменных в системе MATLAB является функция

plot3( X , Y , Z )

где X, Y и Z — матрицы одинаковых размеров, смысл которых мы только что объяснили.

В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.

Пусть по оси x задан диапазон значений в виде вектора

Читать еще:  Https learn vships com index php

u = -2 : 0.1 : 2

а по оси y этот диапазон есть

Для получения матриц X и Y, представляющих первые и вторые координаты получающейся прямоугольной сетки точек используют специальную функцию системы MATLAB:

[ X , Y ] = meshgrid( u, v )

Как мы видим, эта функция получает на входе два одномерных массива (вектора), представляющие массивы точек на осях координат, и возвращает сразу два искомых двумерных массива. На прямоугольной сетке точек вычисляем значения функции, например функции exp:

Z = exp( — X.^2 — Y.^2 )

Наконец, применяя описанную выше функцию plot3,получаем следующее изображение трёхмерного графика этой функции:

Из этого рисунка видно, что функция plot3 строит график в виде набора линий в пространстве, каждая из которых является сечением трёхмерной поверхности плоскостями, параллельными плоскости yOz. По-другому можно сказать, что каждая линия получается из отрезков прямых, соединяющих набор точек, координаты которых берутся из одинаковых столбцов матриц X, Y и Z. То есть, первая линия соответствует первым столбцам матриц X, Y Z; вторая линия — вторым столбцам этих матриц и так далее.

Для построения трёхмерных линий, задаваемых параметрически применяется другая форма вызова функции plot3:

plot3( x, y, z )

где x, y и z являются одномерными массивами координат точек, которые и нужно последовательно соединить отрезками прямых. Например, следующий фрагмент кода

t = 0 : pi/50 : 10*pi ;

x = sin( t );

y = cos( t );

plot3( x , y , t );

grid on

где применена известная по плоским графикам команда

grid on

для проставления сетки координатных значений в области построения графика (также допустимо использовать команды и функции по оформлению графиков, ранее рассмотренные для «плоского» случая), позволяет построить винтовую линию, изображение которой показано на следующем рисунке:

Помимо этой простейшей функции система MATLAB располагает ещё рядом функций, позволяющих добиваться большей реалистичности в изображении трёхмерных графиков. Это функции mesh, surf и surfl.

Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции

exp( — X.^2 — Y.^2 )

можно получить вот такое изображение

Для лучшего восприятия «объёмности» изображения разные рёбра автоматически окрашиваются в разные цвета. Кроме того (в отличие от функции plot3) осуществляется удаление невидимых линий. Если вы считаете, что изображённое ребристое тело является прозрачным и не должно скрывать задних линий, то можно ввести команду hidden off , после чего такие линии появятся на изображении. Более плотного изображения поверхности можно добиться, если вместо

функции mesh применить функцию surf( X, Y, Z ).

В результате получается следующее изображение представляющее плотную (непрозрачную) сетчатую поверхность, причём отдельные ячейки (грани) этой сетчатой поверхности (плоские четырёхугольники) автоматически окрашиваются в разные цвета.

С помощью функции surf получаются хотя и искусственно раскрашенные, но весьма наглядные изображения. Если же мы хотим добиться более естественных и объективных способов окрашивания поверхностей, то следует использовать функцию surfl.

Функция surfl трактует поверхность графика как материальную поверхность с определёнными физическими свойствами по отражению света. По умолчанию задаётся некоторый источник света, освещающий такую материальную поверхность, после чего рассчитываеются траектории отражённых лучей, попадающих в объектив условной камеры. Изображение в такой камере и показывается в графическом окне системы MATLAB.

Так как разные материалы по-разному отражают падающие лучи, то можно подобрать некоторый материал, чтобы получить наилучшее (с точки зрения пользователя) изображение. В частности, можно использовать функцию

colormap( copper )

с помощью которой для изображения графика выбирается набор цветов (по-английски — colormap), который характерен для света, отражающегося от медной поверхности (медь по-английски — copper). После этого применение функции

surfl( X, Y, Z )

вместо surf(X,Y,Z) приводит к получению очень реалистически выглядящего и очень наглядного графика:

Можно с такого графика убрать чёрные линии, изображающие рёбра, а также добиться ещё более плавного перехода освещения поверхности, если выполнить команду

shading interp

означающую, что теперь цвет (освещённость) будет меняться даже внутри отдельных граней (ячеек). В итоге будет получаться совсем уж реальное изображение некоторой объёмной фигуры. Лучше это или хуже для задачи изображения графиков функций двух переменных — судить конкретному пользователю.

Построение трехмерных графиков функций в среде MATLAB

Система MATLAB обладает широкими возможностями построения трехмерных графиков. В данном разделе рассмотрим несколько функций, позволяющих создавать трехмерные графики всреде MATLAB.

Для создания трехмерного графика функции от двух переменныхz=f(x, у) необходимо:

1) сгенерироватьдве матрицыX иYс координатами узлов сетки на прямоугольной области определения функции, определяемой значениями переменных xи y;

2) необходимо вычислить значение функции z=f(X, Y) в узлах сетки и записать полученные значения в матрицу значений функции Z.После этого можно приступить к построению графика функции в трехмерной области графическими средствами среды MATLAB.

Для формирования матрицы, определяющей координаты прямоугольной сетки в среде MATLAB существует функция meshgrid со следующим синтаксисом:

[X, Y]=meshgrid (x, y)

где: x, y – векторы, задающие прямоугольную область определения функции z=f(x, у);X,Y–матрицы, содержащие координаты узлов сетки на прямоугольной области.

Функция meshgrid преобразует область векторов х иу в массивы X иY, соответственно,при этом строки матрицыХ являются копиями вектора х, а столбцы матрицыY– копиями вектора у. Матрицы ХиYявляются матрицами одинаковых размеров.

Для построения каркасна поверхности в трехмерном пространстве в среде MATLAB используется функция mesh, имеющая следующий синтаксис:

Mesh(X, Y, Z)

Цвет линий каркаса поверхности соответствует значениям функции z=f(x, у). Система MATLAB рисует только видимую часть каркаса поверхности. С помощью команды hiddenoffможно сделать каркас поверхности прозрачным, сделав видимой скрытую от наблюдателя часть изображения. Команда hiddenonубирает невидимую часть поверхности, возвращая графику прежний вид.

Используя функцию surfв среде MATLAB можно построить каркасную поверхность графика функции, заливая каждую клетку поверхности цветом, зависящим от значения функцииz=f(x, у) в точках, соответствующих узлам координатной сетки. Функция имеет следующий синтаксис:

Surf(X, Y, Z)

По умолчанию в среде MATLAB при формировании каркасной поверхности с помощью функции surfцвет в пределах каждой клетки поверхности остается постоянным. Команда shadinginterpпозволяет получить поверхность, плавно залитую цветовой палитрой. Команда shadingflatпозволяет убрать каркасные линии с поверхности. При помощи команды shadingflatможно получить исходный вид каркасной поверхности.

Изменение цветового оформления каркасных поверхностей в среде MATLAB можно осуществить с помощью функции colormap:

Colormap(attribute)

где: attribute–параметр, определяющий цветовое оформление поверхности. Более подробно о различных значениях данного параметра можно узнать в справочной системе MATLAB (doccolormap).

В том случае, если координаты точек линии в трехмерном пространстве заданы с помощью массивов, а не функциональной зависимости, то в среде MATLAB удобнее использовать функциюplot3для построенияданной поверхности. Функция plot3имеет следующий синтаксис:

Читать еще:  Реверс массива php

Plot3 (x, у, z)

где: x, y, z – векторы одинакового размера.

В данном случае функция plot3обеспечивает построение линии в трехмерном пространстве, проходящей через точки с координатами x(i), y(i), z(i).

Входные аргументы функцииplot3может быть представлены в видематриц:

Plot3(X, Y, Z)

где:X, Y, Z–матрицы одинакового размера,

В данном случае функция plot3обеспечивает построение линии в трехмерном пространстве, проходящей через точки с координатами X(i, 🙂, Y(i, 🙂, Z(i, 🙂 для каждого столбца матриц X, Y, Z.

Функция plot3может иметь входной параметр, определяющий стиль трехмерного графика, значения параметра стилей аналогичны значениям соответствующего параметра функции plot.

Построение трехмерных графиков в MATLAB

Построение трехмерных графиков в MATLAB.

График функции двух переменных в MATLAB – это поверхность, расположенная над областями определения функции. Поэтому для прорисовки такого графика требуется использование трехмерного изображения.

Простейшим инструментом, способным отобразить график функции дыух переменных, является

plot3( X, Y, Z )

где X, Y и Z – матрицы со значениями функции (точками z) в наборах (x, y).

В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.

В MATLAB существует функция построения двумерных массивов X и Y по одномерным x, y.

Пусть по оси x задан вектор

u = -2 : 0.1 : 2 ,

а по оси y диапазон

Для получения матриц X и Y, содержащих значения точек в этой прямоугольной сетке, используется функция:

[ X, Y ] = meshgrid( u, v )

Вычислим теперь на полученной прямоугольной сетке значение функции exp:

Z = exp( — X.^2 — Y.^2 )

Теперь применим функцию plot3, которая была описана выше, и получим следующий график:

Чтобы построить трехмерные линии, заданные параметрически, применяется другая форма вызова функции plot3:

plot3( x, y, z )

здесь x, y и z — одномерные массивы координат точек, которые надо последовательно соединить отрезками прямых.

Следующий пример позволяет построить винтовую линию:

t = 0 : pi/50 : 10*pi ;

x = sin( t );

y = cos( t );

plot3( x, y, t );

grid on

Причем следует отметить, что функции по обработке графиков, допустимые в двумерном случае, работают и для трехмерных изображений.

Кроме этой простейшей функции построения графиков в MATLAB есть набор инструментов, позволяющий сделать отображаемые объекты более наглядными. Это функции mesh, surf и surfl.

Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции

Mesh соединяет соседние вычислительные точки отрезками, причем невидимые линии при отображении скрываются. Если же такие линии для отображения необходимы, нужно воспользоваться командой.

Для примера рассмотрим использование функции mesh в случае построения того же графика функции

exp( — X.^2 — Y.^2 )

Вызов же функции

позволяет получить следующее изображение, представляющее собой поверхность, а не набор линий.

Раскрашивание отдельных элементов поверхности в этом случае производится автоматически. Если же раскрасить их необходимо по-другому, лучше всего воспользоваться функцией surfl.

Эта функция воспринимает построенную поверхность как материальную, обладающую определенными свойствами. По умолчанию она задает некоторый источник света, после чего рассчитывает траектории отраженных от поверхности лучей. Таким образом, если задать условные параметры материала поверхности, например:

colormap( copper ) ,

то есть набор цветов (colormap), соответствующий меди (copper), то после вызова функции

surfl( X, Y, Z )

мы получим следующий график:

Убрать черные линии и добиться более лпавного света позволяет команда

Графика в MATLAB. Двумерная и трёхмерная графика.

Графика в MATLAB. Двумерная и трёхмерная графика.

Интерполяции и аппроксимации данных.

Использование математического пакета MATLAB

Для исследования функций

Цель занятия: использование математического пакета MATLAB для графических построений. Интерполяция и аппроксимация данных. Использование математического пакета MATLAB для исследования функций и операций с полиномами. Использование математического пакета MATLAB для численного интегрирования и решения дифференциальных уравнений (4 часа).

Теоретическая часть

Построение графика функций одной переменной

MATLAB обладает широким набором средств для построения графиков функций одной и двух переменных и отображения различных типов данных. Все графики выводятся в графические окна со своими меню и панелями инструментов. Вид графиков определяется аргументами графических команд и затем может быть изменён при помощи инструментов графического окна. Важно понимать, что для построения графиков функций на некоторой области изменения аргументов следует вычислить значения функции в точках области, часто для получения хороших графиков следует использовать достаточно много точек.

Разберем сначала, как получить график функции одной переменной, к примеру:

на отрезке [-2, 2]. Первый шаг состоит в задании координат точек по оси абсцисс. Заполнение вектора x элементами с постоянным шагом при помощи двоеточия позволяет просто решить эту задачу. Далее необходимо поэлементно вычислить значения f(x) для каждого элемента вектора x и записать результат в вектор f. Для построения графика функции осталось использовать какую-либо из графических функций MATLAB. Достаточно универсальной графической функцией является функция plot. В самом простом случае она вызывается с двумя входными аргументами – парой x и f (то есть plot выводит зависимость элементов одного вектора от элементов другого). Последовательность команд, записанная ниже, приводит к появлению графического окна с графиком функции (рис. 3.1):

Тип линии, цвет и маркеры определяются значением третьего дополнительного аргумента функции plot. Этот аргумент указывается в апострофах, например, вызов plot(x,f,’ro:’) приводит к построению графика красной пунктирной линией, размеченной круглыми маркерами. Обратите внимание, что абсциссы маркеров определяются значениями элементов вектора x. Всего в дополнительном аргументе может быть заполнено три позиции, соответствующие цвету, типу маркеров и стилю линии. Обозначения для них приведены в табл. 3.1. Порядок позиций может быть произвольный, допустимо указывать только один или два параметра, например, цвет и тип маркеров. Посмотрите на результат выполнения следующих команд: plot(x,f,’g’), plot(x,f,’ko’), plot(x,f,’:’).

Функция plot имеет достаточно универсальный интерфейс, она, в частности, позволяет отображать графики нескольких функций на одних осях. Пусть требуется вывести график не только f(x), но и на отрезке [-2, 2]. Сначала необходимо вычислить значения g(x):

а затем вызвать plot, указав через запятую пары x,f и x,g и, при желании, свойства каждой из линий (рис. 3.2):

Графическая функция fplot

Разумеется, MATLAB имеет средства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимые неопределённости. Не обсуждая эти средства подробно, просто покажем, как это делается, с помощью другой графической команды – fplot:

Читать еще:  Защита инвертора от встречного напряжения

fplot(‘f(x)’, [xmin xmax]).

Она позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х:

Один из вариантов её применения демонстрирует рис. 3.18. Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, но график строится правильно, при х=0 sin x/x=l. Обратите также внимание на две используемые команды: clear (очистить) – очистка графического окна и grid on (сетка) – включение отображения сетки, которая строится пунктирными линиями.

На рис. 3.18 представлено также меню File (Файл) окна графики. Нетрудно заметить, что оно содержит типовые файловые операции. Однако они относятся не к файлам документов, а к файлам графиков. В частности, можно присваивать имя записываемым на диск рисункам с графиками.

Рис. 3.18.Построение графика sin(x)/x функцией fplot

Интерполяция сплайнами

Повысить качество аппроксимации экспериментальных данных можно с помощью сплайнов. Сплайн – это непрерывная гладкая функция, которая на отрезках области определения равна полиномам определённой степени. Иными словами, при таком способе интерполяции экспериментальные точки попарно соединяются отрезками полиномов. Обычно используют полиномы третьей степени, поэтому данный метод и получил название интерполяция кубическими сплайнами.

Интерполяцию кубическими сплайнами можно выполнить с помощью функции spline. Если к этой функции обратиться в форме

она выполнит интерполяцию значений вектора у, заданного для значений аргумента, представленного вектором х, и вернёт вектор уу, содержащий значения интерполирующей функции для значений аргумента, заданных вектором хх.

Для примера выполним интерполяцию кубическими сплайнами для значений, заданных векторами х и у, и отобразим полученный результат на графике (рис. 3.20):

>> x=[1 2 3 4 5 6 7 8 9 10];

>> y=[3 4 6 6.5 7 7.5 9 11 10 9];

>> title(‘Интерполяция кубическими сплайнами’);

Рис. 3.20. Аппроксимация кубическими сплайнами

Для одномерной интерполяции табличных данных в MATLAB имеется функция interpl:

В её четвёртом аргументе в виде строки символов задаётся метод интерполяции. Можно задать один из следующих методов:

· ‘nearest’ – ступенчатая интерполяция (когда значение в каждой промежуточной точке принимается равным ближайшему табличному значению);

· ‘linear’ – линейная интерполяция (соединение соседних точек отрезками прямых в соответствии с табличными данными);

· ‘spline’ – интерполяция кубическими сплайнами;

· ‘pchip’ – интерполяция кусочными полиномами Эрмита 3-й степени;

· ‘cubic’–тоже, что и ‘pchip’.

Если метод не указан, по умолчанию используется ‘linear’.

В следующем примере сравниваются различные способы интерполяции, реализованные функцией interpl (графики соответствующих функций представлены на рис. 3.21).

>> x=[1 2 3 4 5 6 7 8 9 10];

>> y=[3 4 6 6.5 7 7.5 9 11 10 9];

>> title(‘Различные методы интерполяции’)

Рис. 3.21. Различные методы интерполяции

В MATLAB можно интерполировать не только одномерные данные. Для интерполирования двухмерных данных предназначена функция interpl, трёхмерных – функция interp2, а многомерных – функция intern.

Решение уравнений

Для решения уравнений вида f(x) = 0 (то есть для нахождения нулей функции) предназначена встроенная функция MATLAB fzero, которая находит приближённое значение корня уравнения по заданному начальному приближению.

Самый простой способ обращения к этой функции выглядит так:

где х0 – это начальное приближение к корню; fun – функция, корень которой вычисляется; а х – полученное приближение значения корня.

Аргумент х0 может быть задан либо в виде скалярного значения, вблизи которого возможно наличие корня, либо в виде вектора из двух значений [m n] (причем n > m), элементы которого представляют собой интервал, на границах которого функция fun имеет разные знаки (что означает наличие хотя бы одного корня на этом промежутке).

Аргумент fun задается либо как указатель на функцию (например, @sin, @cos или @myfun), либо как формула с одной независимой переменной, заключённая в одинарные кавычки, либо как имя файл-функции (в одинарных кавычках), вычисляющей левую часть уравнения.

Рассмотрим случай задания аргумента fun в виде файл-функции.

В файл-функциях описываются функции, определяемые пользователем. Такие функции используются при решении многих задач, основанных на численных методах. Файл-функции представляют собой разновидность m-файлов. Вообще, в MATLAB существуют два типа m-файлов: файл-программы и файл-функции.

Допустим, требуется найти нули функции f(x) = х 2 sin(x) Сначала нужно создать файл функцию. Для этого выполните следующие действия:

1. В главном окне MATLAB выберите команду File Þ New Þ m-file (ФайлÞНовый Þm-файл), чтобы вызвать редактор m-файлов системы MATLAB.

2. Наберите в редакторе m-файлов две строки кода, изображённые на рис. 3.22.

Рис. 3.22. Окно редактора кода с текстом файл-функции

Первая строка – это заголовок функции, где задаётся имя функции (в нашем примере myf) и список входных и выходных параметров (в данном случае имеется один входной (х) и один выходной (f) параметр). Во второй строке задаётся тело функции – выражение, вычисляющее значение функции. Обратите внимание, что при вводе функции использованы операторы поэлементного возведения в степень и поэлементного умножения, чтобы функцию можно было использовать и при работе с массивами. Кроме того, во избежание вывода на экран лишней информации, в конце второй строки кода поставлена точка с запятой.

3. Сохраните файл в текущем рабочем каталоге. Для этого в окне редактора m-файлов выберите команду FileÞSave as (ФайлÞСохранить как). В раскрывшемся диалоговом окне не изменяйте содержимое полей File name (Имя файла) Files of type (Тип файла), в которых автоматически отобразятся требуемые имя и тип файл-функции. Имя m-файла обязательно должно совпадать с именем функции (в данном случае для функции выбрано имя myf).

Перед тем как искать нули функции с помощью функции fzero, построим график заданной функции.

Файл-функции можно применять в качестве аргументов других функций, поэтому для построения графика вместо функции plot воспользуемся функцией fplot, работать с которой намного проще. В первом аргументе функции fplot достаточно задать имя файл-функции, график которой требуется построить, а во втором – вектор-строку из двух элементов, определяющих границы отрезка, на котором нужно построить график.

Чтобы построить график нашей функции на отрезке [0, 10], ввёдем следующие команды (командой grid on укажем программе отобразить сетку на графике):

» fplot(‘myf’,[0 10]); grid on.

Преимуществом использования функции fplot для построения графиков является то, что она автоматически подбирает шаг аргумента, что позволяет более точно описать поведение функции.

Как следует из графика (рис. 3.23), на отрезке [0, 10] функция имеет четыре корня. Один из корней равен нулю, а три других располагаются около значений х = 3, х = 6 и x = 9.

Рис. 3.23. График функции f(x) = х 2 sin x

С помощью функции fzero найдём более точные значения этих корней:

Ссылка на основную публикацию
Adblock
detector