Лабораторная работа №4 «Пределы последовательностей. Степенные ряды» Цель: изучить возможности Matlab в модульном программировании и итерационных вычислениях. 1. Сценарии и функции Matlab является мощным языком программирования. Файлы, которые содержат код на языке Matlab, называются М-файлами. Существует два вида М-файлов: Сценарии, которые не имеют входных и выходных аргументов. Они оперируют с данными из рабочего пространства. Функции, которые имеют входные и выходные аргументы. Они оперируют с локальными переменными. При разработке многих М-файлов, их необходимо сгруппировывать в отдельные директории и персональные пакеты программ (toolboxes). Для этого вам необходимо добавить их маршрут поиска Matlab. Если в директориях поиска Matlab имя некоторой функции повторяется, то Matlab выберет только ту, которая встретится первой. Чтобы увидеть содержание М-файла, например, myFunction.m необходимо набрать >> type myFunction Сценарии. Когда вызывается сценарий, Matlab просто вызывает команды, содержащиеся в файле. Сценарии могут оперировать существующими данными в рабочем пространстве или они могут сами создавать эти данные. Хотя сценарии не возвращают значений, все переменные, которые они создают, остаются в рабочем пространстве для использования в последующих вычислениях. В добавление к сказанному, сценарии могут осуществлять графический вывод, используя такие функции как plot. Функции. Функции — это М-файлы, которые могут иметь входные параметры и возвращать выходные параметры (m-функция). Имя М-файла и функции должно быть одним и тем же. Функции работают с переменными в пределах их собственного рабочего пространства, отделенного от рабочего пространства, с которым вы оперируете в командной строке Matlab, т.е. mфункции работают с так называемыми локальными переменными, которые в общем рабочем пространстве Matlab не видны. Пример m-функции, хранящейся в файле sQd.m: function f=sQd(n) i=1; sum=0; while i<n if n>1e4, break; sum=sum+10*n^3/(n^2+4*n+1e4); i=i+1; end; f=sum; Первая строка начинается со ключевого слова function. Здесь происходит задание имени функции со списком аргументов. В примере приведена функция, в которой используется один входной аргумент и один выходной параметр. Переменные f, n, i, sum являются локальными переменными и в рабочем пространстве Matlab отделены от переменных основной области, которые по отношению к данной функции будут являться внешними, или глобальными. Глобальные переменные. Если нужно, чтобы более одной функции использовали отдельную копию переменной, просто объявите её как global во всех функциях. Делайте то же самое в командной строке, если вы хотите, чтобы основное рабочее пространство получило доступ к переменной. Определение global должно быть до самой переменной, используемой в функции. Хотя это не обязательно, использование больших букв для имени глобальной переменной поможет отличить их от других переменных. 2. Вычисление пределов, сумм и произведений рядов Пределы. Команду limit можно использовать для вычисления правых и левых пределов и пределов бесконечности. Например, >>syms x; ans= 1 limit(sin(x)/x, x, 0) sin( x) lim x x0 : Для вычисления односторонних пределов используйте параметры 'right' и 'left'. Например, >>limit(abs(x)/x, x, 0, 'left') ans= -1 Пределы бесконечности можно вычислять, используя символ Inf: >>limit((x^4+x^2-3)/(3*x^4-log(x)), x, Inf) ans= 1/3 Суммы и произведения. Конечные числовые суммы и произведения можно легко вычислить, используя векторные возможности программы Matlab и команды sum и prod. Например: >> X = 1:7; 2 >> sum(X) ans = 28 >> prod(X) ans = 5040 Можно находить конечные и бесконечные суммы в символьной форме, используя команду symsum. В качестве примера ниже представлена сумма с вложением ряда 1 1 . 1 k k 1 k n >> syms k n; >>symsum(1/k-(1/(k+1)),1,n) ans= -1/(n+1)+1 А это хорошо известная бесконечная сумма >>symsum(1/n^2,1,Inf) ans= 1/6*pi^2 1 . 2 n n 1 Другой знакомый пример – это сумма бесконечной геометрической прогрессии >>syms a k; >>symsum(a^k,0,Inf) ans= -1/(a-1) Обратите внимание, что ответ верен только при условии 1 a 1 . 3 3. Задание к лабораторной работе Задание 1. 1. Последовательности an , bn представьте в Matlab с помощью «Функций» (отдельных m-файлов, так называемых m-функций). Для каждой последовательности создайте отдельный m-файл (m-функцию). Дайте название каждой функции. В качестве входного параметра функции укажите один аргумент – номер элемента в последовательности. Выходным параметром функции сделайте значение n -ого элемента последовательности. 2. Создайте m-файл основной программы, которая будет вызывать mфункции для вычисления n -ого элемента последовательностей. Воспользуйтесь циклом while, чтобы оценить пределы последовательностей an , bn , если они существуют, с точностью 10 4 и соответствующие порядковые номера N . 3. Изобразите в виде графиков характер поведения этих последовательностей в одних координатных осях. С помощью функции text создайте метку над каждым графиком последовательности в виде формулы для вычисления члена ряда. 4. Запишите каждую последовательность в символьном виде. Изучите функцию limit и найдите с помощью нее значение предела аналитическим способом. Задание 2. 1. Выберите любую из приведенных последовательностей с нулевым пределом и найдите сумму соответствующего ряда при n=1,2,... с точностью 10 4 (или покажите, что ряд расходится). 2. Постройте зависимость суммы ряда от номера крайнего члена в отдельном графическом окне. Подпишите соответствующие оси. Дайте название графику. 3. Найдите сумму выбранной последовательности аналитически на основе символьных вычислений Matlab. Для вычисления суммы последовательности используйте функцию symsum. Результатом работы должны явиться две m-функции и программа (М-файл) для анализа последовательностей. Все строки программ снабдите комментариями. 4 4. Варианты заданий к лабораторной работе №4 bn an Вариант 3n 1n 1 cos(1 n) n 1. 1 3 n 2. arctg ( n 2 ) 1n 1 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 1 1 n 1n n arctg n 2 1 1n1 2 n! ln 1 1 n 1 n 2n 2 ln 12 n 2 1 3 n2 n sin( 5 n) 14. 1 1 sin n n 15. 2 n n! 2n ! n2 e n sin(2 n) 1 1 1 3 nn 2 n n ln( n) n 3 2 n 50 3 1 2 n n2 arcsin 1 1 n 1 1n sin n n 1 n2 ln n 1 n 1 2 n ! n n n 1 n n3 1 1 n2 1 1 1 1 2 n 1n 1 2 n 1 (2 n 1)! 6 n2 5 n 2 n2 1n 22n 2n !4n 1 1 nn 1 n arctg n 2 1 n 1 16. 1 2 n n 1 3 n6 2 5 1 17. n ln n 18. 1n 1 e 2n 2 n 19. 1 k ln n k 1 20. 1n 1 2n 12 21. 22. 23. 24. 25. e 8 1 n 1 5n n! 6n 15n 2 n 1n 3 1n 2n 1 2n 1! ln n 1n 1 nn 1 1 tg n n 1n n!n 1! 2n 12 1 n sin n 2 n 1 2 1 1 ln 1 n n 1 1 cos 1n n n 1 n3 2n 3 n n! 3 n ! 1 ln( n) n 2 6