- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ
- •1. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ СИСТЕМЫ MATLAB
- •2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB
- •3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ
- •4. РАБОТА С МАССИВАМИ
- •5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ
- •6. БЛОЧНЫЕ МАТРИЦЫ
- •7.1. Визуализация матриц
- •8. ДИАГРАММЫ И ГИСТОГРАММЫ
- •8.3. Графики функций
- •9. ГРАФИКИ ФУНКЦИЙ
- •10. М-ФАЙЛЫ
- •11. ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
- •12. ОПЕРАТОРЫ ЦИКЛА
- •13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
- •14. ПРЕРЫВАНИЯ ЦИКЛА. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
- •15. ОСНОВНЫЕ ВОЗМОЖНОСТИ ПАКЕТА SIMULINK
- •16. ИНТЕРФЕЙС БРАУЗЕРА БИБЛИОТЕК
- •17. ИНТЕРФЕЙС ОКНА МОДЕЛЕЙ SIMULINK
- •18. СОЗДАНИЕ МОДЕЛИ
- •18.2. Создание модели ограничителя
- •19.2. Соединение блоков
- •21. РАБОТА С УСТАНОВКАМИ MATHCAD
- •22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD
- •22.2. Инициализация переменной
- •22.5. Глобальное определение переменной
- •22.6. Использование комплексных чисел
- •22.7. Константы
- •22.8. Использование констант
- •22.11. Стандартные математические функции
- •22.12. Математические функции
- •22.13. Работа с комплексными числами
- •22.14. Функции округления численных значений
- •22.15. Символьный результат
- •22.16. Вычисление выражений
- •22.19. Матрицы и векторы
- •22.20. Создание массивов
- •22.21. Векторы и матрицы
- •22.22. Начальный индекс массива
- •22.23. Определение массива
- •22.24. Вложенные массивы
- •22.25. Операции с массивами
- •22.26. Транспонирование матриц
- •22.27. Обращение матриц
- •22.28. Векторное произведение
- •22.29. Сумма элементов векторов
- •22.30. Выделение строк и столбцов
- •22.31. Преобразование массивов
- •22.32. Функции для работы с массивами
- •22.32.1. Функция matrix( )
- •23.2. Графики нескольких функций
- •23.4.1. Создание поверхностей
- •23.4.2. Основные настройки трехмерного графика
- •24.3. Логические операторы
- •24.6. Вложенные операторы
- •24.7. Арифметическое выражение в условии
- •24.8. Операторы циклов
- •24.8.1. Сумма квадратов
- •24.9. Рекурсия
- •25.2. Решение нелинейной системы
- •26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD
- •ЗАКЛЮЧЕНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
11.ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
11.1.ВычислениявMatLab
11.1.1. Решениеуравнений
Нахождение корней произвольных уравнений осуществляет встроенная функция fzero, для определения всех корней полиномов применяется roots.
Встроенная функция fzero позволяет приближенно вычислить корень уравнения по заданному начальному приближению. В самом простом варианте fzero вызывается с двумя входными и одним выходным аргументом
x = fzero (‘myf’, x0), где myf – имя файл-функции, вычисляющей левую часть
уравнения; x0 – начальное приближение к корню; x – найденное приближенное значение корня. Решите, например, на отрезке [–5, 5] уравнение
sin x − x2 cos x = 0 .
Перед нахождением корней полезно построить график функции, входящей в левую часть уравнения. Конечно построить график можно при п о-
мощи plot, но все равно понадобится написать файл-функцию, поэтому имеет смысл воспользоваться fplot, которая к тому же позволяет получить более
точный график по сравнению с plot.
Ниже приведен текст требуемой файл-функции:
function y = myf (x)
y = sin (x) – x.^2.*cos (x);
Теперь постройте график myf, используя fplot, и нанесите сетку.
fplot (‘myf’, [–5 5]) grid on
Из графика myf видно, что функция на этом отрезке имеет четыре кор-
ня. Один корень равен нулю, в чем нетрудно убедиться, подставив x = 0 в уравнение.
Уточните значение корня, расположенного вблизи x = –5, при помощи
fzero:
>> x1 = fzero (‘myf’, –5)
Zero found in the interval: [–4.7172, –5.2]. x1 =
–4.7566
Математическое программное обеспечение. Учебное пособие |
-127- |
11.ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
11.1.Вычисления в MatLab
Итак, приближенное значение корня равно –4.7566. Проверьте ответ, вычислив значение функции myf в точке x1:
>> myf (x1) ans =
2.6645e –015
Конечно, то, что значение функции близко к нулю, вообще говоря, не означает, что приближенное значение корня расположено достаточно близко к его точному значению.
Найдите самостоятельно корни x2 и x3, расположенные около –2 и –5. Важной особенностью fzero является то, что она вычисляет только те
корни, в которых функция меняет знак, а не касается оси абсцисс.
В качестве исследуемой функции может выступать и встроенная математическая функция, например,
>> fzero (‘sin’, [2 4])
Zero found the interval: [2, 4]. ans =
3.14159265358979
11.1.2. Вычислениевсехкорнейполинома
Полином в MatLab задается вектором его коэффициентов. Например, для определения полинома
p = x7 + 3.2x5 −5.2x4 + 0.5x2 + x −3
следует использовать команду
>> p = [1 0 3.2 –5.2 0 0.5 1 –3];
Число элементов вектора, т. е. число коэффициентов полинома, всегда на единицу больше его степени, нулевые коэффициенты должны содержаться в векторе.
Функция polyval предназначена для вычисления значения полинома от некоторого аргумента:
>> polyval (p, 1) ans =
–2.5000
Аргумент может быть матрицей или вектором. В этом случае производится поэлементное вычисление значений полинома и результат представля-
Математическое программное обеспечение. Учебное пособие |
-128- |
11.ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ
11.1.Вычисления в MatLab
ет матрицу или вектор того же размера, что и аргумент.
Нахождение сразу всех корней полиномов осуществляется при помощи функции roots, в качестве аргумента которой указывается вектор с коэффици-
ентами полинома. Функция roots возвращает вектор корней полинома, в том числе и комплексных:
>> r = roots (p) r =
–0.5668 + 2.0698i –0.5668 – 2.0698i
1.2149
0.5898 + 0.6435i
0.5898 – 0.6435i –0.6305 + 0.5534i –0.6305 – 0.5534i
Число корней полинома, как известно, совпадает со степенью полинома. Убедитесь в правильности работы roots, вычислив значение полинома от вектора его корней:
>> polyval (p, r) ans =
1.0e–012 * –0.1008 + 0.0899i –0.1008 – 0.0899i –0.0666
0.0027 – 0.0018i
0.0027 + 0.0018i
0.0102 – 0.0053i
0.0102 + 0.0053i
Обратите внимание, что в верхней строке результата содержится общий множитель 1.0е–012, на который следует помножить каждое число получившегося вектора.
Математическое программное обеспечение. Учебное пособие |
-129- |