Студопедия — Арифметические вычисления
Студопедия Главная Случайная страница Обратная связь

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

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






 

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



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

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

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

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

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

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