ИНФОРМАТИКА-Лабораторные_работы_1_курс / Лаб.3 / Лаб 3 SciLab v1
.pdfЛАБОРАТОРНАЯ РАБОТА №3
ИССЛЕДОВАНИЕ ПРИБЛИЖЕНИЯ ФУНКЦИИ РЯДОМ ТЕЙЛОРА
ВОКРЕСТНОСТИ НЕКОТОРОЙ ТОЧКИ
ВПРОГРАММЕ SCILAB
Цели работы:
∙углубление и расширение теоретических знаний о программном обеспечении ПК;
∙овладение практическими навыками работы с программой SciLab.
Краткое описание программы SciLab
Среди свободного программного обеспечения широкую известность и заслуженную популярность приобрела система математических расчетов SciLab.
Интерфейс SciLab.
Внешний вид главного окна программы SciLab показан на рис. 1. Взаимодействие с пользователем организовано в виде командной строки. В главном окне помимо ввода команд выводятся результаты вычислений. Для представления графической информации, например графиков функций, используется графическое окно, открыть которое можно с помощью команды меню «Graphics Window 0 -> Set (Create) Window».
Рис. 1 Главное окно SciLab
Использование SciLab в качестве калькулятора. Для набора выражения используются клавиатура. Например, для
|
3 |
|
|
расчёта выражения |
22 5,69 |
необходимо набрать |
|
4 |
|||
|
|
(22+5.69)^(1/3)/4. Для немедленного вычисления необходимо нажать Enter. При наборе используются обычные математические операции +-*/. Возведение в степень обозначается крышкой ^. Результат отображается в виде ans=0.7563352. Если пользователь не указал какой переменной нужно присвоить результат вычислений, то результат присваивается встроенной переменной с именем ans. Если не требуется вывода результата на экран, то в конце вводимой строки следует поставить точку с запятой.
При более сложных вычислениях можно использовать переменные. Присвоить значение переменной можно, к при-
2
меру, так: a=5.5. В качестве имени переменной можно использовать произвольную последовательность символов, которая начинается не с цифры. Имена переменных ЧУВСТВИТЕЛЬНЫ к регистру.
Значение переменной доступно ниже её определения. Для вывода значения переменной достаточно набрать в командной строке её имя и нажать Enter. Если точность вывода недостаточна, можно использовать функцию printf, формат которой совпадает с аналогичной функцией языка C. Например, чтобы вывести значения вещественной переменной b с точностью 12 знаков после запятой, необходимо написать printf("%1.12f",b).
Программа SciLab имеет много встроенных недоступных для изменения переменных, некоторые из них приведены ниже:
%i |
— мнимая единица, |
%pi |
— число пи |
%e |
— число е (экспонента) |
%eps |
— условные ноль (самое близкое к нулю |
|
вещественное число) |
%inf |
— бесконечность. |
%t |
— логическая истина, |
%f |
— логическая ложь. |
Для ввода текстового комментария необходимо ввести знак двойного слеша //, затем вводить текст.
Программа SciLab имеет много встроенных элементарных функций. В таблице 1 приведены наиболее часто используемые из них. Полный перечень элементарных функций доступен в справочной системе пакета.
3
Таблица 1
Элементарные функции пакета SciLab.
Имя |
Описание |
функции |
|
|
|
abs |
модуль числа или длина вектора |
|
|
acos |
арккосинус |
|
|
acosh |
арккосинус гиперболический |
|
|
and |
логическая И |
|
|
asin |
арксинус |
|
|
asin |
арксинус гиперболический |
|
|
atan |
арктангенс |
|
|
atanh |
арктангенс гиперболический |
|
|
ceil |
округление вверх |
|
|
cos |
косинус |
|
|
cosh |
косинус гиперболический |
|
|
cotg |
котангенс |
|
|
coth |
котангенс гиперболический |
|
|
exp |
экспонента |
|
|
eye |
формирование единичной матрицы |
|
|
factor |
разложение на простые множители |
|
|
floor |
округление вниз |
|
|
log |
натуральный логарифм |
|
|
log10 |
десятичный логарифм |
|
|
log2 |
логарифм по основанию 2 |
|
|
4
Имя |
Описание |
функции |
|
|
|
max |
максимальное значение вектора |
|
|
min |
минимальное значение вектора |
|
|
not |
логическое НЕ |
|
|
or |
логическое ИЛИ |
|
|
rand |
генератор случайного числа |
|
|
round |
округление |
|
|
sign |
знак аргумента |
|
|
sin |
синус |
|
|
sinc |
sin(x)/x |
|
|
sinh |
синус гиперболический |
|
|
sqrt |
квадратный корень |
|
|
tan |
тангенс |
|
|
tanh |
тангенс гиперболический |
|
|
Сессию работы со SciLab можно записать в файл. Для этого необходимо выполнить команду save('my_file'). Полученный файл в дальнейшем можно загрузить с помощью команды load.
Команда diary('file-name') служит для записи копии текущей сессии Scilab в текстовый файл, например, diary('D:/slon/my_example.txt') // открыли сессию записи
...// Работаем в SciLab, все записи главного окна копируются
...//в текстовый файл
diary(0) // закрыли сессию записи
5
Все, что находится в главном окне Scilab между командой diary('file-name'), открывающей запись сессии, и командой diary(0), закрывающей запись, будет записано в файл.
Задание. Вычислите значения функций
|
|
|
|
|
1 |
|
|
|
arctg |
2 |
(x) |
|
æ |
|
|
x 2 |
ö |
|
y = |
4 x + |
|
|
|
|
|
|
− |
||||||||||
|
|
|
|
|
|
y = lnç |
2e |
2 |
÷ |
|||||||||
|
|
|
|
|
|
|
, y = |
|
|
|
, |
ç |
|
|
÷ |
|||
|
|
|
|
3 |
|
|
|
2 |
|
|
|
ç |
|
|
|
÷ |
||
|
|
|
|
x + |
x |
8 |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
è |
|
|
|
ø |
для трёх значений 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
-->N=[4; 6; 1] N =
4.
6.
1.
1 |
2 |
3 |
, |
4 |
. |
M= −41 |
26 |
84 |
N= 61 |
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.
|
æ 4 |
- 1 |
- 1ö |
|
|
æ |
1 |
4 |
- 1ö |
|||
M − 1 |
ç |
- 12 |
3.5 |
2 |
÷ |
, |
M Т |
ç |
2 |
6 |
2 |
÷ |
= ç |
÷ |
= ç |
÷ |
|||||||||
|
ç |
7 |
- 2 |
|
÷ |
|
|
ç |
3 |
9 |
4 |
÷ |
|
è |
- 1ø |
|
|
è |
ø |
Доступ к элементу матрицы производится по индексу, отсчитываемому от 1. Вектор имеет один индекс, который вводится
7
при помощи круглых скобок. Например, значения компонентов вектора 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
æ |
3 |
ö |
æ |
- 2 |
ö |
|
ç |
- 8 |
÷ |
ç |
4 |
÷ |
= - 36 . |
ç |
÷ |
× ç |
÷ |
|||
ç |
2 |
÷ |
ç |
1 |
÷ |
|
è |
ø |
è |
ø |
|
Поэлементные вычисления над матрицами выполняются с помощью операции векторизации. При этом операции производятся над каждым элементом вектора независимо:
-->[3 -8 2].*[-2 4 1] |
|
|
|
ans = |
|
|
|
- 6. - 32. 2. |
|
|
. |
3 |
−2 |
−6 |
|
−28 |
. 41 |
= −232 |
В 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
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