Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы (часть 1).doc
Скачиваний:
13
Добавлен:
14.11.2019
Размер:
654.85 Кб
Скачать

1.2. Практическое вычисление функций.

Обычно элементарные функции: sin x, cos x, ln x, ex и т.д. вычисляются с помощью

полиномов или дробно-рациональных функций.

В МATLAB тригонометрические функции используются так: sin(x), cos( x),tan(x),cot(x),

sec(x), csc(x). Для обратных впереди ставится a , а для гиперболических в конце h.

Например, acos( x) и sinh(x). Аргумент и результат записываются в радианах. В

качестве идентификатора используется pi.

Логарифмы вызываются в МATLAB: log(x). Основание логарифма подписывается к

концу символа: log10(x).

Особенностью разложения в ряд Тейлора является рост ошибки с ростом х вблизи

точки х = 1, хотя сама по себе ошибка ограничения может быть очень малой. При

разложении элементарных функций в ряд с помощью полиномов Чебышева можно

минимизировать ошибку в диапазоне 0<x<1. Но использование этих полиномов

приводит к более сложным формулам.

Ряды Тейлора и Чебышева могут быть представлены в виде структуры:

(1.7)

Часто ряд используется в виде:

(1.8)

В ТАУ одной из основных математических моделей элементов и систем являются передаточные функции (ПФ), которые являются дробно-рациональными функциями вида:

. (1.9)

Функции (1.7) и (1.8) называются рациональными, а коэффициенты ai и bj - вещественные числа, где

i = 0, 1,…, n , а j = 0, 1,…, m. Аргумент x в ПФ является оператором Лапласа. Обычно n≥m, поэтому часто используют один индекс nm. Если записать полиномы числителя и знаменателя по формуле (1.8), то ПФ будет записана в иной форме, которая также часто используется в литературе. Переход от вида (1.7) к виду (1.8) можно выполнить для вектора коэффициентов по алгоритму пересчета an-i=ai в цикле по i от 0 до n.

В МATLAB вектор коэффициентов вводится так:

a = [1 3 3 1];

А цикл: for i = 1:n (тело цикла) end

Особенности:

- идентификаторы a и A - разные переменные;

- любой идентификатор – это либо вектор, либо матрица;

- индексы векторов и матриц могут начинаться только с 1;

Следовательно, принятые в ТАУ обозначения индексов коэффициентов вступают в противоречие с правилами МATLAB. Поэтому цикл следует выполнять так:

function prb

n=4; %число коэффициентов уравнения

a=[1 3 4 5];

for i=1:n

d(i)=a(n+1-i)

end

display(d)

По умолчанию счетчик цикла изменяется на 1. А результат записывается в новый вектор d, чтобы сохранить исходный вектор коэффициентов a.

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

Вернемся к полиномам. Если (1.7) приравнять 0, то получим алгебраическое уравнение (в ТАУ- характеристическое уравнение системы):

. (1.10)

Особенностью характеристического уравнения для устойчивых систем управления является то, что его коэффициенты положительны, т.е. не допускается отсутствие коэффициентов при x во всех степенях от 0 до n: необходимое условие устойчивости.

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

Нас будет интересовать алгоритм расчета корней характеристического уравнения (1.10). Перечислим сначала некоторые его свойства:

- число корней равно степени n,

- корни могут быть нулевыми, комплексно-сопряженными (вещественными и мнимыми). Они могут быть кратными.

- для нечетной степени n обязателен один вещественный корень,

- любой из корней не может превзойти по модулю число К=1+ , где A наибольшее из чисел .

Наиболее простой способ определения корней уравнения (1.10) – графический. Для этого следует построить функцию (1.7) и точки пересечения ее с осью абсцисс будут корнями характеристического уравнения.

function grf

a=[1 3 3 1];

x=-1.5:0.01:0;

f=a(1)*x.^3+a(2)*x.^2+a(3)*x+a(4);

plot(x,f); grid on

hold on

a=[1 1 1 1];

f=a(1)*x.^3+a(2)*x.^2+a(3)*x+a(4);

plot(x,f)

Вектор x состоит из отрицательных значений от – 2 до 0 с шагом 0.01. При возведении его в степень требуется ставить . перед знаком ^ , тогда будут возводиться в степень элементы вектора x. В противном случае будет умножение вектора на вектора. Отсутствие точки с запятой (;) дает возможность разблокировать оператор plot(x,f), т.е. получить результат.

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