Лабораторная работа 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 uv uv uv uv i 3 , y3 i 3 2 2 2 2 где u3 q q D , v3 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 A1 – являющееся теоретической точностью вычислений решения системы линейных уравнений. 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 – симметричная размерности nn. Модифицировать функцию Зейделя, так, чтобы найти решение системы с точностью 10 6 . Определить число итераций, потребовавшихся для достижения заданной точности. Сравнить полученные результаты для нечётных вариантов с результатами варианта N 1 , для чётных - N 1 , где N - номер варианта. Таблица к зачётному заданию N n A 4.2.1 50 на главной диагонали элементы равны 218, на первой наддиагонали – 38, на 4 наддиагонали b bi 18 ie i bi 18 ie i bi 22 ie i 11 cos i bi 22 ie i 11 cos i bi 10 ie i bi 10 ie 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 ie i bi 10 ie i bi 18 ie i bi 18 ie 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 ie i 11 cos i bi 22 ie 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 ie i bi 10 i e i 9 cos i bi 10 i e i 9 cos i bi 10 ie i bi 10 ie i bi 18 ie i bi 18 ie i bi 10 ie i bi 10 ie i на главной диагонали элементы равны 22, на первой наддиагонали элементы равны -2. 4.2.21 bi 18 ie 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 с точностью 106 . ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ: 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 xcos x 1 6.2.29 xsin 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