21
ЛАБОРАТОРНАЯ РАБОТА №3 ИССЛЕДОВАНИЕ ПРИБЛИЖЕНИЯ ФУНКЦИИ РЯДОМ ТЕЙЛОРА В ОКРЕСТНОСТИ НЕКОТОРОЙ ТОЧКИ В ПРОГРАММЕ SCILAB Цели работы: углубление и расширение теоретических знаний о про- граммном обеспечении ПК; овладение практическими навыками работы с програм- мой SciLab. Краткое описание программы SciLab Среди свободного программного обеспечения широкую известность и заслуженную популярность приобрела система математических расчетов SciLab. Интерфейс SciLab. Внешний вид главного окна программы SciLab показан на рис. 1. Взаимодействие с пользователем организовано в виде командной строки. В главном окне помимо ввода команд выводятся результаты вычислений. Для представления графи- ческой информации, например графиков функций, использу- ется графическое окно, открыть которое можно с помощью команды меню «Graphics Window 0 -> Set (Create) Window».

ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

ЛАБОРАТОРНАЯ РАБОТА №3

ИССЛЕДОВАНИЕ ПРИБЛИЖЕНИЯФУНКЦИИ РЯДОМ ТЕЙЛОРА

В ОКРЕСТНОСТИ НЕКОТОРОЙ ТОЧКИВ ПРОГРАММЕ SCILAB

Цели работы:• углубление и расширение теоретических знаний о про-

граммном обеспечении ПК;• овладение практическими навыками работы с програм-

мой SciLab.

Краткое описание программы SciLab

Среди свободного программного обеспечения широкую известность и заслуженную популярность приобрела система математических расчетов SciLab.

Интерфейс SciLab.Внешний вид главного окна программы SciLab показан

на рис. 1. Взаимодействие с пользователем организовано в виде командной строки. В главном окне помимо ввода команд выводятся результаты вычислений. Для представления графи-ческой информации, например графиков функций, использу-ется графическое окно, открыть которое можно с помощью команды меню «Graphics Window 0 -> Set (Create) Window».

Page 2: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Рис. 1 Главное окно SciLab

Использование SciLab в качестве калькулятора. Для набора выражения используются клавиатура. Например, для

расчёта выражения 3225,69

4 необходимо набрать

(22+5.69)^(1/3)/4. Для немедленного вычисления необходимо нажать Enter. При наборе используются обычные математиче-ские операции +-*/. Возведение в степень обозначается крыш-кой ^. Результат отображается в виде ans=0.7563352. Если пользователь не указал какой переменной нужно присвоить результат вычислений, то результат присваивается встроен-ной переменной с именем ans. Если не требуется вывода ре-зультата на экран, то в конце вводимой строки следует поста-вить точку с запятой.

При более сложных вычислениях можно использовать переменные. Присвоить значение переменной можно, к при-

2

Page 3: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

меру, так: a=5.5. В качестве имени переменной можно исполь-зовать произвольную последовательность символов, которая начинается не с цифры. Имена переменных ЧУВСТВИТЕЛЬ-НЫ к регистру.

Значение переменной доступно ниже её определения. Для вывода значения переменной достаточно набрать в ко-мандной строке её имя и нажать Enter. Если точность вывода недостаточна, можно использовать функцию printf, формат которой совпадает с аналогичной функцией языка C. Напри-мер, чтобы вывести значения вещественной переменной b с точностью 12 знаков после запятой, необходимо написать printf("%1.12f",b).

Программа SciLab имеет много встроенных недоступных для изменения переменных, некоторые из них приведены ниже:

%i — мнимая единица,%pi — число пи%e — число е (экспонента)%eps — условные ноль (самое близкое к нулю

вещественное число)%inf — бесконечность.%t — логическая истина,%f — логическая ложь.

Для ввода текстового комментария необходимо ввести знак двойного слеша //, затем вводить текст.

Программа SciLab имеет много встроенных элементар-ных функций. В таблице 1 приведены наиболее часто исполь-зуемые из них. Полный перечень элементарных функций до-ступен в справочной системе пакета.

3

Page 4: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Таблица 1Элементарные функции пакета SciLab.

Имяфункции

Описание

abs модуль числа или длина вектораacos арккосинус

acosh арккосинус гиперболическийand логическая Иasin арксинусasin арксинус гиперболическийatan арктангенс atanh арктангенс гиперболическийceil округление вверхcos косинусcosh косинус гиперболическийcotg котангенсcoth котангенс гиперболическийexp экспонента eye формирование единичной матрицы

factor разложение на простые множителиfloor округление внизlog натуральный логарифм

log10 десятичный логарифмlog2 логарифм по основанию 2

4

Page 5: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Имяфункции

Описание

