Лабораторная работа 1 1.1. Текстовые комментарии

advertisement
Лабораторная работа 1
1.1. Текстовые комментарии
Текстовый комментарий в Scilab это строка, начинающаяся с символов «//».
Использовать текстовые комментарии можно как в рабочей области, так и в тексте
файла сценария. Строка после символов // не воспринимается как команда и
нажатие клавиши Enter приводит к активизации командной строки листинга 1.1.
Листинг 1.1.
-->//6+8
-->
1.2. Элементарные математические выражения
Для выполнения простейших арифметических операций в Scilab применяют
следующие операторы: + сложение, – вычитание, * умножение, / деление слева
направо, \ деление справа налево, ^ возведение в степень. Вычислить значение
арифметического выражения можно, если ввести его в командную строку и нажать
клавишу ENTER. В рабочей области появится результат (листинг 1.2).
Листинг 1.2.
--> 2.35*(1.8-0.25)+1.34^2/3.12
ans =
4.2180
Если вычисляемое выражение слишком длинное, то перед нажатием клавиши
ENTER следует набрать три или более точек. Это будет означать продолжение
командной строки (листинг 1.3).
Листинг 1.3.
--> 1+2+3+4+5+6....
+7+8+9+10+....
+11+12+13+14+15
ans =
120
Если символ точки с запятой «;» указан в конце выражения, то результат вычислений
не выводится, а активизируется следующая командная строка (листинг 1.4).
Листинг 1.4.
--> 1+2;
--> 1+2
ans =
3
1.3. Переменные в Scilab
В рабочей области Scilab можно определять переменные, а затем использовать их в
выражениях. Любая переменная до использования в формулах и выражениях
должна быть определена. Для определения переменной необходимо набрать имя
переменной, символ «=» и значение переменной. Здесь знак равенства – это
оператор
присваивания,
действие
которого
не
отличается
от
аналогичных
операторов языков программирования. Имя переменной не должно совпадать с
именами встроенных процедур, функций и встроенных переменных системы и может
содержать до 24 символов. Система различает большие и малые буквы в именах
переменных. То есть «ABC», «abc», «Abc», «aBc» – это имена разных переменных.
Выражение
в
правой
части
оператора
присваивания
может
быть
числом,
арифметическим выражением, строкой символов или символьным выражением.
Если речь идёт о символьной или строковой переменной, то выражение в правой
части оператора присваивания следует брать в одинарные кавычки. Если символ «;»
в конце выражения отсутствует, то в качестве результата выводится имя переменной
и её значение. Наличие символа «;» передаёт управление следующей командной
строке. Это позволяет использовать имена переменных для записи промежуточных
результатов в память компьютера (листинг 1.5).
Листинг 1.5.
-->//Присваивание значений переменным а и b
--> a=2.3
a =
2.3000
--> b=-34.7
b =
-34.7000
-->//Присваивание значений переменным x и y,
-->//вычисление значения переменной z
--> x=1;y=2; z=(x+y)-a/b
z =
3.0663
-->//Сообщение об ошибке – переменная с не определена
--> c+3/2
??? Undefined function or variable 'c'.
-->//------------------------------------------------->//Определение символьной переменной
--> c='a'
c =
a
-->//Определение строковой переменной
--> h='мама мыла раму'
h =
мама мыла раму
Для очистки значения переменной можно применить команду
clear <имя переменной>;
Команда
clear;
отменяет определения всех переменных данной сессии. В листинге 1.6 приведены
примеры применения этой команды.
Листинг 1.6.
-->//Определение переменных x и y
--> x=3; y=-1;
-->//Отмена определения переменной x
--> clear x
-->//Переменная x не определена
--> x
??? Undefined function or variable 'x'.
-->//Переменная y определена
--> y
y =
-1
-->//Определение переменных a и b
-->a=1;b=2;
-->//Отмена определения переменных a и b
-->clear;
-->//Переменные a и b не определены
-->a
!--error 4
undefined variable : a
-->b
!--error 4
undefined variable : b
1.4. Системные переменные Scilab
Если команда не содержит знака присваивания, то по умолчанию вычисленное
значение
присваивается
специальной
системной
переменной
ans.
Причём
полученное значение можно использовать в последующих вычислениях, но важно
помнить, что значение ans изменяется после каждого вызова команды без оператора
присваивания (листинг 1.7).
Листинг 1.7.
--> 25.7-3.14
ans =
22.5600
--> //Значение системной переменной равно 22.5600
--> 2*ans
ans =
45.1200
--> //Значение системной переменной увеличено вдвое
--> x=ans^0.3
x =
3.1355
--> ans
ans =
45.1200
--> //После использования в выражении значение
--> //системной переменной не изменилось и равно 45.1200
Другие системные переменные в Scilab начинаются с символа %:
1 ;

%i – мнимая единица

%pi – число 

%e – число  (2,7182818);
(3,141592653589793);

%inf – машинный символ бесконечности (  );

0 
%NaN – неопределённый результат ( , , 1   и т.п.);
0 

%eps – условный ноль %eps=2.220Е-16.
Все перечисленные переменные можно использовать в математических выражениях.
Листинг 1.8 содержит пример вычисления выражения F  cos( / 3)  (a  b)  2
Листинг 1.8.
-->a=5.4;b=0.1;
-->F=cos(%pi/3)+(a-b)*%e^2
F =
39.661997
В листинге 1.9 показан пример неверного обращения к системной переменной.
Листинг 2.9
-->sin(pi/2)
!--error 4
undefined variable : pi
1.4. Ввод вещественного числа и представление результатов
вычислений
Числовые результаты могут быть представлены с плавающей (например, –3.2Е-6, –
6.42Е+2), или с фиксированной (например, 4.12, 6.05, –17.5489) точкой. Числа в
формате с плавающей точкой представлены в экспоненциальной форме mE±p, где
m – мантисса (целое или дробное число с десятичной точкой), p – порядок (целое
число). Для того, чтобы перевести число в экспоненциальной форме к обычному
представлению с фиксированной точкой, необходимо мантиссу умножить на десять в
степени порядок. При вводе вещественных чисел для отделения дробной части
используется точка. Примеры ввода и вывода вещественных чисел показаны в
листинге 1.10.
Листинг 1.10.
-->0.123
ans =
0.123
-->-6.42e+2
ans =
- 642.
-->3.2e-6
ans =
0.0000032
Листинг 1.11 содержит пример вывода значения системной переменной 
некоторой переменной q
.Не трудно заметить, что Scilab в качестве результата
выводит только восемь значащих цифр.
Листинг 1.11.
и
-->%pi
%pi =
3.1415927
-->q=0123.4567890123456
q =
123.45679
Восемь значащих цифр – это формат вывода вещественного числа по умолчанию.
Для того, чтобы контролировать количество выводимых на печать разрядов
применяют команду printf с заданным форматом, который соответствует правилам
принятым для этой команды в языке С. Листинг 1.12 содержит несколько примеров
вызова команды printf.
Листинг 1.12.
-->printf("%1.12f",%pi)
3.141592653590
-->printf("%1.15f",%pi)
3.141592653589793
-->printf("%1.2f",q)
123.46
-->printf("%1.10f",q)
123.4567890123
-->//По умолчанию 6 знаков после запятой
-->printf("%f",q)
123.456789
1.5. Функции в Scilab
Все функции, используемые в Scilab, можно разделить на два класса:

встроенные;

