Основные объекты системы MatLab
Математические выраженияв MatLab стоятся, как и в большинстве языков программирования, из числовых констант, переменных, стандартных и нестандартных функций, соединенных знаками арифметических операций, например+ ,— ,* , / ,^,и круглых скобок. Кроме того, как было показано ранее, вид результата зависит от установленного формата.
Число– простейший объект языка MatLab, представляющий числовые данные. Числа могут быть представлены в целом, дробном, с фиксированной и плавающей точкой, а также в экспоненциальном виде. Например,
0, 2, -4, 4.67, 0.0005, 567.9e-7, 0.89e12.
Числа могут быть как действительными, так икомплексными. Комплексные числа содержат как действительные, так и комплексные чисти. В MatLab мнимая часть имеет множитель i или j, означающий корень квадратный из -1. Например,
3i, 5j, -5.1 +i8, 005e-5- j0.006.
Все операции над числами в MatLab выполняются вформате с двойной точностью.
Числовая константа– это предварительно определенное число (числовое значение). Числа (например,1, -5, 3.97) являются безымянными числовыми константами.
Системные константы(табл. 3.1-3) – это такие константы, значения которых задаются системой при загрузке. Однако по мере необходимости эти константы могут переопределяться.
Таблица 2.3.1-3 Таблица 3.5.3-3
Константа | Назначение |
i или j | Мнимая единица |
pi | Число π=3.1415926… |
eps | Погрешность вычислений над числами с плавающей точкой (по умолчанию 2-52) |
realmin | Наименьшее число с плавающей точкой (по умолчанию 2-1022) |
realmax | Наибольшее число с плавающей точкой (по умолчанию 21022 |
inf | Значение машинной бесконечности |
NaN | Указание на нечисловой характер данных (Not-a-Number) |
Символьная константа– это последовательность символов, заключенных в одиночные апострофы. Например:
‘Кафедра ВМиП’ ’88+0′ |
КомментариивMatLabопределяются с помощью символа%. Например,
% Это комментарий |
имя переменной (ее идентификатор) может состоять из символов латинского алфавита, знака подчёркивания и цифр, но начинаться обязательно с символа алфавита;
прописные и строчные буквы различаются;
пробел не входит в имя переменной.
Для задания переменным определенных значений используется операция присваивания, обозначаемая знаком равенства=.
Пример 3.1-5 |
>> a=3.25*(0.7-3.3/5.1)+2.3^3 a = 12.3391 >> b=5*(2.2+3.9i)+0.8 b = 11.8000 +19.5000i >> |
Простейшие арифметические операции системы приведены в табл. 3.1-4.
Таблица 3.1-4
Функция | Название | Операция | Синта-сис |
plus | Плюс | + | M1+M2 |
uplus | Унарный плюс | + | +M |
minus | Минус | — | М1-M2 |
uminus | Унарный минус | — | -М |
mtimes | Матричное умножение | * | M1*M2 |
times | Поэлементное умножение массивов | .* | A1.*A2 |
mpower | Возведение матрицы в степень | ^ | М^х |
power | Поэлементное возведение массива в степень | .^ | A.^x |
mldivide | Обратное (справа налево) деление матриц | \ | M1\M2 |
mrdivide | Деление матриц слева направо | / | M1/M2 |
ldivide | Поэлементное деление массивов справа налево | .\ | A1.\A2 |
rdivide | Поэлементное деление массивов слево направо | ./ | A1./A2 |
Необходимо обратить внимание на то, что каждая операция имеет аналогичную по назначению функцию. Например, операции матричного умножения * соответствует функция mtimes(Ml,M2). Примеры применения арифметических операций уже не раз приводились, так что ограничимся несколькими дополнительными примерами.
Пример 3.1-6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
>>А=[1 2 3]; >>В=[4 5 6]: >>В-А ans=
|
Соответствие функций операторам и командам в системе MatLab является одним из основных положений программирования в MatLab. Оно позволяет одновременно использовать элементы как операторного, так и функционального программирования.
Следует отметить, что в математических выражениях операции имеют определенный приоритет исполнения. Например, в MatLab приоритет логических операций выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки.
MatLab обладает большим наборомстандартных встроенных математических функций.Некоторые из них приведены в табл. 3.1-5. При вызове математических функций аргумент заключается в круглые скобки. Полный список всех встроенных элементарных математических функций можно получить, набрав в командной строке.
Пример 3.1-7 |
>>help elfun >> |
Таблица 3.1-5
Тригонометрические функции (результат вычисляется в радианах) | |
sin, cos, tan, cot | Синус, косинус, тангенс и котангенс |
sec, csc | Секанс, косеканс |
Обратные тригономе-кие функции (результат вычисляется в рад.) | |
asin, acos,atan,atan2, acot | Арксинус, арккосинус, арктангенс и арккотангенс |
asec, acsc | Арксеканс, арккосеканс |
Гиперболические функции | |
sinh, cosh, tanh, coth | Гипербол. синус, косинус, тангенс и котангенс |
sech, csch | Гиперболические секанс и косеканс |
asinh, acosh, atanh, acoth | Гиперболические арксинус, арккосинус, арктангенс и арккотангенс; |
Экспоненциальная функция, логарифмы, степенные функции | |
exp | Экспоненциальная функция |
log, log2, log10 | Логарифм натуральный, по основанию 2 и 10 |
sqrt | Квадратный корень |
Модуль, знак и функции для работы с комплексными числами | |
abs, sign | Модуль и знак числа |
conj, imag, real | Комплексно-сопряжённое |
mod, rem | Остаток от деления с учетом знака делимого и без |
gcd, lcm | Наибольший и наименьший общий делитель |
cell, fix, floor, round | округления |
Команда helpотображает в командном окне список разделов справочной системы. Для получения содержимого раздела необходимо указать через пробел его название послеhelp,а для вывода детальной информации о какой-либо функции, следует ввести в строке сhelp имя функции.
Возникающий в процессе вычислений комплексный результат не является ошибкой. MatLab автоматически переходит в область комплексных чисел, если это необходимо, продолжая вычисления. Например, если необходимо найти квадратный корень из –1. Более того, допустимы операции деления на ноль, которые приводят к стандартным переменнымInfили–Inf. Результат деления нуля на ноль естьNaN(Not a Number – не число). Переполнение или потеря точности в MatLab при выполнении операций с числами с плавающей точкой не вызывает прекращение вычислений.
Запись комплексных величин, используемых в арифметических выражениях, напоминает общепринятые математические стандарты. Мнимые части комплексных чисел сопровождаются либо буквой i, либо буквойj:
Пример 3.1-8 |
>>x=1.5-0.5i x = 1.5000 — 0.5000i >>y=1.5-0.5j 1.5000 – 0.5000j >> |
Если переменным iиjне присвоены какие-либо значения, то их можно использовать для формирования комплексных данных, используя знак умножения и располагая такой “сомножитель” до или после мнимой части:
Пример 3.1-9 |
>>a=1; >>x=i*a x = 0 + 1.0000i >>y=a*i y = 0 + 1.0000i >> |
Когда полные комплексные числа используются в операциях умножения, деления и возведения в степень, то для устранения неоднозначности их заключают в круглые скобки.
С помощью функции real иimagможно выделить вещественную и мнимую часть комплексного значения, а функцияcomplexпозволяет сконструировать комплексное значение по паре двух вещественных чисел.Пример 3.1-10 |
>>b=5+j10; >>c=real(d) c= 5 >>d=imag(b) d= 10 >> |
Функцией conj()можно воспользоваться для получения комплексного сопряженного числа. Тот же результат можно получить, располагая апостроф вслед за комплексным значением.
Пример 3.1-11 |
>>t=conj(b) t= 5.0000e+000 -1.0000e+001i >>g=b’ g= 5.0000e+000 -1.0000e+001i >> |
Отметим, что над комплексными данными в MatLab определены все арифметические операции, а комплексные операнды и выражения могут использоваться в качестве аргументов стандартных функций.
Необходимо обратить внимание, что числовые переменные в MatLab являются двумерными массивами размера один на один. Представление всех данных в MatLab в виде массивов оказывается очень полезным, о чем подробнее будет сказано в следующих разделах.
studfiles.net
Вычисления в МАТЛАБ
Проверка. Решение задачи с помощью стандартных встроенных функций ядра MATLAB.(Выберите стиль Заголовок 4)
оформление 1
Сюда нужно копировать программу и графики из Command Window и Figures относящиеся к аналитическому способу решения. При необходимости перед строкой с командой делать комментарии.
оформление 2
Сюда нужно копировать программу и графики из Command Window и Figures относящиеся к аналитическому способу решения. При необходимости перед строкой с командой делать комментарии.
Выводы. Обсуждение полученных результатов.(Выберите стиль Заголовок 4)
Например, результаты вычислений проделанных аналитически способом 1 (возможно, после соответствующих преобразований) дают те же результаты, что и использование стандартной функции такой-то.
Или, представление результата вычислений после применения способа 2 отличается от представления результата после проверки или способа 1 с помощью стандартной функции такой-то, но на самом деле это одно и то же объяснить почему
Упражнения, которые следует включить в отчет, имеют нумерацию. За пять минут до конца занятия следует скидывать свой отчет независимо от его завершенности в рамках одного модуля, дабы преподаватель мог его просмотреть и своевременно сделать замечания. Ненужно доходить до фанатизма. Иногда все не так сложно.
Встроенные математические функции МАТЛАБ позволяют находить значения различных выражений. МАТЛАБ предоставляет возможность управления форматом вывода результата. Команды для вычисления выражений имеют вид, свойственный всем языкам программирования высокого уровня.
Упражнение 1.1
Наберите в командной строке 1+2 и нажмите <Enter>.
В результате в командном окне МАТЛАБ отображается следующее: >> 1+2
ans = 3
>>
Что сделала программа МАТЛАБ? Сначала она вычислила сумму 1+2, затем записала результат в специальную переменную ans и вывела ее значение, равное 3, в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая,
9
что МАТЛАБ готова к дальнейшим вычислениям. Можно набирать в командной строке новые выражения и находить их значения.
Если требуется продолжить работу с предыдущим выражением, например, вычислить (1+2)/4.5, то проще всего воспользоваться уже имеющимся результатом, который хранится в переменной ans. Наберите в командной строке ans/4.5 (при вводе десятичных дробей используется точка) и нажмите <Enter>, получается:
>>ans/4.5 ans = 0.6667
>>|
Форматывыводарезультата вычислений
Вид, в котором выводится результаты вычислений, зависит от формата вывода, установленного в МАТЛАБ. Далее объяснено, как задать основные форматы вывода. Числовые данные, с которыми оперирует MATLAB, в памяти компьютера представлены вещественными или комплексными (их обсудим позже) переменными в формате double. Это означает, что каждое вещественное число занимает 8 байтов в оперативной памяти и принимает по модулю значения из диапазона [10−308 ,10308 ] . Количество значащих цифр при этом достигает 16-17. Именно с такой точностью MATLAB выполняет все вычисления. Однако при отображении всех результатов на экране часть значащих цифр отбрасывается в соответствии с установленным форматом вывода. Отображаемые значения округляются по общепринятым в математике правилам.
В таблице представлены основные форматы вывода числовых данных с фиксированной (левый столбец) и плавающей (правый столбец) запятой. Формат rational позволяет отображать числовые значения в виде подходящих рациональных дробей с минимально возможными числителями и знаменателями. При этом значение переменной x, хранящееся в памяти компьютера, не зависит от установленного формата вывода.
Пример отображения числа | Пример отображения числа | Пример отображения числа |
>> format short | >> format short e | >> format rational |
>> x=sqrt(2) | >> x | >> x |
x = | x = | x = |
1.4142 | 1.4142e+000 | 1393/985 |
>> format long | >> format long e |
|
>> x | >> x |
|
x = | x = |
|
1.414213562373095 | 1.414213562373095e+000 |
|
По умолчанию система использует формат short (укороченный).
Есть целый ряд системных числовых констант, которые не надо портить: pi – число ;
realmax – наибольшее положительное число с плавающей запятой; realmin – наименьшее положительное число с плавающей запятой;
eps – относительная погрешность при вычислениях с плавающей запятой.
10
Упражнение 1.2
1) сложите два числа 1/2+2/3 в формате format short
2) перейдите в формат format rational и сложите два числа 1/2+2/3
¾ Можно кратко в format rat
пример отчета к этому упражнению: Упражнение
1. сложить два числа
(горячая клавиша “Alt плюс =” вызывает конструктор формул, наберите 1 \ 2 пробел плюс 2 \ 3 пробел, сдвинув стрелочку вправо, вы выйдите из формулы)
МАТЛАБ выдает
>> 1/2+2/3 ans =
1.1667
>>
2) перейти в формат format rational и сложить те же числа и . МАТЛАБ выдает
>>format rat
>>1/2+2/3
ans =
7/6
>>
Замечание Все промежуточные вычисления МАТЛАБ производит с двойной точностью, независимо
от того, какой формат вывода установлен.
11
Работассимвольнымипеременными
Команда syms a b c d (переменные записываются через пробел) позволяет работать с символьными переменными как с числами, то есть мы можем работать с алгебраическими выражениями:
Упражнение 1.3.
Введите
>>(x+1)*(x-1)
???Undefined function or variable ‘x’.
МАТЛАБ выдал сообщение об ошибке, теперь введите
>> syms x
>>f=(x+1)*(x-1)
>>collect(f)
ans =
-1+x^2
>> f=collect(f)
f =
-1+x^2
Ответьте в отчете на вопрос, что сделала команда collect с выражением f
Посмотрите в help через Index в разделе simplifications (упрощения) как делать различные преобразования в алгебраических выражениях.
теперь присвоим x какое-нибудь число: >>x =
2
снова вызовем
>> f
f =
(x+1)*(x-1)
теперь снова вызовем
12
studfiles.net
Matlab округление
Если вы столкнулись с проблемой, как округлить число в Матлабе, то далее в статье вы можете узнать все виды округлений в Matlab.
Есть несколько видов Matlab округление:
1. round — Округление до ближайшего целого
пример:
a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i]
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
7.0000 2.4000 + 3.6000i
Теперь используем функцию round:
round(a)
ans =
Columns 1 through 4
-2.0000 0 3.0000 6.0000
Columns 5 through 6
7.0000 2.0000 + 4.0000i
2. ceil — Округление в большую сторону
пример:
a = [-1.9, -0.2, 3.4, 5.6, 7, 2.4+3.6i]
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
7.0000 2.4000 + 3.6000i
Теперь используем ceil:
ceil(a)
ans =
Columns 1 through 4
-1.0000 0 4.0000 6.0000
Columns 5 through 6
7.0000 3.0000 + 4.0000i
3. fix — Округление в сторону нуля
пример:
a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i]
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
7.0000 2.4000 + 3.6000i
Теперь воспользуемся fix:
fix(a)
ans =
Columns 1 through 4
-1.0000 0 3.0000 5.0000
Columns 5 through 6
7.0000 2.0000 + 3.0000i
4. floor — Округление в меньшую сторону
пример:
a = [-1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6i]
a =
Columns 1 through 4
-1.9000 -0.2000 3.4000 5.6000
Columns 5 through 6
7.0000 2.4000 + 3.6000i
Теперь применим floor:
floor(a)
ans =
Columns 1 through 4
-2.0000 -1.0000 3.0000 5.0000
Columns 5 through 6
7.0000 2.0000 + 3.0000i
Вот и все виды матлаб округление.
Поэтому из выше всего сказанного можно сделать вывод, что вам необходимо просмотреть много дополнительной информации и альтернатив!
←Предыдущая Массив Matlab | Matlab модуль числа Следующая→ |
---|
xn—-itbabpc0acaivro5j.xn--p1ai
Комплексные числа в matlab. — МегаЛекции
При вычислении, например sqrt(-1), никакой ошибки или предупреждения не возникает. MatLab автоматически переходит в область комплексных чисел:
»sqrt(-1.0)
ans =
0 + l.0000i
При вычислении корня из -1 никакой ошибки или предупреждения не возникает, потому что MatLab автоматически переходит в область комплексных чисел:
»sqrt(-1.0)
ans =
0 + l.0000i
При наборе комплексных чисел в командной строке MatLab можно использовать либо i, либо j, а сами числа при умножении, делении и возведении в степень необходимо заключать в круглые скобки:
»(2.1+3.2i)*2+(4.2+1.7i)^2
ans =
18.9500 +20.6800i
Если не использовать скобки, то умножаться или возводиться в степень будет только мнимая часть и получится неверный результат:
» 2.1+3.2i*2+4.2+1.7i^2
ans =
3.4100 + 6.4000i
Для вычисления комплексно-сопряженного числа применяется апостроф, который следует набирать сразу за числом, без пробела:
» 2-3i’
ans =
2.0000 + 3.0000i
Если необходимо найти комплексно-сопряженное выражение, то исходное выражение должно быть заключено в круглые скобки:
»((3.2+1.5i)*2+4.2+7.9i)’
ans =
10.6000 -10.9000i
MatLab позволяет использовать комплексные числа в качестве аргументов встроенных элементарных функций:
» sin(2+3i)
ans =
9.1545 — 4.1689i
Конструирование комплексного числа по его действительной и мнимой части выполняется с помощью функции complex:
» complex(2.3, 5.8)
ans =
2.3000 + 5.8000i
Числовые массивы
Для создания одномерного массива можно использовать операцию конкатенации, которая обозначается с помощью квадратных скобок [ ]. Элементы массива помещаются между скобками и отделяются друг от друга пробелом или запятой:
» al=[1 2 3]; d=[1+2i,2+3i,3-7i];
Для доступа к индивидуальному элементу массива нужно применить операцию индексации, для чего после имени элемента указать в круглых скобках индекс элемента. Можно изменять элементы уже сформированного массива путем применения операций индексации и присваивания. Например, введя:
» al(3)=789;
мы изменим третий элемент массива. Или, после введения:
» al(2)=(al(1)+al(3))/2;
второй элемент массива станет равным среднему арифметическому первого и третьего элементов. Запись несуществующего элемента вполне допустима – она означает добавление нового элемента к уже существующему массиву:
» al(4)=7;
Применяя после выполнения этой операции к массиву а1 функцию length, находим, что количество элементов в массиве возросло до четырех:
» length(al)
ans = 4
Тоже самое действие – «удлинение массива а1» — можно выполнить и с помощью операции конкатенации:
» al=[al 7];
Можно задать массив, прописывая все его элементы по отдельности:
» a3(1)=67; a3(2)=7.8; a3(3)=0.017;
Однако этот способ создания не является эффективным.
Еще один способ создания одномерного массива основан на применении специальной функции, обозначаемой двоеточием (операция формирования диапазона числовых значений). Через двоеточие следует набрать первое число диапазона, шаг (приращение) и конечное число диапазона. Например:
» diap=3.7:0.3:8.974;
Если не нужно выводить на экран весь получившийся массив, то в конце набора (после конечного числа диапазона) следует набрать точку с запятой.
Чтобы узнать, сколько элементов в массиве, следует вызвать функцию length (имя массива).
Для создания двумерного массива (матрицы) также можно использовать операцию конкатенации. Элементы массива набираются один за другим согласно их расположению в строках, в качестве разделителя строк используется точка с запятой.
Введите с клавиатуры:
» a=[1 2; 3 4; 5 6]
Нажмите ENTER, получим:
a =
1 2
3 4
5 6
Полученную матрицу а размером 3×2 (первым указывается число строк, вторым – число столбцов) можно сформировать также вертикальной конкатенацией вектор-строк:
» a=[[1 2];[3 4];[5 6]];
или горизонтальной конкатенацией вектор-столбцов:
» a=[[1;3;5],[2;4;6]];
Структуру созданных массивов можно узнать с помощью команды whos(имя массива), размерность массива – функцией ndims, а размер массива – size.
Двумерные массивы можно задать также с помощью операции индексации, прописывая по отдельности его элементы. Номер строки и столбца, на пересечении которых находится задаваемый элемент массива, указываются через запятую в круглых скобках. Например:
» a(1,1)=1; a(1,2)=2; a(2,1)=3;
» a(2,2)=4; a(3,1)=5; a(3,2)=6;
Однако будет намного эффективнее, если до начала прописывания элементов массива, создать массив нужного размера функциями ones (m,n) или zeros(m,n), заполненный единицами или нулями (m – число строк, n – число столбцов).
При вызове этих функций предварительно выделяется память под заданный размер массива, после этого постепенное прописывание элементов нужными значениями не требует перестройки структуры памяти, отведенной под массив.
Использование этих функций возможно и при задании массивов других размерностей. Если после формирования массива Х потребуется, не изменяя элементов массива, изменить его размеры, можно воспользоваться функцией reshape (Х, М, N), где M и N – новые размеры массива Х.
Объяснить работу этой функции можно, только исходя из способа, каким система MATLAB хранит элементы массивов в памяти компьютера. Она хранит их в непрерывной области памяти упорядоченно по столбцам: сначала располагаются элементы первого столбца, вслед за ними расположены элементы второго столбца и т.д. Помимо собственно данных (элементов массива) в памяти компьютера хранится также управляющая информация: тип массива (например, double), размерность и размер массива, другая служебная информация.
Этой информации достаточно для определения границ столбцов. Отсюда следует, что для переформирования матрицы функцией reshape достаточно изменить только служебную информацию и не трогать собственные данные.
Поменять местами строки матрицы с ее столбцами можно операцией транспортирования, которая обозначается знаком .’ (точка и апостроф). Например,
» A=[1 1 1; 2 2 2; 3 3 3];
» B=A.’
B =
1 2 3
1 2 3
1 2 3
Операция ‘ (апостроф) выполняет транспонирование для вещественных матриц и транспонирование с одновременным комплексным сопряжением для комплексных матриц.
Объекты, с которыми работает MATLAB, являются массивами. Даже одно заданное число во внутреннем представлении MATLAB является массивом, состоящим из одного элемента. MATLAB позволяет делать вычисления с огромными массивами чисел также легко как и с одиночными числами, и это является одним из самых заметных и важных преимуществ системы MATLAB над другими программными пакетами, ориентированными на вычисления и программирование. Помимо памяти, необходимой для хранения числовых элементов (по 8 байт на каждый в случае вещественных чисел и по 16 байт в случае комплексных чисел), MATLAB автоматически при создании массивов выделяет еще и память для управляющей информации.
Приложение 1
Рекомендуемые страницы:
Читайте также:
Воспользуйтесь поиском по сайту:
megalektsii.ru