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

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

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





 

Основу многих расчетов составляют вычисления значений арифметических выражений. В качестве операндов этих выражений могут выступать константы, вещественные и комплексные переменные, элементарные и специальные функции. Одной из главных особенностей 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. Нарушение авторских прав; Мы поможем в написании вашей работы!




Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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

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

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

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

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

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

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