max максимальное значение вектораmin минимальное значение вектораnot логическое НЕor логическое ИЛИ

rand генератор случайного числаround округлениеsign знак аргументаsin синусsinc sin(x)/xsinh синус гиперболический sqrt квадратный кореньtan тангенсtanh тангенс гиперболический

Сессию работы со SciLab можно записать в файл. Для этого необходимо выполнить команду save('my_file'). Полу-ченный файл в дальнейшем можно загрузить с помощью ко-манды load.

Команда diary('file-name') служит для записи копии те-кущей сессии Scilab в текстовый файл, например, diary('D:/slon/my_example.txt') // открыли сессию записи...// Работаем в SciLab, все записи главного окна копируются...//в текстовый файлdiary(0) // закрыли сессию записи

5

Page 6: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Все, что находится в главном окне Scilab между ко-мандой diary('file-name'), открывающей запись сессии, и ко-мандой diary(0), закрывающей запись, будет записано в файл.

Задание. Вычислите значения функций

234 1

xxxy

++= ,

8)(2 xarctgy = ,

=

−2

2

2lnx

ey

для трёх значений x=4,5,6 .

Векторы и матрицы. Программа SciLab обладает бога-тыми возможностями работы с векторами и матрицами. Более того, все переменные она считаем матрицами. Обычная ска-лярная переменная — это матрица (или вектор) из одного компонента. Чтобы переменной v присвоить значение векто-ра-строки необходимо писать v=[3 5 6 4 8]. Здесь квадратные скобки обозначают вектор, элементы разделяются пробелом или запятыми. Вектор-столбец определяется либо с помощью транспонирования (операция апостроф) v1=[3 5 6 4 8]', либо элементы вектора разделяются точкой с запятой v1=[3; 5; 6; 4; 8].

Матричные переменные задаются аналогично. При этом элементы одной строки отделяются друг от друга пробелом или запятыми, а строки отделяются точкой с запятой. Напри-мер, переменная М — есть матрица размером 3х3, а перемен-ная N — вектор-столбец размером 3x1:-->M=[1 2 3; 4 6 8; -1 2 4]

M = 1. 2. 3. 4. 6. 8. 1. 2. 4.

6

Page 7: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

-->N=[4; 6; 1]N = 4. 6. 1.

M= 1 2 3 4 6 8 −1 2 4 , N=4

6 1 .

SciLab позволяет выполнить все допустимые операции с мат-рицами. Например, обратную матрицу получаем, указав (–1) степень, а операция транспонирования обозначается апостро-фом.-->M^(-1) ans = 4. - 1. - 1. - 12. 3.5 2. 7. - 2. - 1.

-->M' ans = 1. 4. - 1. 2. 6. 2. 3. 8. 4.

−−−

−−=−

12725.312114

1M ,

−=

493262141

ТM

Доступ к элементу матрицы производится по индексу, отсчи-тываемому от 1. Вектор имеет один индекс, который вводится

7

Page 8: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

при помощи круглых скобок. Например, значения компонен-тов вектора N можно вывести так:

-->N(1) ans = 4. -->N(2) ans = 6. -->N(3) ans = 1.

Двумерный массив имеет уже два индекса, также отсчи-тываемые от 1, первый из них нумерует строки, второй — столбцы. Так, для матрицы M имеем:-->M(1,1) ans = 1. -->M(1,2) ans = 2. -->M(1,3) ans = 3.

Легко вычислить скалярное произведение векторов-->[3 -8 2]*[-2 4 1]' ans = - 36.

8

Page 9: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

36142

28

3−=

−⋅

− .

Поэлементные вычисления над матрицами выполняются с помощью операции векторизации. При этом операции производятся над каждым элементом вектора независимо:-->[3 -8 2].*[-2 4 1] ans = - 6. - 32. 2.

3 −8 2 .∗−2

4 1 =−6

−322 .

В Scilab разрешены следующие операции над матрицами:' транспонирование,+ сложение,- вычитание,* умножение,\ левое деление,/ правое деление,^ возведение в степень,.* поэлементный способ умножения,.\ поэлементный способ левого деления,./ поэлементный способ правого деления,.^ поэлементный способ возведения в степень.

В следующем примере с помощью векторизации получа-ем решения квадратного уравнения для нескольких исходных данных:-->a=[1 5 4 8];-->b=[-5 0 10 20];-->c=[6 -125 2 3];-->(-b+sqrt(b.^2-4*a.*c))./(2*a)

9

Page 10: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

ans = 3. 5. - 0.2192236 - 0.1602753 -->(-b-sqrt(b.^2-4*a.*c))./(2*a) ans = 2. - 5. - 2.2807764 - 2.3397247

При определении вектора допустим следующий способ: x=[xmin:delta:xmax], например x=[0:0.1:4*%pi].

Построение графиков функций. Табулирование функ-ций и построение их графиков можно выполнить двумя спосо-бами.

1 способ.Задать интервал изменения аргумента в видех=[Начальное_Значение:Шаг:Конечное_Значение]

Например,-->х=[0:0.1:20].Если Шаг=1, то его можно не использовать:-->х=[0:20].Теперь можно вычислить значения функции, например-->y=x.*cos(x);Здесь нужно иметь в виду, что х является вектором, поэтому для поэлементного вычисления значений функции необходи-мо использовать соответствующие поэлементные математиче-ские операции (здесь поэлементное умножение .*). Далее для построения графика необходимо воспользоваться командой plot(x,y). Откроется графическое окно с графиком. Свойства графика (цвет, толщина, стиль линий, настройка осей) можно изменять с помощью меню графического окна. Повторный вызов команды plot с другим вектором y добавляет еще одину линию, например-->y=x.*sin(x);

10

Page 11: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

-->plot(x,y)В результате получим окно с графиками, изображенное на рис.2.

Рис. 2 Графическое окно

Для построение графика функций двух переменных необходимо сначала сформировать матрицу значений функ-ции, например так:-->x=-5:0.5:5;-->y=-5:0.5:5;-->z=10*(exp((-x^2)/20))'*(exp((-y.^2)/20));а затем с помощью команды plot3d(x,y,z) построить график (рис.3).

11

Page 12: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Рис. 3 График функции двух переменных

Сценарии. Файл сценария --- это список команд SciLab, сохраненный на диске. Для удобства работы со сценариями в комплекте SciLab имеется текстовый редактор (пункт меню Editor). Сценария сохраняются в виде файлов с расширением sce. Загрузить сценарий на исполнение можно двумя способа-ми:– с помощью пункта меню Execute->Load into SciLab

встроенного радактора– с помощью команды exec('Путь к файлу сценария').

ЦЕЛЕСООБРАЗНО ИСПОЛЬЗОВАТЬ СЦЕНАРИИ ПРИВЫПОЛНЕНИИ ЛАБОРАТОРНОЙ РАБОТЫ!!!

Функции. Система SciLab предоставляет несколько способов определения новых функций. Первый из них --- ис-пользование команды deff:deff('[Рез1,Рез2,...]=ИмяФункции(Арг1,Арг2,...)','Тело функции; Рез1=выражение; Рез2=выражение;...')

12

Page 13: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Для того, чтобы использовать функции в будущем целесооб-разно размещать их в отдельных файлах с расширением sci (можно по нескольку функций в одном файле). В этом случае каждую функцию необходимо оформлять следующим об-разом:function [Рез1,Рез2,...]=ИмяФункции(Арг1,Арг2,...)Тело функции...Рез1=выражение;Рез2=выражение;......endfunctionПеред использованием функции должны быть загружены в систему SciLab с помощью одной из команд-->exec('Путь к файлу функции'),-->getf('Путь к файлу функции').

Дифференцирование. Пакет программ SciLab имеет возможности численного дифференцирования несколькими способами.

1 способ. Если функция задана таблицей своих значений (т.е. вычислен вектор y значений функции для некоторого век-тора x), то для нахождения первого дифференциала использу-ют функцию -->dy1=diff(y)а для нахождения n-го дифференциала-->dyn=diff(y,n).

После нахождения дифференциалов рассчитывают производную по формуле

y '=1 h dy1− dy22

dy33

−dy44

dy55

−...

13

Page 14: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Например, вычислим значение производной функции f x=x235x в точке x=1. Введём функцию

-->function y=f(x), y=(x+2)^3+5*x, endfunction;Определим вектор x и вычислим вектор y=f(x):--> h=0.1--> x=0:h:3 // 31 компонент вектора--> y=f(x)Вычислим дифференциалы первого, второго и третьего поряд-ка:--> dy1=diff(y,1);--> dy2=diff(y,2);--> dy3=diff(y,3);Заметим, что размерность вектора dy1 на единицу меньше размерности векторов x и y, то есть составляет 30 компонент. Аналогично размерность вектора dy2 на 1 меньше размерно-сти dy (29 компонент), а размерность dy3 на 1 меньше размер-ности вектора dy2 (28 элементов). Рассчитываем вектор зна-чений первой производной, учитывая три первых дифферен-циала--> for k=1:28, z(k)=(dy1(k)-dy2(k)/2+dy3(k)/3)/0.1, endЗначение х=1 является одиннадцатым компонентом вектора x. Поэтому выведем на экран значение z(11):--> disp(z(11))

32.Это и есть искомое значение производной.

2 способ. С помощью команды --> g=numdiff(fun,x),где первый аргумент — имя дифференцируемой функции, второй — значение переменной х, по которой происходит

14

Page 15: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

дифференцирование. Например, вычислим значение произ-водной функции f x=x235x в точке x=1

-->function f=my(x), f=(x+2)^3+5*x, endfunction;-->numdiff(my,1) ans = 32.-->x=1;3*(x+2)^2+5 ans = 32.

В следующем примере вычислим значение первой производ-ной в нескольких точках m=[0:3]

-->v=0:3;-->numdiff(my,v) ans = 17. 0. 0. 0. 0. 32. 0. 0. 0. 0. 52.999999 0. 0. 0. 0. 80.000002-->function f1=my1(x), f1=3*(x+2)^2+5, endfunction;-->my1(v) ans = 17. 32. 53. 80.

15

Page 16: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

Практическое задание.В вашем варианте дана функция f t и точка x0 .

1. Разложите заданную функцию f t в ряд Тейлора в окрестности точки x0 . Найдите 10 первых коэффици-ентов ряда.

2. Напишите функцию, реализующую вычисление при-ближенного значения заданной вам функции суммиро-ванием первых n членов ряда Тейлора.

3. Постройте на одном графике заданную функцию вме-сте с приближенной.

4. Вычислите ошибку представления заданной функции своими приближениями. Постройте на отдельном гра-фике ошибку в зависимости от х.

Варианты№ Функция f(t) Точка x01 f x =exp −x2 02 f x =cos ∣x∣ 13 f x =x83x2−2 24 f x =exp −x cos5x 35 f x =sin x2 π6 f x =tg x 07 f x =ctg x π /28 f x =1−2cos x 09 f x =8x⋅tg x 010 f x =xexp −x2 0

16

Page 17: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

11 f x =sin x x

0

12 f x =sin2 x cos2 2x 113 f x =exp −x2x 14 f x =sin2 x2 215 f x =cos x exp −x2 π

Пример выполнения работы.

Пусть дана функция f x =x2 exp −x2 и точка x0=1.

1. Создадим файл сценария test.sce. Все описываемые да-лее команды будем писать в файле сценария и загру-жать его на выполнение.

2. Определим функциюfunction y=f(x), y=(x^2)*exp(-x^2), endfunction;и построим ее графикt=-5:0.1:5;ff=f(t);plot(t,ff)

17

Page 18: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

3. Для нахождения производных введем дискретизацию некоторой окрестности исходной точки x0. При этом точка х0 должна располагаться не посередине выбран-ной окрестности, а ближе к ее левому краю.x=0:0.1:5Заметим, что при таком выборе дискретизации исход-

ная точка x0 имеет номер 11, то есть х(11)=х0.

4. Вычисляем значения функции в узлах дискретизацииy=f(x);

5. Находим значения первой производной в узлах дискре-тизацииdy1=diff(y,1);dy2=diff(y,2);dy3=diff(y,3);for k=1:28z(k)=(dy1(k)-dy2(k)/2+dy3(k)/3)/0.1;enddisp(z(11))

6. Вычисляем значения второй производнойdz1=diff(z,1);dz2=diff(z,2);dz3=diff(z,3);for k=1:25w(k)=(dz1(k)-dz2(k)/2+dz3(k)/3)/0.1;enddisp(w(11))

18

Page 19: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

7. Вычисляем значения третьей производнойdw1=diff(w,1);dw2=diff(w,2);dw3=diff(w,3);for k=1:22v(k)=(dw1(k)-dw2(k)/2+dw3(k)/3)/0.1;enddisp(v(11))

8. Вычисляем значения четвертой производнойdv1=diff(v,1);dv2=diff(v,2);dv3=diff(v,3);for k=1:19q(k)=(dv1(k)-dv2(k)/2+dv3(k)/3)/0.1;enddisp(q(11))

9. Формируем ряд Тейлораx0=x(11);A=y(11);B=z(11);C=w(11)/2;D=v(11)/6;E=q(11)/24;function y=g(x), y=A+B*(x-x0)+C*(x-x0)^2+

D*(x-x0)^3+E*(x-x0)^4 , endfunction;

19

Page 20: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

10. Строим график функции g(x)gg=g(t);plot(t,gg)Получаем

11. Введем функцию ошибки приближения рядом Тейлораfunction e=err(x), e=abs(f(x)-g(x)), endfunction;

20

Page 21: ЛАБОРАТОРНАЯ РАБОТА №2 - narod.ruwebradio.narod.ru/metod/zip/scilab.pdf · 3 2 4 1 x x y x + = + , 8 arctg2(x) y =, = − 2 2 ln 2 x y e для трёх значений

12. Построим график функции ошибкиee=err(t);plot(t,ee)

21