Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
matlab72_core.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Задание

  1. Ввести две скалярные величины x=-0.85, y=978.56*10-2.

  2. Заготовить XLS-файл с двумя матрицами А и В размера 3×5 и 5×3.

  3. Считать их в одноименные структуры MATLAB.

Примечание: Необходимо воспользоваться одним из подразделов помощи MATLAB Programming

  1. Изменить центральные элементы обеих матриц. Для А – домножить его на х и вычесть 1, для В – домножить его на sinу и прибавить 1.

  2. Осуществить поэлементное умножение матрицы А на транспонированную матрицу В.

  3. Вычислить произведение АВ и прибавить к нему матрицу С, где С – трехдиагональная: на главной диагонали единицы, наддиагональ – из х-ов, поддиагональ – из у-ков.

  4. Результат вывести в виде текстового файла.

  5. Вычислить след (trace) матрицы, обратной к последней вычисленной матрице.

  6. Сохранить последовательность команд в файле matrix1.m

2. Элементарные функциональные вычисления и построение графиков.

Комплексные числа вводятся в виде Re+Imi или Re+Im*j (предпочтительнее вариант без умножения, поскольку может возникнуть путаница с перекрытием имен). Попробуйте набрать >> j=5;[1+j,1+1j] и почувствуйте разницу! Однако в случае, когда коэффициентом перед мнимой единицей является не число, а переменная, между ними следует обязательно использовать знак умножения. Полезно знать три константы MATLAB: pi – число π, inf – бесконечность, NaN – неопределенное значение. Они могут выступать аргументами функций: >> [sin(inf),sin(1/inf),3*NaN]. В системной переменной ans хранится результат вычислений, а в eps – номинальная точность вычислений, что удобно с точки зрения численных методов, например, решения уравнений способом дихотомии. Значения этих переменных можно изменять: по умолчанию eps=2^(-52), но очень часто делают присвоение eps=1e-6; удобно проводить цепи вычислений (пример: >> ans+1). В MATLAB широкий набор самых разнообразных встроенных математических функций. Вы можете задавать и собственные функции (доступные, однако, только в текущем сеансе). Они называются анонимные, их значение вычисляется только одним оператором, а формат задания и вызова таков:

<имя>=@(<arg1>,…) <выражение> … <имя> (<arg1>,…)

При этом инициализируется переменная-указатель на функцию, и как раз по указателю функция и вызывается (полезно посмотреть Workspace). При написании собственных функций весьма желательно предусмотреть матричные операнды, что сильно облегчает жизнь при построении графиков (так, для вычисления f(x)=x3 конструкция x^3 хуже правильного варианта x.^3 с точкой поэлементной операции). Для реализации более сложных и серьезных функций необходимо обращаться к программированию М-файлов. Приведем лишь некоторые из часто используемых:

log(x) – натуральный логарифм

mod(x,y) – остаток от деления x на y (применима и для нецелых аргументов)

angle(z) – угол поворота комплексного числа z

polyval(p,t) – вычисление полинома от аргумента t с заданными вектором p коэффициентами.

bessel(nu,z) – вычисляет функцию Бесселя, причем если аргумент z матричный, то и результат также матричный. Константа nu нецелая. Пользователь может не только использовать различный синтаксис вызова (например, количество аргументов), но и определять вариант получения результата – в этом состоит важная и удобная особенность функций в MATLAB.

quad1(fun,a,b) – вычисление определенного интеграла Римана по адаптивному методу Гаусса-Лобатто на отрезке [a,b] от функции f(x), заданной указателем fun. Если функция анонимная, то вместо fun подставляется просто <имя>, но если функция задана в М-файле, то нужно провести разыменование и подставлять <@имя>.

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

str2num – переводит строку в число

tic <операции> toc – сколько времени (в сек) потребовалось для совершения операций

clock – возвращает текущую дату и время

Важное значение имеет графическое представление результатов, и MATLAB обладает обширным набором средств (см. раздел помощи в закладке Contents MATLAB – Mathematics - Plotting Mathematical Functions, более подробно изложено в MATLAB – Functions -- By Category –Graphics–Specialized Plotting). Каждый раз при получении графика создается графический объект, который автоматически открывается в окне графического редактора (можно открыть несколько объектов – см. команда h=figure(∙) и смежные; об иерархии графических объектов см. MATLAB – Handle Graphics Object Properties). Там вы можете манипулировать подписями осей, легендами, цветами линий, сохранять изображение в разных форматах. Существует сложная иерархия графических объектов, и каждому действию в окне графического редактора соответствует команда, модифицирующая заданный посредством указателя объект. Поэтому не следует забывать, что управлять параметрами изображения можно из консоли (разумеется, большинство инструкций приходится брать из системы помощи, например set) – этот способ вряд ли можно считать прогрессивным, но в некоторых случаях (поскольку доступные операции в меню окна г рафического редактора не исчерпывают всего многообразия) незаменим. Нужно помнить, что такие операции, как выбор цветовой гаммы, применяются к тому объекту, который объявлен текущим.

Не меньшее значение имеют пользовательские данные, представленные, как правило, матрицами большого размера (например, 100×300). Часть данных, таких как значения функций, может вычисляться «на лету», но надежнее вычислить все необходимое до построения графика. Всякий график предполагает наличие сетки, прямоугольной или треугольной (если ранее применялись численные методы, то в роли такой сетки может выступать сетка для исчисления конечных разностей, которая изначально и определяет детальность представления результатов; в общем случае обе сетки не совпадают, и тогда дополнительно следует применять интерполяцию – см. griddata). Самый простой путь для получения сеток для 3D-поверхностей – использование функции meshgrid.

Наиболее общеупотребительны (для целей физико-математических расчетов и/или проектирования РЭА) следующие виды графиков (рядом указано имя специальной функции):

  1. Простой график вида y=f(x) с маркерами и без– plot(x,y,…), fplot(…). Последняя команда удобна тем, что кривая строится по указателю функции, или даже по текстовому описанию fplot (’sin(x) .*cos(2x)’, [0 5*pi])

  2. Графики, построенные в преобразованных координатах (например, двойных логарифмических, т.е. данные имеют вид (x,f(x)), а координаты – (lnx,lnf(x))). В том числе в полярных координатах – cart2pol, loglog(x,y), polar(fi,r).

  3. Параметрическое семейство кривых y=f(x,p), p – параметр, значение которого указывается в легенде для каждой кривой yp=f(x). Все кривые имеют разный цвет – hold on, plot, параметр LineSpec функции plot.

  4. Контурный график, изображающий линии уровня (изолинии) z=const для поверхности z=f(x,y). Промежутки, отделяющие изолинии, могут заполняться цветом, а могут и нет. Географическая карта, где отображаются океаны и горы, - классический пример контурного графика – contourc, contourf.

  5. 3D-график для поверхности z=f(x,y) или траектории, заданной параметрически r(t) – colormap(hsv(128)), mesh, surf, plot3

  6. Анимированные графики. Обычно для траекторий частиц, получили большое распространение в последнее время – comet, getframe…movie.