Математическая лаборатория на ПК
06.04.09Мой Компьютер, №04 (435), 15.01.2007
Графики функций с несколькими неизвестными
Точно так же, как и обычным графикам функций, графику, зависящему от нескольких переменных, необходимо задать область определения. Для этого в MatLAB содержится функция meshgrid, определяющая сетку вывода графика.
Приведем пример создания графика функции z=x3/2+xy+y3/2:
>> [X, Y] = meshgrid(0:0.1:1,0:0.1:1); %сетка от 0 до 1 с шагом 0.11
>> Z = X.^1.5 + X*Y + Y.^1.5;
>> mesh(X,Y,Z)
Результат вы можете увидеть на рисунке (рис. 1).
Каркасные поверхности создаются командой surf, по синтаксису схожей с mesh (рис. 2):
>> [X, Y] = meshgrid(0:0.1:1,0:0.1:1);
>> Z = 20 * cos(pi*X).* sin(pi*Y).* (1-X.*Y);
>> surf(X,Y,Z)
Задать выводимое полотно можно командой shading. Так, при shading flat поверхность состоит из квадратиков цвета, а shading interp — из переливающейся радуги (как на рисунке).
Команды surfc, meshc дополнительно к построению отображают проекции изгибов фигуры.
Обширны возможности MatLAB и по созданию контурных графиков. Задав массив levels с определенными уровнями, можно создавать контурные графики командами contour, contourf (двухмерные графики поверхностей), contour3 (3D-график).
Создание функций в MatLAB
Каждая функция MatLAB (как штатная, так и создаваемая пользователем) хранится в одноименном файле с расширением .m. Создать файл достаточно просто: File > New > M‑File откроет редактор M‑файлов. Начинается функция со слова function, после чего следует имя результата (или множество, заключенное в квадратные скобки, если результатов несколько) и список передаваемых параметров. Операторных скобок в MatLAB нет (по крайней мере, я не встречал). Конец блока, как и конец функции, обозначается словом end.
Пример функции, вычисляющей корни квадратного выражения:
function [a1, a2] = root2(a,b,c)
if (b*b-4*a*c < 0)
warning(‘результат комплексный’)
else
a1 = (-b — sqrt(b*b-4*a*c)) / (2*a);
a2 = (-b + sqrt(b*b-4*a*c)) / (2*a);
end
Поместим этот текст в файл qsolve.m.
Теперь, вызвав функцию [ans1, ans2] = qsolve(1,4,1), мы получим корни квадратного уравнения x2+4x+1=0.
ans1 =
-3.7321
ans2 =
-0.2679
Работа с полиномами
Прежде чем описывать работу с полиномами, расскажу о замечательной функции pretty, которая позволяет выводить любые выражения в более дружественном для человека формате — так, например, (x^3)/a+x^2+x отобразится почти такой, как напечатана в учебнике, разве что шрифтом одного размера (рис. 3).
Все операции над символическими переменными и функциями должны быть описаны словами sym и syms соответственно, рассмотрим на примере:
>> syms a
>> y = sym(‘(x-a)*(x^2+x*a+a^2)’)
>> simple(y)
ans =
x^3-a^3
В данном примере использовалась функция simple — она упрощает полином, перебирая всевозможные методы. Остальные, наиболее используемые методы смотрите в таблице 1.
Нахождение пределов, интегралов и производных
MatLAB предоставляет потрясающие возможности для настоящих «маньяков математики» по части математического анализа. Все они неплохо документированы, я же расскажу об основных, особенно полезных большинству учащихся и студентов.
Функция limit определяет предел функции. Второй и третий аргумент могут указывать, какая переменная и куда стремиться, четвертый же, представленный строковыми константами left и right, позволяет определить поиск предела слева или справа.
Для примера найдем предел функции sin(x)/x, где x стремится к нолю.
>> limit(‘sin(x)/x’,x,0)
ans =
1
Если предел стремится к бесконечности, указывается служебное слово inf.
Нахождение производных осуществляется функцией diff.
>> diff(‘y^2+y+a’)
ans =
2*y+1
При необходимости найти вторую, третью, n-ую производную — номер указывается вторым аргументом функции.
Ну и наконец, интегралы находятся функцией int. При необходимости найти определенный интеграл пределы указываются третьим и четвертым аргументом. Вторую же позицию занимает переменная интегрирования:
>> int(‘x^2’,x)
ans =
1/3*x^3
Когда будете решать — не забывайте дописывать свободный член (+C), MatLAB его не ставит.
Рассмотрим более сложный пример: двойной интеграл (рис. 4).
>> syms a b p q x y %символьные переменные
>> f=sym(‘x^2/(2*p) + y^2/(2*q)’);
>> ix = int(f,x,0,a); %нахождение по x
>> iy = int(ix,y,0,b) %нахождение по y
iy =
1/6/p*a^3*b+1/6/q*a*b^3
Решение дифференциальных уравнений
Для аналитического решения дифференциальных уравнений распространена всего одна, но очень мощная в этом плане функция — dsolve. Она может принимать неограниченное число аргументов с указанием уравнений. Производные функций задаются в уравнении как DNy, где N — порядок производной. По определенным причинам неизвестные в алгоритме функции называются не x, а t — на это следует обратить внимание.
Для примера:
y’’-2y’=2e^x; y(1)=-1; y’(1)=0
>> dsolve(‘D2y-2*Dy = 2*exp(t)’,’y(1)=-1′,’Dy(1)=0′)
ans =
-2*exp(t)+exp(2*t)*exp(1)/exp(2)+exp(1)-1
Итоги
Надеюсь, моя трилогия помогла вам с расчетами в математике и других науках, дала возможность проверить ответ в уравнении из учебника, ну или хотя бы просто обогатила багаж знаний. В случае вопросов — пишите на электронную почту, указанную под заголовком статьи.
Александр СОЛОВЕЙ
Web-droid редактор
вологість:
тиск:
вітер:
Достоинства материнских плат MSI
Сердцем компьютера считается процессор, однако без добротной материнки он теряет свою ценность. Системная плата выполняет объединяющую функцию и корректное функционирование основных компьютерных комплектующих и периферии
Qualcomm S3 Gen 3 и S5 Gen 3 — новые аудио-платформы для мобильных устройств
Qualcomm аудиоПлатформа Qualcomm S3 Gen 3 также предлагает инновации, ранее доступные только в устройствах премиум-класса, включая поддержку программы Qualcomm Voice & Music Extension
Смартфон OnePlus Ace 3V с OLED-дисплеем 120 Гц, чипом Snapdragon 7+ Gen 3, зарядкой 100 Вт стоит $277
Android OnePlus Qualcomm смартфонOnePlus Ace 3V работает на новом процессоре Qualcomm Snapdragon 7+ Gen 3, став первым смартфоном на рынке с таким чипсетом