русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Разложение функции в ряд Тейлора


Дата добавления: 2015-06-12; просмотров: 5335; Нарушение авторских прав


 

Приборы и оборудование:

– компьютер, с установленной операционной системой Windows XP, Vista, 7, 8;

Matlab (ver 6.0 и выше)

 

Цели работы:

1. знакомство с символьными переменными и некоторыми функциями Symbolic toolbox;

2. разложение функции в ряд Тейлора в окрестности заданной точки.

 

Содержание работы:

1. Изучить символьные переменные и некоторые функции Symbolic toolbox.

2. Выполнить практические задания и сделать соответствующие выводы.

3. Оформить отчет.

 

Форма отчетности: индивидуальный отчет в электронном виде с типовым титульным листом в формате MS Word с последующей распечаткой на бумажном носителе.

 

Содержание отчета:

1. Цель работы.

2. Текст задания.

3 Результат выполнения задания (необходимые расчеты, блок-схемы, тексты и результаты работы программ).

4. Выводы в развернутой форме с соответствующими пояснениями.

 

 

Длительность работы: 4 академических часа.

 

Защита работы: собеседование с преподавателем по контрольным вопросам и выполнение индивидуальных заданий.

 

Символьные переменные

 

Символьные переменные и функции являются объектами класса sym, в отличие от числовых переменных, которые содержатся в массивах double array. Символический объект создается при помощи функции syms. Команда

 

>> syms x a b

 

создает три символьные переменные x, a и b.

Конструирование символьных переменных от переменных класса sym производится с использованием обычных арифметических операций и обозначений для встроенных математических функций, например

 

>> f=5*x^2+6*x-4

f =

5*x^2 + 6*x - 4

 

>> g=sin(x)*cos(x)^2

g =

cos(x)^2*sin(x)

 

Размер памяти, отводимый по умолчанию под символьные переменные, достаточно большой – посмотрите информацию об определенных только что переменных в окне Workspace браузера рабочей среды или вызовите команду whos:



 

>> whos x a b f g

Name Size Bytes Class

 

a 1x1 126 sym

b 1x1 126 sym

f 1x1 184 sym

g 1x1 184 sym

x 1x1 126 sym

 

Символьные операции позволяют находить точные значения выражений или значения со сколь угодно большой точностью. Для преобразования значения числовой переменной в символьную служит функция sym. Введите массив типа double array

 

>> A=[rand(1) 1.4 sin(5);

-8 1/3 exp(-2)]

A =

0.1270 1.4000 -0.9589

-8.0000 0.3333 0.1353

 

и образуйте соответствующий ему символьный массив

 

>> B=sym(A)

B =

[ 4575182228323196*2^(-55), 7/5, -8637222012098867*2^(-53)]

[ -8, 1/3, 4875967449235916*2^(-55)]

 

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

 

>> c=sym(sqrt(2))

c =

sqrt(2)

>> cn=vpa(c,20)

cn =

1.4142135623730950488

>> cn=vpa(c,40)

cn =

1.41421356237309504880168872420969807857

 

Рассмотрим операции с полиномами.

Функция collect вычисляет коэффициенты при степенях независимой переменной.

Функция expand представляет полином суммой степеней без приведения подобных.

Символьные переменные разлагаются на множители функцией factor.

 

>> p=x^3+2*x-3

p =

x^3 + 2*x - 3

 

>> g=factor(p)

g =

(x - 1)*(x^2 + x + 3)

 

>> f=collect(g)

f =

x^3 + 2*x - 3

 

>> f-p

ans =

 

Для представления символьного полинома в векторном виде используется функция sym2poly, а для обратного преобразования функция poly2sym.

Пример. Найти произведение полиномов

с использование символьных переменных и преобразовать результат к векторному виду.

 

% файл-сценарий вычисления произведения полиномов

clear all

close all

clc

syms x % определение символьной переменной

% перемножение полиномов