определённые пользователем.
В общем виде обращение к функции в Scilab имеет вид:
[<имя_переменной>]=<имя_функции>([<переменная1>{,<переменная2>}])
где
<имя_переменной> – переменная, в которую будут записаны результаты работы
функции; этот параметр может отсутствовать, тогда значение, вычисленное
функцией будет присвоено системной переменной ans ;
<имя_функции> – имя встроенной или ранее созданной пользователем функции;
<переменная1>, <переменная2>, … – список аргументов функции.
1.5.1. Элементарные математические функции
Пакет Scilab снабж`н достаточным количеством всевозможных встроенных функций,
знакомство с которыми может происходить в процессе работы. Здесь приведём,
только элементарные математические функции, используемые чаще всего (табл.
1.1).
Табл. 2.1. Элементарные математические функции MATLAB
Функция
Описание функции
Тригонометрические
sin(x)
синус числа
cos(x)
косинус числа
x
tan(x)
тангенс числа
x
cotg(x)
котангенс числа
asin(x)
арксинус числа
acos(x)
арккосинус числа
x
atan(x)
арктангенс числа
x
x
x
x
Экспоненциальные
exp(x)
экспонента числа
log(x)
натуральный логарифм числа
x
x
Другие
sqrt(x)
квадратный корень числа
abs(x)
модуль числа
x
x
log10(x)
Десятичный логарифм от числа
log2(x)
Логарифм по основанию 2 от числа
Листинг 1.13 содержит пример вычисления выражения
x
x
y
 x
sin     x
 y
Листинг 1.13.
-->x=1.2;y=0.3;
-->z=sqrt(abs(sin(x/y)))*exp(x^y)
z =
2.5015073
1.5.2. Функции, определённые пользователем
Функция, как правило, предназначена для неоднократного использования, она имеет
входные
параметры
и
не
выполняется
без
их
предварительного
задания.
Рассмотрим несколько способов создания функций в Scilab. Первый способ это
применение оператора
deff('[<имя1>{, <имя2>}]=
<имя_функции>([<переменная_1>{,<переменная_2>}])',
'[<имя>=<выражение>]{;<имя1>=<выражение1>')
где
имя1,имя2 – список выходных параметров, то есть переменных, которым будет
присвоен конечный результат вычислений;
имя_функции – имя с которым эта функция будет вызываться;
переменная_1,...,переменная_2 – входные параметры (от 1 до M).
Так, в листинге 1.14 приведен самый простой способ применения оператора deff.
Здесь показано как создать и применить функцию для вычисления выражения
y
 x
sin     x (значение этого выражения уже было вычислено в листинге 1.13).
 y
Листинг 1.14.
-->deff('z=fun1(x,y)','z=sqrt(abs(sin(x/y)))*exp(x^y)');
-->x=1.2;y=0.3;z=fun1(x,y)
z =
2.5015073
Листинг 2.15 содержит пример создания и применения функции, вычисляющей
площадь
треугольника
со
сторонами
a,
b
и
c
по
формуле
Герона
S  ( p  a)( p  b)( p  c) , где p  (a  b  c) / 2
Листинг 1.15.
-->deff('S=G(a,b,c)','p=(a+b+c)/2;S=sqrt((p-a)*(p-b)*(p-c))');
-->G(2,3,3)
ans =
1.4142136
С помощью функции созданной в листинге 1.16 можно найти корни квадратного
уравнения.
Листинг 1.16.
-->deff('[x1,x2]=korni(a,b,c)',
'd=b^2-4*a*c;x1=(-b+sqrt(d))/2/a;x2=(-b-sqrt(d))/2/a');
-->[x1,x2]=korni(-2,-3,5)
x2 =
1.
x1 =
2.5
Второй способ создания функции это применение конструкции вида:
Function[[<имя1>]{,имя2}]=
<имя_функции>([<переменная_1>]{,<переменная_2>})
<тело функции>
endfunction
где
имя1,имя2 – список выходных параметров (от 1 до N), то есть переменных, которым
будет присвоен конечный результат вычислений;
имя_функции – имя с которым эта функция будет вызываться;
переменная_1,переменная_2 – входные параметры (от 1 до M).
Все имена переменных внутри функции, а так же имена из списка входных и
выходных параметров воспринимаются системой как локальные, то есть эти
переменные считаются определёнными только внутри функции.
Вообще говоря, функции в Scilsb играют роль подпрограмм. Поэтому целесообразно
набирать их тексты в редакторе и сохранять в виде отдельных файлов. Причём имя
файла должно обязательно совпадать с именем функции. Расширение файламфункциям обычно присваивают *.sci или *.sce.
Обращение к функции осуществляется так же, как и к любой другой встроенной
функции системы, то есть из командной строки. Однако функции, хранящиеся в
отдельных файлах должны быть предварительно загружены в систему, например при
помощи оператора exec(имя_файла) или командой главного меню File\Exec..., что в
общем, одно и то же.
ЗАДАЧА 1.1. Решить кубическое уравнение ax3  bx 2  cx  d  0
Которое после деления на a принимает канонический вид:
x 3  rx 2  sx  t  0
(1.1)
где
r
b
c
d
, s , t
a
a
a
В уравнении (1.1) сделаем замену x  y 
r
3
и получим следующее приведённое уравнение y3   px  q  0
(1.2)
где
p
3s  r 2
2r 3 rs
, q
 t
3
27 3
Число действительных корней приведённого уравнения (1.2) зависит от знака
p3 q 2
дискриминанта D 

3
2
Корни приведённого уравнения могут быть рассчитаны по формулам Кардано:
y1  u  v , y2  
uv uv
uv uv

i 3 , y3  

i 3
2
2
2
2
где
u3
q
q
 D , v3
 D
2
2
Список команд, реализующий описанный выше способ решения кубического
уравнения, представлен в виде функции на листинге 1.17. Листинг 1.18 содержит
фрагмент рабочей области, демонстрирующий вызов функции и вывод результатов
её работы.
Листинг 1.17.
function [x1,x2,x3]=cub(a,b,c,d)
r=b/a;
s=c/a;
t=d/a;
p=(3*s-r^2)/3;
q=2*r^3/27-r*s/3+t;
D=(p/3)^3+(q/2)^2;
u=(-q/2+sqrt(D))^(1/3);
v=(-q/2-sqrt(D))^(1/3);
y1=u+v;
y2=-(u+v)/2+(u-v)/2*%i*sqrt(3);
y3=-(u+v)/2-(u-v)/2*%i*sqrt(3);
x1=y1-r/3;
x2=y2-r/3;
x3=y3-r/3;
endfunction
Листинг 1.18.
-->exec('C:\Ksu\Scilab\scilab-4.0-rc1\cub.sce');
-->disp('exec done');
Warning :redefining function: cub exec done
-->[x1,x2,x3]=cub(3,-20,-3,4)
x3 =
0.3880206
x2 =
- 0.5064407
x1 =
6.7850868
Лабораторная работа 2
Задача 2.1. Дан ряд

a
n 0
частичных сумм
n
. Найти сумму ряда аналитически. Вычислить значения
N
ряда S N   an и найти величину погрешности при значениях
n 0
N  10, 102 , 103 , 104 , 105 .
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Найти сумму ряда S аналитически как предел частичных сумм ряда.
N
2. Вычислить значения S N   an , для ряда при указанных значениях N .
n 0
3. Для
каждого N
вычислить величину абсолютной погрешности
SN  S
и
определить количество верных цифр в рассчитанном значении S N .
4. Представить результаты в виде гистограммы.
Таблица к задаче 2.1
N
2.1.1
an
2
n 2  5n  6
N
2.1.11
an
60
11(n 2  12n  35)
N
2.1 21
an
24
7( n 2  8n  15)
2.1.2
36
2.1.12
11(n 2  5n  4)
2.1.3
5(n 2  6n  8)
2.1.13
9
n 2  7 n  10
2.1.14
48
5(n 2  6n  8)
2.1.5
n 2  8n  15
2.1.15
48
5(n 2  6n  5)
2.1.6
n 2  4n  3
2.1.16
72
5(n 2  6n  8)
2.1.7
n 2  5n  6
2.1.17
24
n 2  18n  80
n 2  8n  15
2.1.8
2.1.18
32
n 2  9n  20
2.1.9
216
n 2  4n  3
2.1.19
7( n 2  8n  15)
2.1.10
84
n 2  20n  99
2.1.20
112
13(n 2  14n  48)
96
n 2  8n  15
2.1.29
180
24
n 2  4n  3
2.1.28
24
72
n 2  7 n  10
2.1.27
144
60
n 2  6n  8
2.1.26
32
96
n 2  9n  20
2.1.25
20
46
n 2  5n  6
2.1.24
48
36
n 2  5n  4
2.1.23
36
n 2  7 n  12
2.1.4
2.1.22
144
72
n 2  6n  8
2.1.30
15(n 2  16n  63)
12
5(n 2  6n  8)
Пример решения задачи 2.1.0.
Постановка задачи: дан ряд

n
n 0
2
72
. Найти сумму ряда S аналитически.
 5n  4
N
Вычислить значения частичных сумм ряда S N   an и найти величину погрешности
n 0
при
значениях
N  10, 10 2 , 103 , 104 , 105 .
Построить
количества верных цифр результата от N .
Аналитическое решение задачи:
N
N
72
72
1  1
1 


72






2
n 4
n  0 n  5n  4
n  0 ( n  1)  ( n  4)
n 0 3  n  1
N
SN  
1
1
1 
 1 1
 24  1   



 2 3 N  2 N 3 N  4
гистограмму
зависимости
S  lim
S N  44
N 

72
 44
n  0 n  5n  4
S 
2
Пусть a – точное значение, a * – приближённое значение некоторой величины.
Абсолютной погрешностью приближённого значения
a * называется величина
(a*)  a  a * . Относительной погрешностью значения a * (при a  0 ) называется
величина  (a*) 
(a*)
. Так как значение a как правило неизвестно, чаще получают
a
оценки погрешностей вида: a  a *  (a*)
a  a*
a
  (a*) . Величины (a*) и  (a*)
называют верхними границами (или просто границами) абсолютной и относительной
погрешностей.
Значащую цифру числа a * называют верной, если абсолютная погрешность числа
не превосходит единицы разряда, соответствующего этой цифре.
Введём функцию
N
72
. Тогда абсолютную погрешность можно
n  0 n  5n  4
S(N )  
2
определить как функцию d ( N )  S ( N )  S .
Реализуем функцию, вычисляющую абсолютную и относительную погрешность.
function [S_chast,delta,sigma] = pogreshnost(N,S)
S_chast=0,
for i=0:1:N,
S_chast=S_chast+(72/(i^2+5*i+4)),
end
delta=abs(S_chast-S),
sigma=delta/abs(S)
endfunction
и поместим результаты вычислительного эксперимента в таблицу:
Значение частичной
Величина абсолютной
Количество
суммы ряда
погрешности
верных цифр
S(10)=38.439560439
d(10)=5.56
1
S(100)=43.3009269
d(100)=0.699
2
S(1000)=43.9282153
d(1000)=0.072
3
S(10000)=43.992802
d(10000)=0.0072
4
S(100000)=43.999280
d(100000)=0.00072
5
21599
Вывод: …
Гистограмма
5
4
3
2
1
0
0
0
M
 a11 a12

Задача 2.2. Дана матрица A   a21 a22
a
 31 a32
a13 

a23  . В каждый из диагональных элементов
a33 
матрицы A (следует помнить, что у матрицы есть главная и побочная диагонали) по
очереди
внести
погрешность
в
( aij 
1%
aij
100
).
Повторить
вычислительный
эксперимент, снова внося по очереди погрешность в элементы диагонали матрицы
( aij 
aij
100
).
Как изменился определитель матрицы A ? Указать количество верных цифр и
вычислить величину относительной погрешности определителя в каждом случае.
Результаты оформить таблицей, сделать выводы о том, от чего зависит погрешность
Таблица к задаче 2.2
N
2.2.1
2.2.2
2.2.3
N
A
3
2
2
33
28
360
30
34
19
24
314
354
200
320
270
2
8
13
9
5
6
17
9
7
4
16 -6
12
2.2.11
N
A
2.2.12
2.2.21
1.3
1
13
3.4
1.4
23
5
3
1.5
3
1
13
-7
-7
-1
11
0
-2
-6
5
3
15
5
5
6
4
11
5
40
2
4.4
2.2.13
-2
2.2.22
A
2.2.23
13
5
3
24
5
-1
1
2
-1
9
15
9
1
8
11
3
-5
0
6
7
2
3
6
3
0.4
6
0.4
32
2
4
1.1
0.2
3
5
-1
2
2.3
1.2
4
2.2.4
2.2.5
2.2.6
1
1
1.3
-1
2
5
-0.3
1.2
-2.4
-12
0.9
20.9
1.9
0.5
0.4
1.2
9
0.6
0.5
1.9
9
1.6
11.3 23
6.8
0.5 10
1.1
1
4.1 18.8
22
2.2.16
4
3
5
7
33
24
21
36
32
27
9
2.2.17
2.2.25
3.1
9
3.4
35
1.2
1.8
-1
-7
-3
2.2.26
1.8
2.2
4
0
37 -25
4
5
9
0.6
1.6 23
-7.2
2
2.2.27
4
9
14
1.6
2
3.4
14
23
30
5
3
1.5
3
1
1.3
1.7 9.3
1.1
0.2
-2.4
-6.7
5
3
1.5
5
5
6
4
1.1
5
43
2
44
1
2
3
0.5
7
2.7
0.4
6.5
1.1
0.2
3.6
12
13
2.3
1.2
4.3
5.6
-1
1.6 -6.3
1.3
24
0
2.2.19
5.4
8.4 1.1
4.8
3.2
6.1
3.2
2
4.5
5.3
-1
2.2.20
2.3
-2
2.2.28
13
6.2
4
2.2.18
3
4.5 1.3
9.4 5.7
2.9
2.2.10
5.5
1.3
7
2.2.9
5.5
0.8
15
0.6
5
0.1
2
2.2.15
2.2.24
1.1
2
2.2.7
2.2.8
2.2.14
2.2.29
-1
2.2.30
31
52
33
19
5
9
6
7.2
2
5
55
25
1.4
24
Лабораторная работа 3
Задача 3.1. Дана система уравнений Ax  b порядка n . Исследовать зависимость
погрешности решения x от погрешностей правой части системы b .
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Задать матрицу системы A и вектор правой части b . Используя встроенную
функцию linsolve ( A , b ) пакета Scilab, найти решение x системы Ax  b
2. Вычислить число обусловленности матрицы
A
по формуле
A   A1

–
являющееся теоретической точностью вычислений решения системы линейных
уравнений.
3. Принимая решение
d  (d1 ,..., d n ) , где di 
T
x , полученное в п. 1, за точное, вычислить вектор
x  xi

x
, i  1, n , относительных погрешностей решений x i
систем Axi  bi , i  1, n , где компоненты векторов b i вычисляются по формулам:
bk   , k  i
bki  
k  1, n
bk , k  i
(  - произвольная величина погрешности).
4. На основе вычисленного вектора d построить гистограмму. По гистограмме
определить компоненту bm вектора b , которая оказывает наибольшее влияние на
погрешность решения.
Таблица к задаче 3.1
во всех вариантах задаются формулой bi  N , i  1, n ,
Компоненты вектора b
c  cij  0,1  N  i  j,
n
N
3.1.1
i, j  1, n , N - номер варианта.
aij
6
15
n
N
3.1.16
5
6
125
3.1.17
4
(4  c  0.25)6
3.1.3
3.1.4
6
3.1.18
55
3.1.19
5
7
135
5
7
3
3.1.20
6
 c 
cos  
 25 
3.1.21
6
1000
c 4  4  c3
3.1.7
6
256
3c 2  c3
3.1.22
5
6
1
c 2  0.58  c
150
13c3  777c
(5  c  0.256)5
3.1.8
100
(11  c )5
(2  0.3  c)5
3.1.6
123
2c3  5c 2
c 2  3  c  100
3.1.5
115
3c  4c3
12
4c  4
7
100
(3  0.3  c)5
4  c  6  c 1
5
3.1.2
aij
3.1.23
5
11.7
(1  c)7
3.1.9
5
3.1.24
3
4
(1  c) 2
3.1.10
5
3.1.11
3.1.25
1
3.1.26
67  c
3.1.12
10c3  c 2  25
c
sin  
8
4
4
5
5
c 2  6c
3.1.27
6
3.1.28
1
3.1.14
7
5
3.1.29
1.5
6
6
10
0.3c3  10c
3.1.30
88.5
c  0.03c
500
(8  c  5) 2
3
0.001c3  2.5c
3.1.15
350
(5  0.35c)3
c  13  3c
(1  c)
31
4
111
5
321
(1  c)6
4
3.1.13
159
2
5
1
0.4c  20c
Пример решения задачи 3.1.0
100
(11  с)3
n  6 , N  31
Численное решение задачи:
Зададим значения матрицы A и вектора b .
function [A,b]=Matrica(n,N) //(файл Matrica.sci)
for i=1:1:n,
for j=1:1:n,
c= 0.1*N*i*j, A(i,j)=100/(11+c)^3,
end,
b(i)=N,
end
endfunction
Решим данную систему встроенной функцией пакета Scilab
x=linsolve(A,b)
x
=
- 57220.736
571076.59
- 1100113.3
- 226455.69
475368.42
817184.83
Вычислим число обусловленности матрицы A
M=norm(A)
3
M
=
0.0511776
S=norm(inv(A))
S
=
4.367D+09
M*S
ans
= 2.235D+08
Реализуем возмущения отдельных компонент вектора b , считая значения вектора
относительных погрешностей:
function [d]=MatricaVosm(n,N,A,x,delta) //(файл MatricaVosm.sci)
for i=1:1:n,
for j=1:1:n,
b(j)=N,
if i==j then b(j)=b(j)+delta, end
end,
xi=linsolve(A,b)
d(i)=norm(x-xi)/norm(x)
end
endfunction
Вызвав данную функцию, получим следующие результаты:
d=MatricaVosm(6,31,A,x,0.01)
d
=
0.0000191
0.0002162
0.0003202
0.0004015
0.0000886
0.0007604
Задача 3.2: Дана матрица A . Найти число обусловленности матрицы, используя
вычислительный эксперимент.
ПОРЯДОК РЕШЕНИЯ ЗАДАЧИ:
1. Выбрать последовательность линейно независимых векторов b i i  1,5 . Решить
системы уравнений Axi  bi , используя встроенную функцию linsolve пакета Scilab.
2. Для каждого найденного решения x вычислить отношение
i
1
3. Вычислить норму матрицы A
по формуле A
1

xi
bi
xi
.
bi
, сравнить с результатом,
полученным с помощью встроенной функции norm пакета Scilab.
1
4. Вычислить число обусловленности матрицы A по формуле cond ( A)  A  A .
5. Рассчитать относительную погрешность рассчитанного значения, считая точным,
значение,
возвращаемое
встроенной
функцией
пакета
SciLab.
Объяснить
полученные результаты
N
3.2.1
A
1 2 3 4 5
N
3.2.16
A
1
1
1
1
1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
1 1 2 3 4
16
8
4
2
1
1 2 1 2 3
81
27
9
3
1
1 3 2 1 2
256
64
16
4
1
1 4 3 2 1
625 125 25
5
1
3 1 0 0
0
3.2.17
611 196
1 2 1 0
0
196 899
113
-192
2
0 1 1 1
0
-192 113
899
196
7
0 0 1 0
1
407 -192
196
611
4
0
1
1
0.333
0.25
0.2
0.25
0.2
0.167
1 1
1
1
1
1
1
1
2
3
4
5
1
3
6
10
15
0.33 0.25 0.2
1
4
10
20
35
0.25 0.2
1
5
15
35
70
0.2 0.167 0.143 0.125 0.111
1
1
1
1
1
8
4
2
1
27 9
3
64 16
4
3.2.18
1
0
407 12
0 0 0
8
0
-192
0.5
0.5 0.3
3.2.19
0.167 0.143
0.167 0.143 0.125
1
1
1
1
12
12
1
2
3
4
1
1
3
1
3
6
10
3
4
1
7
1
4
4
20
7
1
2
12
1
5
15
35
70
19.8
2
79.2
0
35
19.8
24
39.6
85
0
19.8
25
19.8 -15
45
49.5 18
20
9.9
20
15
0
89.1
-49.5
3.2.20
29
0
59.4
0
39.6
-84
0 -39.6
2
0
9.9
-1
0
10
-9.9
11
29
6.6
0
9.9
7.5
2
-19.8
0
23
9.9
84
95
89.1
29.7
-49.5 -1
3.2.21
-9.9
1
1
39.6
0
17.5
9.9
12
4
79.2
120
0
39.6
0
-29.7 31 86
19.8
3
19.8
-21
46
0
5
49.5 39
8
-99
0
49.5
19
19
89.1
0
-59.4 0
24
13.2
9
9.9
25
10
-39.6
85
0.99
4.9
99
28
0
69.3
0
3.2.22
49.5 -94
3
-29.7
10
0
0.4
2.97
0.2
-1.8
6.6
3.3
0.6
39.6
24
-96 -29.7
0
4.95 1.6
1.2
8.91
0.8
29.7
24
23
79.2
0
1.98 -1.5
0.4
-1.98
6.1
69.3
0
21
-3.3
9.9 1.4
2.4
5.94
3.2
-98
3.2.8
3.2.9
7.92 3.36 -2.24 1.98
0
-1.8 18.2
0
3.96
-2.97 0.2
4.8
0
4.9
0.4
2.97
7
-1.8
6.6
3.3
0.6
0.8
5
1.6
1.2
8.91
0.8
0.3
3
-1.5
0.4
-1.98
6.1
0
13.2
3
1.4
2.4
5.94
3.2
23.3
0
-0.99
-1.4
5.94
0.8
0.6
-3.96
0.2
3.96 18.3 1.6
6.93
4.3
2.97 6.4
0
-2.97
0.2
-1.4
2.97 3.5
8.7
1.98
0.2
4.95 1.6
1.2
-8.91
0.8
0.99 2.5
1.1
-3.96
9
0.8
0.6
-3.96
0.2
0.3
5.94
0
-5.4
0
-10.6 16.83
24
3.96 -1.5
0
4.6 -13
3.96 0.4
0
5.94
5.94 3.1 3.4
3.2.10
3.2.11
4.29
-0.3
14.4
18.3 1.6 6.93 4.3
1.5
4.6 -13
4.29 -1.4
2.3
6.4
0
-2.97
0.2
0.2
0.4
5.94
0
3.5
8.7
1.98
0.2
0
0
1.5
3.2.25
3.1 3.4
0.99 14.4 0.9
1.6
1.2
-8.91
0.8
0.3
-1.2 0.8
4.95 -2.7 12.7
2.5
1.1
-3.96
9
0.4
9.9
3.0
4.0
0
2.97 6.4
0
-2.97
0.2
1.98
9.8
0.8
5.94 0.42
2.97 3.5
8.7
1.98
0.2
0.72
4.95 1.6
1.2
-8.91
0.8
1.1 6.93 0.81
-0.99 2.5
1.1
-3.96
9
2.1 -9.9
5.94 1.4
2.4
0
3.2
6.4
0
-2.97
0.2
0.2
3.5
8.7
1.98
0.2
0
0.3
1.6
1.2
-8.91
0.8
0.3
1.1 6.93 0.81 -1.2
2.5
1.1
-3.96
9
0.4
1.4
2.4
0
3.2
13
0
0.02
1.2
1.3
9.9
-7.5
3.0
4.0
0
9.8
0.8
5.94 0.42 -0.6
1.3
-4.8 19.7 9.9
1.2
-7.5
9.8
2.1 -9.9
0.8
1.2
0.72
29.5
0.72
3.2.26
29.5
1.5
3.2.27
0
5.94 0.42 -0.6
-4.8 19.7 9.9
3.2.14
0.2
0.99
1.98
3.2.13
3.2.24
1.5
3.96 -4.8 19.7 9.9
3.2.12
3.2.23
3.2.28
0.3
1.1 6.93 0.81 -1.2
0
0.1
0.1
0.99
4.9
0.4 2.97
0.21
1.32 -1.6
6.6
3.3
0.24
1.98
1.2
1.1
6.93
0.81
1.98 -1.5
0.4
-1.98
6.1
0.1
0.1
0
0.02
-7.5
2.1 -9.9
-1.2
0.8 4.95 2.7
2.97
0.4
0.3
1.98
0
0.99
4.9
0.4
2.97
0.2
4.9
0.4
2.97
-1.8
6.6
3.3
0.6
-1.6
6.6
3.3
0.24
4.95 1.6
1.2
8.91
0.8
1.2
1.1
6.93
0.81 -1.2
0
29.5
0.33
2.7
3.2.29
0.1
0.21 -0.3
0.1
3.2.15
1.98 -1.5
0.4
-1.98
0.4
0.3
1.98
0
0.1
4.9
0.4
2.97
0.2
-0.3
-1.8 6.6
3.3
0.6
0.8
1.2
8.91
0.8
0.3
-1.5
-1.98
6.1
0
0.4
1.6
1.2
-1.5
0.4
6.1
3.2.30
-1.5
0.4
4.9
0.4 2.97
0.21
-0.3
-1.6
6.6
3.3
0.24
0.1
6.93
0.81
-1.2
-1.98
6.1
0
1.65
0.9
4.3
1.1
0.4
0.3
-1.98
6.1
0
Лабораторная работа 4
Задача 4.1. Дана система уравнений Ax  b . Найти решение системы с помощью
метода Гаусса. Выполнить 10 итераций по методу Зейделя. Принимая решение,
полученное с помощью метода Гаусса за точное, найти величину абсолютной
погрешности итерационного решения.
ПОРЯДОК РЕШЕНИЯ ЗАДАЧИ:
1. Задать матрицу системы A и вектор правой части b . Используя встроенную
функцию linsolve пакета Scilab, найти решение системы Ax  b с помощью метода
Гаусса.
2. Преобразовать систему
Ax  b к виду
x  Bx  c , удобному для итераций.
Проверить выполнение достаточного условия сходимости итерационных методов
B

 1.
3. Написать функцию zeid, реализующую алгоритм Зейделя, выполнить с её
помощью 10 итераций, взяв любое начальное приближение. Принимая решение,
полученное в п. 1 за точное, найти величину абсолютной погрешности итерационного
решения (использовать норму 

).
4. Взять другое начальное приближение и повторить вычисления. Объяснить
полученные результаты.
Таблица к задаче 4.1
Варианты 4.1. N
– 4.1.15+ N , N =1,2…15 имеют одну и ту же матрицу A и
отличаются векторами правых частей.
N
4.1.1
b
A
N
79.2
0
35
19.8
24
86
39.6
85
0
19.8
25
55
122.3
19.8
-15
45
0
10
77
-257.2
49.5
18
20
0
5
-223.6
89.1
4.1.16
b
-468.1
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
4.1.7
4.1.8
4.1.9
9.9
15
20
29.7
2
9.9
-21
-9.9
11
9.9
-49.5
-49.5
0
95
19.8
0
-64
2
-9.9
26.2
1
1
35.9
4.1.17
29.2
-41.1
99.9
97.4
-174.7
29
6.6
7.5
2
-19.8
0
99.8
75.05
-1
23
9.9
84
27.1
-185.9
89.1
29
0
59.4
0
260.2
4.1.18
39.6
-84
0
-39.6
4
-313.2
-64.4
-29.7
31
86
19.8
3
293.3
-95.1
49.5
39
8
-99
0
-212.4
-40.7
-59.4
0
24
13.2
98
230.8
12.6
4.1.19
200.5
39.6
0
17.5
9.9
12
38.5
79.2
120
0
39.6
0
38.8
-530
19.8
-21
46
0
5
93.7
102.1
49.5
19
19
89.1
0
43
-286.5
9.9
25
10
-39.6
85
-49.7
101.3
99
28
0
69.3
0
40.2
49.5
-94
3 -29.7
10
91.5
-156.9
39.6
24
-96 -29.7
0
93.4
-405.5
29.7
24
23
79.2
0
84.7
239.6
69.3
0
21
-3.3
-98
-1.5
-306.5
4.1.20
-58.7
7.92
3.36
-2.24
1.98
-1.956
-13.86
18.20
0
3.96
62.8
-100.54
-2.97
0.20
4.80
0
-4.16
-1.27
5.94
0
-10.60
16.83
48.31
-71.31
4.95
1.12
2.9
0.66
-3.41
8.91
19.9
-4.0
6.93
50.33
-37.81
-2.97
2.2
-5.8
0
19.49
28.58
5.94
1.3
10.5
17.82
-45.88
9.32
118.8
-14
-5
-89.1
-92.5
-59.4
194
5
128.7
-340.1
-1158.3
148.5
12
-310
148.5
-898
5700
0
18.5
90
-108.9
184.1
-2060.7
-14
-5
-89.1
444.5
118.8
4.1.21
-34.35
4.1.22
4.1.23
4.1.24
14.556
-31.024
451.5
943
4.1.10
-14.85
-20
-5
0
-41.05
-80.7
297
16
320
0
-635
2602.8
0
6
-30
-36.3
209.3
1.1
49.5
12.52
16.12
19.80
-92.98
0
27.1
1.64
23.76
25.46
101.46
12.87
11.52
40
-14.85
-26.76
-178.846
4.32
0.12
6.27
-1.15
14.084
0
4.1.11
4.1.12
-1.5
0
-0.99
-1.4
3.96
18.3
1.6
6.93
4.3 1.5
91.31
-64.89
0
4.6
-13
4.29
-1.4 2.3
29.91
-38.57
3.96
0.4
0
5.94
1.5
0
98.8
-23.82
5.94 3.1
3.4
0.99
14.4
0.9
56.97
-84.83
-2.97 -1.2
0.8
4.95
-2.7 12.7 37.92
9.9
3.0
4.0
0
1.98
9.8
0.8
5.94 0.42 -0.6
9.9
4.1.13
4.1.15
-7.5
30.35
4.1.27
72.45
77.48
-126.316
31.33
1.1 6.93 0.81 -1.2
-82.528
10.03
2.1 -9.9
0
96.66
-78.74
12.7
7.41
64.22
0.72
0.3
29.5
-2.97 -1.2
0.8 4.95 2.7
2.97
0.4
0.3
1.98
0
0.1
4.69
0.99
4.9
0.4
2.97
0.2
-0.3
12.18
-8.28
-1.8
6.6
3.3
0.6
0.8
-3.64
4.48
4.95 1.6
1.2
8.91
0.8
0.3
21.05
-26.93
1.98 -1.5
0.4
-1.98
6.1
0
0.42
11.82
9.9 1.4
2.4
5.94
3.2
23.3
-13.91
38.84
5.94
0.6
-3.96
0.2
0.3
11.44
2.97 6.4
0
-2.97
0.2
0.2
-54.75
29.99
2.97 3.5
8.7
1.98
0.2
0
-4.64
38.7
4.95 1.6
1.2
-8.91
0.8
0.3
20.47
37.19
-0.99 2.5
1.1
-3.96
9
0.4
-95.86
36.74
5.94 1.4
2.4
0
3.2
26.92
67.34
0
0.02
0
4.1.14
1.2
-73.34
11.95
-37.456
3.96 -4.8 19.7 9.9
1.98
1.5
4.1.26
-51.176
3.96
1.3
0 32.83
4.1.25
0.8
0.33
0.1
0.1
0.99
4.9
0.4 2.97
1.32 -1.6
6.6
3.3
13
0.1
1.620
4.1.28
4.1.29
4.1.30
-10.45
22.08
0.94
0.21 -0.3
23.365
18.68
0.24
-14.010
12.50
0.1
1.98
1.2
1.1
6.93
1.98 -1.5
0.4
-1.98
6.1
0.99
0.3
1.65
0.9
0.4
0.81 -1.2
18.955
5.56
0
24.880
-10.28
4.3
-1.500
12.29
Пример решения задачи 4.1.0
Уравнения системы:
15 3 4 5 
 2 16 4 5 

A
 2 3 17 5 


 2 3 4 18
 13 
 1 

b
 17 


 50
Введём значения характеристик системы линейных уравнений:
A=[15,3,4,5;2,16,4,5;2,3,17,5;2,3,4,18]
A
=
15.
2.
2.
2.
3.
16.
3.
3.
4.
4.
17.
4.
5.
5.
5.
18.
b=[-13; 1;-17; 50]
b
=
- 13.
1.
- 17.
50.
Обратите внимание, что функция linsolve решает систему вида Ax  b  0
Решим систему методом Гаусса:
x_gaus=linsolve(A,b)
x_gaus =
1.4529915
0.3760684
1.7606838
- 3.3931624
Сделаем приведение первоначальной системы Ax  b к виду x  Bx  c , удобному
для реализации итераций:
function [B,c]=matricaZeid(n,A,b)
for i=1:1:n,
for j=1:1:n,
if i==j then B(i,j)=0,
else B(i,j)=-A(i,j)/A(i,i),
end
end
c(i)=b(i)/A(i,i)
end
endfunction
И вызвав написанную функцию, получим следующие результаты:
[B,c]=matricaZeid(4,A,b)
c
=
0.8666667
- 0.0625
1.
- 2.7777778
B =
0.
- 0.125
- 0.1176471
- 0.1111111
- 0.2
0.
- 0.1764706
- 0.1666667
- 0.2666667
- 0.25
0.
- 0.2222222
- 0.3333333
- 0.3125
- 0.2941176
0.
Сделаем проверку достаточного условия сходимости метода Зейделя:
function NB=NormB(n,B)
for i=1:1:n,
s(i)=0
for j=1:1:n,
s(i)=s(i)+abs(B(i,j)),
end
end
NB=max(s)
endfunction
NB=NormB(4,B)
NB
= 0.8
Создадим функцию, реализующую метод Зейделя
function [rez]=Zeid(B,c,n,k,x0)
y=x0
for m=1:1:k,
x=y,
for i=1:1:n
u=0,
for j=1:1:(i-1), u=u+B(i,j)*y(j), end
for j=i+1:1:n, u=u+B(i,j)*x(j), end
y(i)=u+c(i),
rez(m,i)=y(i),
end
end
endfunction
Вызов и результаты работы которой, приведены ниже:
x0=[0;-1;1.2;2]
x0
=
0.
- 1.
1.2
2.
rez=Zeid(B,c,4,10,x0)
rez
=
0.08
1.8282467
1.5066536
1.4506353
1.4513537
1.45279
1.4529954
1.4529961
1.452992
1.4529914
- 0.9975
0.4234192
0.4285472
0.3839938
0.3762237
0.3759338
0.3760464
0.3760681
0.3760688
0.3760684
0.5783824
1.5187047
1.7438783
1.7627901
1.7612982
1.7607255
1.7606767
1.7606819
1.7606836
1.7606838
-
2.7489461
3.3889761
3.4041368
3.3946896
3.3931429
3.3931269
3.3931576
3.3931624
3.3931625
3.3931624
Посчитаем абсолютную погрешность вычислений:
max(abs(rez(10,:)-x_gaus'))
ans
=
6.715D-08
Задача
4.2.
Дана
система
положительно-определённая
уравнений
Ax  b  0 ,
разреженная
где
матрица
A
–
симметричная
размерности
nn.
Модифицировать функцию Зейделя, так, чтобы найти решение системы с точностью
  10 6 . Определить число итераций, потребовавшихся для достижения заданной
точности.
Сравнить полученные результаты для нечётных вариантов с результатами варианта
N  1 , для чётных - N  1 , где N - номер варианта.
Таблица к зачётному заданию
N
n
A
4.2.1
50
на главной диагонали элементы равны 218, на
первой наддиагонали – 38, на 4 наддиагонали
b
bi
18
 ie i
bi
18
 ie i
bi
22
 ie i
 11 
cos  
 i 
bi
22
 ie i
 11 
cos  
 i 
bi
10
 ie i
bi
10
 ie i
bi
10
 i e i
– 8, на 9 наддиагонали - 3.
4.2.2
25
на главной диагонали элементы равны 218, на
первой наддиагонали – 38, на 4 наддиагонали
– 8, на 9 наддиагонали – 3.
4.2.3
30
на главной диагонали элементы равны 220, на
первой наддиагонали – 22, на 4 наддиагонали
– 2.
4.2.4
15
на главной диагонали элементы равны 220, на
первой наддиагонали – 22, на 4 наддиагонали
– 2.
4.2.5
40
на главной диагонали элементы равны 150, на
первой наддиагонали – 33, на 5 наддиагонали
– 17, на 6 наддиагонали – 2, на 8 наддиагонали
–1
4.2.6
20
на главной диагонали элементы равны 150, на
первой наддиагонали – 33, на 5 наддиагонали
– 17, на 6 наддиагонали – 2, на 8 наддиагонали
–1
4.2.7
50
на главной диагонали элементы равны 100, на
первой наддиагонали – 27, на 3 наддиагонали
– 15, на 7 наддиагонали –1.
9
cos  
i
4.2.8
25
на главной диагонали элементы равны 100, на
первой наддиагонали – 27, на 3 наддиагонали
bi
10
 i e i
bi
10
 ie i
bi
10
 ie i
bi
18
 ie i
bi
18
 ie i
bi
11
 11 
 i  e i sin
bi
11
 11 
 i  e i sin
– 15, на 7 наддиагонали – 1.
4.2.9
40
на главной диагонали элементы равны 195, на
первой наддиагонали – 27, на 4 наддиагонали
9
cos  
i
– 13, на 9 наддиагонали – 1.
4.2.10
20
на главной диагонали элементы равны 195, на
первой наддиагонали – 27, на 4 наддиагонали
– 13, на 9 наддиагонали – 1.
4.2.11
50
на главной диагонали элементы равны 114, на
второй наддиагонали – 31, на 3 наддиагонали
–2
4.2.12
25
на главной диагонали элементы равны 114, на
второй наддиагонали – 31, на 3 наддиагонали
–2
4.2.13
40
на главной диагонали элементы равны 120, на
первой наддиагонали – 2, на 6 наддиагонали
 
 i 
равны -2.
4.2.14
20
на главной диагонали элементы равны 120, на
первой наддиагонали – 2, на 6 наддиагонали –
 
 i 
2.
4.2.15
40
на главной диагонали элементы равны 450, на
первой наддиагонали – 55, на 7 наддиагонали
bi  i
2
5
ei
bi  i
2
5
ei
– 7, на 8 наддиагонали – 2.
4.2.16
20
на главной диагонали элементы равны 450, на
первой наддиагонали – 55, на 7 наддиагонали
– 7, на 8 наддиагонали – 2.
4.2.17
50
на главной диагонали элементы равны 218, на
первой наддиагонали –38, на 4 наддиагонали –
bi
22
 ie i
 11 
cos  
 i 
bi
22
 ie i
 11 
cos  
 i 
8.
4.2.18
25
на главной диагонали элементы равны 218, на
первой наддиагонали – 38, на 4 наддиагонали
– 8.
4.2.19
30
на главной диагонали элементы равны 22, на
первой наддиагонали элементы равны 2.
4.2.20
15
40
bi
18
 ie i
bi
10
 i e i
9
cos  
i
bi
10
 i e i
9
cos  
i
bi
10
 ie i
bi
10
 ie i
bi
18
 ie i
bi
18
 ie i
bi
10
 ie i
bi
10
 ie i
на главной диагонали элементы равны 22, на
первой наддиагонали элементы равны -2.
4.2.21
bi
18
 ie i
на главной диагонали элементы равны 150, на
первой наддиагонали – 33, на 5 наддиагонали
– 17.
4.2.22
20
на главной диагонали элементы равны 150, на
первой наддиагонали – 33, на 5 наддиагонали
– 17.
4.2.23
50
на главной диагонали элементы равны 97, на
первой наддиагонали – 9, на 3 наддиагонали –
5.
4.2.24
25
на главной диагонали элементы равны 97, на
первой наддиагонали – 9, на 3 наддиагонали –
5.
4.2.25
40
на главной диагонали элементы равны 95, на
первой наддиагонали – 7, на 4 наддиагонали –
31.
4.2.26
20
на главной диагонали элементы равны 95, на
первой наддиагонали –7, на 4 наддиагонали –
31.
4.2.27
50
на главной диагонали элементы равны 14, на
второй наддиагонали – 31, на 3 наддиагонали
–2
4.2.28
25
на главной диагонали элементы равны 14, на
второй наддиагонали – 31, на 3 наддиагонали
–2
4.2.29
30
на главной диагонали элементы равны 12, на
первой наддиагонали – 2, на 6 наддиагонали
bi  i
2
5
ei
bi  i
2
5
ei
равны -2.
4.2.30
15
на главной диагонали элементы равны 12, на
первой наддиагонали элементы равны 2, на 6
наддиагонали равны -2.
Лабораторная работа 5
Задача 5.1. Функция y  f (x) задана таблицей значений y0 ,..., yn , в точках x0 ,..., xn .
Используя метод наименьших квадратов, найти многочлен Pm ( x)  a0  a1 x  ...  am x m –
наилучшего среднеквадратичного приближения оптимальной степени m  m * . За
оптимальное значение m * принять ту степень многочлена, для которой минимальна
величина.
m 
1 n
( Pm ( xk )  yk ) 2 .

n  m k 0
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Задать векторы x и y исходных данных.
2. Написать функцию, реализующую метод наименьших квадратов, с её помощью
найти многочлены Pm для m  0, 1, 2, ... . Вычислить соответствующие им значения  m .
3. Построить гистограмму зависимости  m от m , на основании которой выбрать
оптимальную
степень
m*
многочлена
наилучшего
среднеквадратичного
приближения.
4. На одном чертеже построить графики многочленов Pm , m  0, 1, 2, ...m * , и точечный
график исходной функции.
Таблица к задаче 5.1
x
x
y
5.1.1
y
x
5.1.2
x
y
5.1.3
y
x
5.1.4
y
5.1.5
-1
-2.25
0
4.568
-1
3.614
-0.5
0.72
-2.1
14.1982
-0.7
-0.77
0.375
3.365
-0.74
1.199
-0.25
1.271
-1.8
11.4452
-0.43
0.21
0.563
2.810
-0.48
-0.125
0
1.2
-1.5
9.1586
-0.14
0.44
0.75
2.624
-0.21
-0.5838
0.25
0.7363
-1.2
7.2426
-0.14
0.64
1.125
0.674
0.05
-0.538
0.5
0.24
-0.9
6.3640
0.43
0.03
1.313
0.557
0.31
-0.2855
0.75
-0.175
-0.6
4.8182
0.71
-0.22
1.5
0.384
0.58
0.1111
1
-0.36
-0.3
6.1088
1
-0.84
1.690
-0.566
0.84
0.4529
1.25
-0.328
0
3.9536
1.29
-1.2
1.875
-1.44
1.1
0.6711
1.5
0
0.3
4.6872
1.57
-1.03
2.063
-1.696
1.36
0.6625
1.75
0.3538
0.6
4.7601
1.86
-0.37
2.25
-1.91
1.63
0.4501
2
0.72
0.9
5.8511
2.14
0.61
2.438
-2.819
1.89
0.157
2.25
0.6969
1.2
7.1010
2.43
2.67
2.625
-3.625
2.15
-0.1876
2.5
0
1.5
9.1792
2.71
5.04
2.813
-3.941
2.41
-0.542
2.75
-1.792
1.8
11.421
3
8.90
3
-4.367
2.95
-0.1983
3
-5.16
2.1
14.097
5.1.6
5.1.7
5.1.8
5.1.9
5.1.10
0
-0.9
-0.70
-4.152
0
1.019
2.5
6.109
-3.6
-2.397
0.2
-0.6482
-0.41
1.244
0.3
1.4889
2.75
2.615
-3.08
-0.401
0.4
-0.2436
-0.12
3.182
0.6
2.2079
3
-0.157
-2.56
-0.577
0.6
-0.1
0.17
2.689
0.9
3.0548
3.25
-2.010
-2.04
-1.268
0.8
0.0231
0.46
0.950
1.2
3.8648
3.5
-2.697
-1.52
-0.933
1
0.0260
0.75
-2.743
1.5
4.2161
3.75
-3.615
-1
-0.359
1.2
0.0967
1.04
-5.839
1.8
5.1180
4
-3.478
-0.48
1.107
1.4
-0.2203
1.33
-7.253
2.1
5.7661
4.25
-2.250
0.04
1.300
1.6
-0.3230
1.62
-6.100
2.4
6.6720
4.5
0.193
0.56
1.703
1.8
-0.6472
1.91
-2.144
2.7
7.1960
4.75
2.086
1.08
-0.299
2
-0.7630
2.20
6.103
3
7.8551
5
5.882
1.6
-1.417
5.1.11
5.1.12
5.1.13
5.1.14
5.1.15
0
2.25
-1
0.192
-0.7
1.04
-3
0.262
-0.7
3.822
0.17
1.106
-0.75
-0.054
-0.5
1.08
-2.55
-1.032
-0.375
-1.498
0.33
0.3951
-0.5
-0.209
-0.3
0.68
-2.1
-1.747
-0.05
-2.419
0.5
-0.0334
-0.25
-0.429
-0.1
0.38
-1.65
-1.981
0.275
-1.292
0.67
-0.20
0
-0.413
0.1
0.07
-1.2
-0.564
0.6
0.828
0.83
-0.1137
0.25
-0.491
0.3
-0.03
-0.75
0.774
0.925
1.963
1
0.0294
0.5
-0.357
0.5
-0.38
-0.3
2.400
1.25
2.401
1.17
0.1008
0.75
-0.434
0.7
-0.22
0.15
2.131
1.575
1.877
1.33
0.3
1
-0.140
0.9
-0.36
0.6
2.2
1.9
2.200
1.5
-0.0021
1.25
-0.130
1.1
-0.33
1.05
-0.393
2.25
-1.378
1.67
-0.3682
1.5
0.142
1.3
-0.28
1.5
-1.815
2.55
-2.395
1.83
-1.119
1.75
0.288
1.5
-0.17
1.95
-0.788
2.875
-1.460
2
-2.226
2
0.876
1.7
0.27
2.4
8.030
3.2
3.604
5.1.16
5.1.17
5.1.18
5.1.19
5.1.20
-3.2
-0.173
-0.7
4.166
2
1.108
6
7.079
-0.7
-12.917
-2.66
-0.574
-0.31
-2.278
2.4
1.832
6.4
-1.509
-0.41
3.619
-2.12
-1.811
0.08
-3.172
2.8
2.413
6.8
-7.654
-0.2
9.586
-1.58
-1.849
0.47
-0.506
3.2
3.656
7.2
-12.211
0.17
7.949
-1.04
0.123
0.86
2.748
3.6
5.126
7.6
-13.941
0.46
1.543
-0.5
1.462
1.25
2.665
4
5.552
8
-15.117
0.75
-8.057
0.04
2.399
1.64
1.353
4.4
6.024
8.4
-13.720
1.04
-16.150
0.58
1.300
2.03
-0.294
4.8
7.202
8.8
-10.702
1.33
-20.562
1.12
1.703
2.42
-1.613
5.2
8.590
9.2
-4.696
1.62
-17.720
1.66
-2.045
2.81
-2.223
5.6
8.953
9.6
3.501
1.91
-6.200
2.2
2.817
3.2
4.04
6
10.046
10
10.572
2.2
18.115
5.1.21
5.1.22
5.1.23
5.1.24
5.1.25
0
-2.815
-2
-4.596
-0.5
0.061
5.5
1.542
-1
-5.265
0.25
-2.18
-1.67
-4.216
-0.42
4.185
5.75
0.652
-0.708
-1.994
0.5
-0.225
-1.33
-3.162
-0.33
7.271
6
-0.008
-0.417
0.224
0.75
1.722
-1
-2.459
-0.25
9.683
6.25
-0.620
-0.125
1.146
1
3.492
-0.67
-1.558
-0.17
11.319
6.5
-0.751
0.167
1.552
1.25
3.31
-0.33
-0.876
-0.08
11.469
6.75
-1.183
0.458
-0.148
1.5
2.945
0
-0.168
0
11.324
7
-1.229
0.75
-1.233
1.75
1.449
0.33
0.44
0.08
10.495
7.25
-1.139
1.042
-2.297
2
0.334
0.67
1.715
0.17
9.659
7.5
-0.770
1.333
-2.4
2.25
-1.906
1
2.106
0.25
7.345
7.75
-0.586
1.625
-2.317
2.5
-3.430
1.33
2.845
0.33
5.132
8
-0.066
2.917
-1.223
2.75
-2.983
1.67
3.83
0.42
2.619
8.25
0.633
2.208
2.257
3
0.087
2
4.634
0.5
0.069
8.5
1.542
2.5
7.806
5.1.26
5.1.27
5.1.28
5.1.29
5.1.30
-1
-5.317
-0.4
0.918
-1.3
-1.762
0
5.241
-0.8
3.503
-0.56
-0.581
-0.05
1.258
-0.85
0.955
0.288
4.892
-0.475
-0.55
-0.13
1.137
0.3
0.685
-0.4
3.614
0.575
3.521
-0.15
-1.681
0.313
0.478
0.65
-1.314
0.05
4.707
0.863
1.121
0.175
-1.263
0.75
-0.790
1
-1.709
0.5
3.721
1.15
-1.357
0.5
0.421
1.188
-2.502
1.35
-3.446
0.95
0.402
1.438
-3.5
0.825
1.301
1.625
-2.482
1.7
-2.473
1.4
-3.101
1.725
-3.528
1.15
2.551
2.063
0.554
2.05
0.084
1.85
-2.489
2.013
0.257
1.475
2.937
2.5
7.904
2.4
6.031
2.3
9.868
2.3
10.515
1.8
2.097
Пример решения задачи 5.1.0
 2,75
 0,2
 2 
  1,1 




x    1  y    2,3




 0,5 
 0,1 
 1 
 1,1 
Численное решение задачи:
Зададим значения векторов x и y .
x=[-2.75;-2;-1;0.5;1]
x
=
- 2.75
- 2.
- 1.
0.5
1.
y=[-0.2;-1.1;-2.3;0.1;1.1]
y
=
- 0.2
- 1.1
- 2.3
0.1
1.1
зададим функцию, реализующую метод наименьших квадратов
function [a]=MethodNK(x,y,n,m)
/файл MethodNK.sci
for j=1:1:m+1,
b(j)=0,
for i=1:1:n,
b(j)=b(j)+y(i)*x(i)^(j-1),
end
for k=1:1:m+1,
G(j,k)=0,
for i=1:1:n,
G(j,k)=G(j,k)+x(i)^((k-1)+(j-1)),
end
end
end
a=linsolve(G,-b)
endfunction
и вызовем её, изменяя параметр m – степень многочлена:
a0=MethodNK(x,y,5,0)
a0 =
- 0.48
a1=MethodNK(x,y,5,1)
a1 =
- 0.1333333
0.4078431
a2=MethodNK(x,y,5,2)
a2 =
- 1.1024569
1.5980759
0.7170394
a3=MethodNK(x,y,5,3)
a3 =
- 1.1639885
1.591084
0.7915089
0.0261813
a4=MethodNK(x,y,5,4)
a4 =
- 1.1270085
2.2671795
0.7006838
- 0.5671795
- 0.1736752
a5=MethodNK(x,y,5,5)
a5 =
- 0.6060323
1.675161
- 0.6254376
- 0.1646069
0.6314699
0.1894459
Сведём полученные результаты в одну матрицу
a=[a0,0,0,0,0,0;a1',0,0,0,0;a2',0,0,0;a3',0,0;a4',0;a5']
a
=
-
0.48
0.1333333
1.1024569
1.1639885
1.1270085
0.6060323
0.
0.4078431
1.5980759
1.591084
2.2671795
1.675161
0.
0.
0.7170394
0.7915089
0.7006838
- 0.6254376
0.
0.
0.
0.0261813
- 0.5671795
- 0.1646069
0.
0.
0.
0.
- 0.1736752
0.6314699
0.
0.
0.
0.
0.
0.1894459
Реализуем функцию, считающую значение интерполирующего полинома в точке
сетки:
function [Pm]=Znach(n,a,m,x)
Pm=0
for i=1:1:m+1,
Pm=Pm+a(m+1,i)*x(n)^(i-1),
end
endfunction
// n – номер точки (индекс вектора х), в которой
значение полинома;
// a – матрица коэффициентов полинома;
// m – степень полинома (0…5);
// x – вектор x координат интерполируемой функции.
Посчитаем значения  m
function [SIGMAm]=Sigma(k,m,x,y)
SIGMAm=0
for i=1:1:k,
SIGMAm=SIGMAm+(Znach(i,a,m,x)-y(i))^2,
end
SIGMAm=sqrt(SIGMAm*(1/(k-m)))
Endfunction
// n – номер точки (индекс вектора х), в которой
значение полинома;
// k – длина векторов x и y;
// m – степень полинома (0…5);
// x – вектор x координат интерполируемой функции;
// y – вектор y координат интерполируемой функции.
считается
считается
Вызов этой функции даст следующие результаты
S0=Sigma(5,0,x,y)
S0 =
1.1496086
S1=Sigma(5,1,x,y)
S1 =
1.1080808
S2=Sigma(5,2,x,y)
S2 =
0.3098656
S3=Sigma(5,3,x,y)
S3 =
0.3760910
S4=Sigma(5,4,x,y)
S4 =
1.235D-13
Пункты 3 и 4 задания выполните самостоятельно.
Задача 5.2. Функция y  f (x) задана таблицей значений y0 ,..., yn , в точках x0 ,..., xn .
Найти приближённое значение функции f (x) в точке x – любой внутренней точке
интервала [ x0 , xn ] с помощью интерполяционного многочлена Лагранжа.
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Задать векторы x и y исходных данных.
2. Написать функцию, строящую многочлен Лагранжа в виде полинома и посчитать
значение функции f (x) x .
3. Построить график полученного многочлена Лагранжа и точечный график заданной
функции.
Таблица к задаче 5.2
x
y
x
y
5.2.1
x
y
5.2.2
x
y
5.2.3
x
5.2.4
y
5.2.5
0,43
1,63597
0,02
1,02316
0,35
2,73951
0,41
2.57418
0.68
14.1982
0,48
1,73234
0,08
1,0959
0,41
2,3008
0,46
2.32513
0.73
8.80866
0,55
1,87686
0,12
1,14725
0,47
1,96864
0,52
2.09336
0.8
4.89492
0,62
2,03345
0,17
1,21483
0,51
1,78776
0,6
1.86203
0.88
2.02964
0,7
2,22846
0,23
1,3012
0,56
1,59502
0,65
1.74926
0.93
1.34087
0,75
2,35973
0,3
1,40976
0,64
1,3431
0,72
1.62098
0.99
0.52368
y
x
x
y
5.2.6
x
y
5.2.7
x
y
5.2.8
x
5.2.9
y
5.2.10
0.11
9.05421
0,44
2,35973
0,03
1,40976
0,36
1,3431
0,43
10.1982
0.15
6.61659
0,49
2,22846
0,09
1,3012
0,42
1,59502
0,48
7.80866
0.21
4.6917
0,56
2,03345
0,13
1,21483
0,48
1,78776
0,54
5.89492
0.29
3.35106
0,63
1,87686
0,18
1,14725
0,52
1,96864
0,62
4.02964
0.35
2.73951
0,71
1,73234
0,24
1,0959
0,57
2,3008
0,67
1.34087
0.4
2.36522
0,76
1,63597
0,31
1,02316
0,65
2,73951
0,74
0.52368
y
x
x
5.2.11
y
x
5.2.12
y
x
5.2.13
y
x
5.2.14
y
5.2.15
1,63597
0,43
1,02316
0,35
2,73951
0,41
2.57418
0.68
14.1982
0.11
1,73234
0,48
1,0959
0,41
2,3008
0,46
2.32513
0.73
8.80866
0.15
1,87686
0,55
1,14725
0,47
1,96864
0,52
2.09336
0.8
4.89492
0.21
2,03345
0,62
1,21483
0,51
1,78776
0,6
1.86203
0.88
2.02964
0.29
2,22846
0,7
1,3012
0,56
1,59502
0,65
1.74926
0.93
1.34087
0.35
2,35973
0,75
1,40976
0,64
1,3431
0,72
1.62098
0.99
0.52368
0.4
x
y
5.2.16
9.05421
0,44
x
y
5.2.17
2,35973
0,03
x
y
5.2.18
1,40976
0,36
x
y
5.2.19
1,3431
0,43
x
y
5.2.20
10.1982
0,02
6.61659
0,49
2,22846
0,09
1,3012
0,42
1,59502
0,48
7.80866
0,08
4.6917
0,56
2,03345
0,13
1,21483
0,48
1,78776
0,54
5.89492
0,12
3.35106
0,63
1,87686
0,18
1,14725
0,52
1,96864
0,62
4.02964
0,17
2.73951
0,71
1,73234
0,24
1,0959
0,57
2,3008
0,67
1.34087
0,23
2.36522
0,76
1,63597
0,31
1,02316
0,65
2,73951
0,74
0.52368
0,3
x
y
x
5.2.21
x
y
5.2.22
y
x
5.2.23
y
x
5.2.24
y
5.2.25
0.11
1,63597
0,44
1,02316
0,03
2,73951
0,36
2.57418
0,43
14.1982
0.15
1,73234
0,49
1,0959
0,09
2,3008
0,42
2.32513
0,48
8.80866
0.21
1,87686
0,56
1,14725
0,13
1,96864
0,48
2.09336
0,54
4.89492
0.29
2,03345
0,63
1,21483
0,18
1,78776
0,52
1.86203
0,62
2.02964
0.35
2,22846
0,71
1,3012
0,24
1,59502
0,57
1.74926
0,67
1.34087
0.4
2,35973
0,76
1,40976
0,31
1,3431
0,65
1.62098
0,74
0.52368
y
x
x
5.2.26
x
y
5.2.27
y
x
5.2.28
y
x
5.2.29
y
5.2.30
0,43
9.05421
0,02
2,35973
0,35
1,40976
0,41
1,3431
0.68
10.1982
0,48
6.61659
0,08
2,22846
0,41
1,3012
0,46
1,59502
0.73
7.80866
0,55
4.6917
0,12
2,03345
0,47
1,21483
0,52
1,78776
0.8
5.89492
0,62
3.35106
0,17
1,87686
0,51
1,14725
0,6
1,96864
0.88
4.02964
0,7
2.73951
0,23
1,73234
0,56
1,0959
0,65
2,3008
0.93
1.34087
0,75
2.36522
0,3
1,63597
0,64
1,02316
0,72
2,73951
0.99
0.52368
Лабораторная работа 5
Задача 6.1. Даны два уравнения f ( x)  0 и g ( x )  0 . Найти с точностью   10 5 все
корни уравнений, содержащиеся на отрезке [a, b] . Для решения задачи использовать
метод дихотомии. Найти корни с помощью встроенной функции root пакета Scilab.
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Найти аналитическое решение уравнения f ( x)  0 .
2. Используя пакет Scilab, локализовать корни f ( x)  0 графически.
3. Реализовать метод дихотомии, найти корни уравнения f ( x)  0 с точностью  .
4. Используя встроенную функции пакета Scilab, найти корни уравнения f ( x)  0 .
5. Аналогично п. 1-4 попытаться найти корни уравнения g ( x )  0 . Объяснить
полученные результаты.
Таблица к задаче 6.1
f (x )
N
g (x )
[ a, b]
0,1
6.1.1
 sin x 2 
5
1
sin x 
6
6
 sin x 2  sin x 
6.1.2
 sin x 2 
7
1
sin x 
12
12
 sin x 2 
2
1
sin x 
3
9
6.1.3
 sin x 2 
1
1
sin x 
30
30
 sin x 2 
2
1
sin x 
5
25
6.1.4
 cos x 2 
2
1
cos x 
35
35
 cos x 2 
2
1
cos x 
7
49
6.1.5
 cos x 2  
1 1
1
  cos x 
4 2
 2 4
 cos x 2 
2
1
cos x 
2
2
6.1.6
 cos x 2 
1
1
cos x 
2
18
 cos x 2 
6.1.7.
 ln x 2  5ln x  6
 ln x 2  4ln x  4
[5,25]
6.1.8
 ln x 2  ln x  2
 ln x 2  2ln x  1
[0.1,10]
6.1.9
 ln x 2 
6.1.10
 tgx 2  (
6.1.11
 tgx  
6.1.12
 tgx 2 
6.1.13
x4  7 x2  10
x4  4 x2  4
[0,3]
6.1.14
x4 
10 2
x 1
3
x4  6 x2  9
[0,2]
6.1.15
x4 
13 2
x 3
2
x4  x2 
1
4
6.1.16
 sin x 2 
5
1
sin x 
6
6
 sin x 2 
2
1
sin x 
3
9
6.1.17
 sin x 2 
7
1
sin x 
12
12
 sin x 2 
1
1
sin x 
2
16
2
3
1
ln x 
4
8
1
4
1
1
cos x 
3
36
 ln x 2  ln x 
1
4
 1,0
 0.5,0.5
0,2
0,1.5
0,2
[0.1,2]
 tgx 2  2tgx  1
 1.2,1
28
1
tgx 
9
3
 tgx 2  6tgx  9
0,1.5
53
3
tgx 
6
2
 tgx 2 
3  1)tgx  3
1
1
tgx 
3
36
0.5,1.5
[0,3]
 1,0
0,1
 0.5,0.5
6.1.18
 sin x 2 
1
1
sin x 
30
30
 sin x 2 
1
1
sin x 
3
36
6.1.19
 cos x 2 
2
1
cos x 
35
35
 cos x 2 
2
1
cos x 
5
25
6.1.20
 cos x 2  
1 1
1
  cos x 
4 2
 2 4
 cos x 2 
1
1
cos x 
2
16
6.1.21
 cos x 2 
1
1
cos x 
2
18
2
1
(cos x)2  cos x 
3
9
6.1.22
 lg x 2 
6.1.23
 lg x 2  lg x 
6.1.24
3
1
 lg x 2  lg x 
4
4
6.1.25
 tgx 2  (1 
6.1.26
 tgx 2 
7
1
tgx 
4
2
 tgx 2 
6.1.27
 tgx  
37
tgx  1
6
 tgx 2  12tgx  36
[-1.5,0]
6.1.28
x4  11x2  24
x4  6 x2  9
[1,3]
6.1.29
x4 
26 2
x 1
5
x4  10 x2  25
[0,3]
6.1.30
x4 
21 2
x 5
2
x4  x2 
2
5
2
lg x 
3
3
 lg x 2 
3
4
1
1
)tgx 
3
3
1
1
cos x 
0
12
24
[a, b]  [0, ]
Аналитическое решение задачи:
1 
1

f ( x)   cos x     cos x  
4 
6 ,

0,2
0,2
[0.001,3]
9
4
[0.1,35]
 lg x 2  2lg x  1
[0.01,3]
 tgx 2  2tgx  1
0,1
 lg x 2  3lg x 
Пример решения задачи 6.1.0
f ( x)  cos 2 x 
2
1
lg x 
3
9
0,3
1
1
tgx 
2
16
1
4
[-0.5,1.5]
[0,5]
1
x1  arccos( )  1,31811607652818
4
1
x2    arccos( )  1,738244406014586
6
Численное решение задачи: Локализация корней для численного решения задачи:
Локализуем корни уравнения графически:
xbasc();
x=[0:0.1:%pi]';
plot2d(x,[cos(x)^2-cos(x)/12-1/24 0*x])
На полученном графике видно, что на заданном промежутке существует два корня
уравнения, первый на интервале [1;1,5], второй – на интервале [1,5; 2].
Реализуем алгоритм дихотомии. Листинг программы приведён ниже.
function [y]=formula(x)
x=double(x)
y=cos(x)^2-cos(x)/12-1/24
endfunction
function [x,k]=dihot(a,b,eps)
an=a
bn=b
k=0
while abs(bn-an)<eps,
xn=(an+bn)/2,
fa=formula(an),
fb=formula(bn),
fxn=formula(xn),
if fa*fxn<0 then bn=xn;
else an=xn;
end
k=k+1
end;
x=(an+bn)/2
endfunction
В результате вызова функции
[x,k]=dihot(1,1.5,0.00001)
получим следующие результаты:
х=1.318119
k= 16.
Сравним полученные результаты с расчётом встроенной функции пакета Scilab:
deff('f=y(x)','f=cos(x)^2-1/12*cos(x)-1/24')
fsolve(1,y)
ans=1.3181161
Аналогично найти второй корень.
Задача 6.2. Реализовать метод касательных и метод Риддлера и найти корни
уравнений f ( x)  0 с точностью 106 .
ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ:
1. Используя пакет Scilab, локализовать корни f ( x)  0 графически.
2. Реализовать метод касательных и посчитать с его помощью корни уравнения
f ( x)  0 , взяв в качестве начального такой интервал [a, b] , что a  b  1
3. Реализовать метод Риддлера и посчитать с его помощью корни уравнения f ( x)  0
на этом же начальном интервале.
4. Сравнить полученное количество итераций, и объяснить полученные результаты.
Таблица к задаче 6.2
f (x )
N
f (x )
N
6.2.1
 x  2  x2
6.2.16
x ln x  x 2  3x  1
6.2.2
x  3 x
6.2.17
  x  5 x 2  10 x
6.2.3
x x  x  1
6.2.18
x 3  0.9 x 2  x  0.1
6.2.4
 x  1  9  x2
6.2.19
ln( 2 x  x 2 )  2  x
6.2.5
( x  1) x 1  x  2
6.2.20
6.2.6
x  cos x
x  x 2  10
6.2.21
 x  x2  4
6.2.7
sin x  2 x 2  4 x
6.2.22
x x  x  2
6.2.8
  x  2  lg( 1  x 2 )
6.2.23
 x  1  3 9  x2
6.2.9
sin( x  2)  x 2  2 x  1
6.2.24
6.2.10
( x  1) sh( x  1)  x
6.2.25
  x  2  ln( 1  x 2 )
6.2.11
x   x
2
6.2.26
x2   x
6.2.12
2  x2   x
6.2.27
6.2.13
ln x  2 cos x
6.2.28
lg x  2 cos x
6.2.14
xcos x  1
6.2.29
xsin x  1
x  sin x
2
2  x2   x
6.2.15
  ( x 1)  x 2  2 x  1
6.2.30
x  x3  10
Лабораторная работа 7
Задача 7.1. Найти с точностью   10 5 все корни системы нелинейных уравнений
f1 ( x1 , x2 )  0
f 2 ( x1 , x2 )  0
используя метод Ньютона для системы нелинейных уравнений. Найти корни с
помощью встроенного блока решения уравнений пакета Scilab.
ПОРЯДОК РЕШЕНИЯ ЗАДАЧИ:
1. Используя пакет Scilab, локализовать корни системы уравнений графически.
2. Составить программу-функцию, вычисляющую корень системы двух нелинейных
уравнений по методу Ньютона с точностью  . Предусмотреть подсчёт количества
итераций. Для решения соответствующей системы линейных алгебраических
уравнений использовать встроенную функцию пакета Scilab.
3. Используя составленную программу, вычислить все корни заданной системы с
точностью  .
4. Используя встроенный блок пакета Scilab, найти все корни системы с точностью  .
Сравнить с результатами, полученными в п. 3.
Таблица к задаче 7.1
N
Система
N
уравнений
7.1.1
sin( x1  x2 )  x2  1.2  0
уравнений
7.1.16
2 x1  cos x2  2  0
7.1.2
cos( x1  1)  x2  0.5  0
sin x1  2 x2  2  0
7.1.17
cos x1  x2  1.5  0
2 x1  sin( x2  0.5)  1  0
tan( x1x2  0.3)  x12  0
0.9 x12  2 x22  1  0
7.1.18
cos x1  x2  1.5  0
7.1.4
sin(0.5 x1  x2 )  1.2 x1  1  0
x12  x22  1  0
sin x1  2 x2  2  0
7.1.3
Система
sin( x1  x2 )  1.3x1  1  0
x12  0.2 x22  1  0
7.1.19
tan( x1x2 )  x12  0
0.8 x12  2 x22  1  0
7.1.5
sin( x1  1.5)  x2  2.9  0
7.1.20
cos( x2  2)  x1  0
7.1.6
cos( x1  0.5)  x2  0.8  0
3x12  x22  1  0
7.1.21
sin x2  2 x1  1.6  0
7.1.7
sin( x1  1)  x2  0.1  0
cos( x1  x2 )  2 x2  0
7.1.22
cos( x1  0.5)  x2  2  0
7.1.23
sin( x1  x2 )  x2  1.5  0
7.1.24
sin( x2  1)  x1  1.2  0
7.1.25
cos( x2  1)  x1  0.5  0
7.1.26
tan( x1x2  0.4)  x12  0
7.1.27
sin( x1  x2 )  1.6 x1  1  0
7.1.28
tan( x1x2  0.1)  x12  0
x12  2 x22  1  0
sin( x2  1)  x1  1  0
2 x2  cos x1  0.5  0
7.1.29
cos( x2  1)  x1  0.8  0
x2  cos x1  2  0
x12  x22  1  0
7.1.15
sin( x1  1)  x2  1.5  0
x1  sin( x2  1)  1  0
0.6 x12  2 x22  1  0
7.1.14
cos( x2  2)  x1  0
sin( x1  0.5)  x2  2.9  0
x2  cos x1  3  0
7.1.13
cos( x1  0.5)  x2  1  0
sin x2  2 x1  2  0
2 x12  x2  2  0
7.1.12
sin( x1  x2 )  x1  0.1  0
x2  cos(3x1)  0.1  0
x1  cos( x2  0.5)  0.5  0
7.1.11
tan( x1x2  0.2)  x12  0
0.6 x12  2 x22  1  0
sin x2  2 x1  1  0
7.1.10
sin( x1  x2 )  1.2 x1  0.1  0
x12  x22  1  0
x1  sin x2  0.6  0
7.1.9
tan( x1x2 )  x12  0
0.7 x12  2 x22  1  0
x1  sin( x2  1)  0.8  0
7.1.8
sin( x1  x2 )  1.5 x1  0.1  0
7.1.30
cos( x1  1)  x2  1  0
sin x2  2 x1  1.6  0
Пример решения задачи 7.1.0
Уравнения системы:
f1 ( x1 , x2 )  x2  1,5  cos( x1  1)  1
f 2 ( x1 , x2 )  0,9 x22  0,4 x12  1
Локализация корней:
Первое уравнение, разрешенное относительно x2 :
1 ( x2 )  1  1,5  cos( x1  1)
Второе уравнение, разрешенное относительно x2 :
1  0,4 x12
0,9
 2 ( x2 ) 
xbasc();
x=[-2:0.1:2]';
y1=1-1.5*cos(x-1);
y2=sqrt((1-0.4*x^2)/0.9);
y3=-sqrt((1-0.4*x^2)/0.9);
plot2d(x,[y1 y2 y3]);
xgrid(4)
На полученном графике видно, что в качестве начального приближения для первого
корня подойдёт точка (-0,5; 1), для второго - [1,5; -0,5].
Посчитаем значения с помощью встроенной функции пакета Scilab.
function [y]=ValEq(x)
y(1)=x(2)+1.5*cos(x(1)-1)-1
y(2)=0.9*x(2)^2+0.4*x(1)^2-1
endfunction
exec('C:\ValEq.sci');disp('exec done');
exec done
fsolve([-0.5 1], ValEq)
ans
=
- 0.5611180
0.9854828
Download