Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Арифметические вычисления





 

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

Основным типом данных, с которыми работает MATLAB, являются массивы. Чаще всего в математических вычислениях используются одно мерные (векторы) и двумерные массивы (матрицы).

Чтобы задать вектор-строку, то есть массив размера 1 × n, необходимо заключить ее элементы в квадратные скобки, разделив их запятыми или пробелами.

>> a = [1 2 3]

a =1 2 3

Вектор-столбец задается похожим образом, только в качестве разделителя следует использовать точку с запятой.

>> b = [1; 2; 3]

b =

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

>> b'

ans =1 2 3

Для формирования матрицы применяются оба типа разделителей.

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

A =

1 2 3

4 5 6

7 8 9

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

Функция zeros, например, используется для создания матриц, заполненных нулями.

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

С помощью функции eye можно построить единичную матрицу.

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

Функция magic строит магический квадрат – матрицу, у которой сумма элементов каждой строки, каждого столбца и каждой диагонали одинакова.

>> magic(3)

ans =

8 1 6

3 5 7

4 9 2

Элементами массивов могут быть вещественные и комплексные числа с плавающей точкой.

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

В MATLAB вещественные числа по модулю могут находится в интервале [10−308,10308].

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

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

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

Таким образом, правильная запись в MATLAB числа −1234.5678 должна иметь следующий вид.

>> -1.2346e+003

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

>> -1234.5678

ans =

-1.2346e+003

>> -1.2346*10^3

ans =

-1.2346e+003

Количество значащих десятичных цифр при вычислениях в MATLAB может достигать 15-16. Однако для большей компактности результата при выводе в командное окно часть значащих цифр обычно отбрасывается.

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

>> format long

>> pi

ans =

3.14159265358979

>> format short

>> pi

ans =

3.1416

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

Если происходит переполнение разрядной сетки, то есть результат операции выходит за рамки диапазона, допустимого для чисел с плавающей точкой, то MATLAB возвращает в качестве результата внутреннее представление бесконечности (Inf).

>> 1/0

ans =

Inf

В тех случаях, когда результат не определен, что происходит, например, при делении 0 на 0, возвращается специальная константа NaN (Not aNumber).

>> 0/0

ans =

NaN

Комплексные числа в MATLAB представляются в памяти компьютера парой чисел с плавающей точкой и записываются в форме a+bi (или a+bj), где символом i (или j) обозначается мнимая единица. Обрати те внимание, что символ операции умножения между мнимой единицей и мнимой частью комплексного числа ставить не следует. Это связано с тем, что система MATLAB допускает пере обозначение переменных i и j,>> z = 5+7i

z =

5.0000 + 7.0000i

С помощью функций real и imag можно выделить вещественную и мнимую части комплексного числа.

>> real(z)

ans =5

>> imag(z)

ans =7

Функция complex позволяет сконструировать комплексное число из упорядоченной пары вещественных чисел.

>> complex(3, 5)

ans =

3.0000 + 5.0000i

Функция conj возвращает комплексно-сопряженное число (символом комплексного сопряжения в MATLAB является также апостроф).

>> z’

ans =

5.0000 - 7.0000i

Модуль и аргумент комплексного числа можно вычислить при помощи функций abs и angle.

>> abs(z)

ans =

8.6023

>> angle(z)

ans =

0.9505

При работе в MATLAB необходимо учитывать две существенные особенности реализации арифметических вычислений в этой системе.

Во-первых, в MATLAB все скалярные переменные трактуются как массивы размера 1 × 1. Действительно, если присвоить следующие значения переменным и с помощью команды whos вывести в командное окно информацию об этих переменных, то можно увидеть, что обе скалярные переменные рассматриваются системой MATLAB как одноэлементные векторы из чисел с плавающей точкой (doublearray и doublearray(complex

>> x = 2;

>> y = 1-i;

>> a = [1 2 3];

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

>> whos

Name Size Bytes Class

A 3x3 72 double array

A 1x3 24 double array

x 1x1 8 double array

y 1x1 16 double array (complex)

Grand total is 26 elements using 216 bytes

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

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

>> a + x

ans =

3 4 5

>> A - x

ans =

-1 0 1

2 3 4

5 6 7

Второй особенностью арифметики MATLAB является наличие в этой системе двух комплектов символов для операций умножения, деления и возведения в степень. Один набор операций имеет традиционную символику (*, /, ^) и выполняется для массивов по правилам линейной алгебры.

Второй набор имеет ту же символику, перед которой ставится точка(.*,./,.^), при этом операции выполняются поэлементно.

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

Различия между традиционными и поэлементными операциями удобно рассмотреть на примерах.

>> A = [1 2; 3 4];

>> B = [2 4; 6 8];

>> b = [5; 6];

>> C = [1 2 3; 4 5 6];

>> D = [-4 5 -6; 1 -2 3];

Умножение матриц и векторов в линейной алгебре возможно только в том случае, если число столбцов первого сомножителя равно числу строк второго. Операция правого деления двух матриц эквивалентна умножению делимой матрицы на обратную матрицу делителя (A/B = AB−1).

>> A*b

ans =

>> B/A

ans =

2 0

0 2

Поэлементное умножение или деление массивов осуществимо толькотогда, когда они имеют одинаковые размеры.

>> C.*D

ans =

-4 10 -18

4 -10 18

>> C./D

ans =

-0.2500 0.4000 -0.5000

4.0000 -2.5000 2.0000

В линейной алгебре возведение в степень может быть осуществлено только в случае квадратной матрицы.

>> A^3

ans =

37 54

81 118

Операцию поэлементного возведения в степень можно применить к любой матрице.

>>A.^3

ans =

1 8

27 64

>>C.^2

ans =

1 4 9

16 25 36

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

- sqrt(x) – квадратный корень;

- exp(x), log(x) – экспонента и натуральный логарифм;

- sin(x), cos(x), tan(x), cot(x), sec(x), csc(x) – тригонометрические функции;

- asin(x), acos(x), atan(x), acot(x), asec(x), acsc(x) –обратные тригонометрические функции;

- sinh(x), cosh(x), tanh(x), coth(x), sech(x), csch(x) – гиперболические функции;

- asinh(x), acosh(x), atanh(x), acoth(x), asech(x), acsch(x)обратные гиперболические функции;

- erf(x) – функция ошибок;

- gamma(z) — гамма-функция;

- airy(z), airy(2,z) — функции Эйри первого и второго порядка;

- besselj(k,z), bessely(k,z), besseli(k,z), besselk(k,z)

- функции Бесселя первого и второго рода и модифицированные функции Бесселя.

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

>> atan(1)

ans =

0.7854

>> sqrt(1+i)

ans =

1.0987 + 0.4551i

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

>> exp([1 2 3 4 5])

ans =

2.7183 7.3891 20.0855 54.5982 148.4132

>> A = [ pi/2 pi/3; pi/6 -pi/2]

A =

1.5708 1.0472

0.5236 -1.5708

>> sin(A)

ans =

1.0000 0.8660

0.5000 -1.0000


 

.







Дата добавления: 2015-09-15; просмотров: 612. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


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

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

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

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

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

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Studopedia.info - Студопедия - 2014-2025 год . (0.014 сек.) русская версия | украинская версия