PSym2=(x+5)*(x-4)*(2*x+3)*(x^2+2*x+5)

% раскрытие скобок

PSym3=collect(PSym2)

% представление полинома в виде массива коэффициентов

PPoly3=sym2poly(PSym2)

 

 

Разложение функции в ряд Тейлора

 

Разложение математических функций в ряд Тейлора позволяет определить функция taylor, например:

 

>> syms x

>> taylor(sin(x))

ans =

x^5/120 - x^3/6 + x

 

По умолчанию выводятся шесть членов ряда разложения в окрестностях точки ноль. Число членов разложения можно задать во втором дополнительном параметре. Точка, в окрестности которой проводится разложение, указывается в третьем входном аргументе.

Например, получим 8 членов разложения функции в окрестности точки .

>> g=taylor(sin(x),8,1)

ans =

sin(1) - (sin(1)*(x - 1)^2)/2 + (sin(1)*(x - 1)^4)/24 - (sin(1)*(x - 1)^6)/720 + cos(1)*(x - 1) - (cos(1)*(x - 1)^3)/6 + (cos(1)*(x - 1)^5)/120 - (cos(1)*(x - 1)^7)/5040

 

Это соответствует выражению

Убедимся в то, что в точке значения функции и ряда Тейлора совпадают:

 

>> subs(g,x,1)

ans =

0.8415

 

>> sin(1)

ans =

0.8415

 

Для более наглядного представления функции можно использовать функцию pretty:

 

>> pretty(g)

 

Так как ряд Тейлора представляет собой полином, то всегда можно перейти от символьного представления к векторному

 

>> v=sym2poly(g)

ans =

-0.0001 -0.0004 0.0093 -0.0012 -0.1656 -0.0005 1.0002 -0.0000

 

и построить график функции на заданном отрезке

 

>> x=0:0.001:2;

>> f=polyval(v,x);

>> plot(x,f)

 

С увеличением числа членов ряда растет точность приближения исходной функции в окрестности точки, относительно которой проводится разложение. На рис. 6.1-6.2 представлены графики функции и рядов Тейлора для данной функции с заданным числом членов разложения.

Рис. 6.1. Графики функции и ее аппроксимации

Рис. 6.2. Графики функции и ее аппроксимации вблизи точки, относительно которой происходит разложение в ряд Тейлора

 

В состав Symbolic Math Toolbox входит приложение taylortool с графическим интерфейсом, предназначенное для наглядной демонстрации разложения в ряд различных функций, в том числе и определенных пользователем. Команда taylortool приводит к появлению окна приложения, изображенного на рис. 6.3.

 

Рис. 6.3. Пример работы приложения taylortool. Синим показана исходная функция, а красным – частичная сумма ряда Тейлора

 

Пользователь может вводить формулы различных функций в строке f(x)= в соответствии с правилами MATLAB и исследовать приближение функции на произвольном интервале отрезком ряда Тейлора, содержащим различное число членов разложения. Интерфейс приложения taylortool достаточно простой и не требует дополнительных пояснений.

 

Пример. Построим график ошибки и модуля ошибки для функции f=sin(x) при использовании аппроксимации полиномом третьей степени на отрезке [-2; 2].

 

% интервал разбиения с небольшим шагом

t=-2:0.01:2;

N=numel(t); % число узлов разбиения

% исходная функция

f=sin(t);

 

syms x

% частичная сумма ряда Тейлора при n=3 g(x,3)

g3=taylor(sin(x),3,0);

g=subs(g3,x,t);

% график функции и ее разложения в ряд Тейлора

% figure

% plot(t,f,t,g)

% grid on

% ошибка аппроксимации

e=f-g;

% абсолютное значение ошибки аппроксимации

e1=abs(e);

% графики ошибки и модуля ошибки

figure

plot(t,e,t,e1)

grid on

legend('e','e_1')

 

 



<== предыдущая лекция | следующая лекция ==>
Задание 5.1. | Задание 6.1.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.975 сек.