ЭВМ_Семестр3_МетодПособие
.pdf
|
|
|
|
|
|
|
|
|
|
|
−2 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
< <0 |
(1.11) |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|||
|
|
|
|
|
|
|
|
|
|
|
cos + − |
|
||
|
|
|
|
|
|
|
|
|
|
3 |
|
|
||
|
Для поиска корня в интервале [0,5;1,5], выбираем начальное при- |
|||||||||||||
ближение x = |
|
≈ 1,05 и подставляем его в формулу (1.11). Получа- |
||||||||||||
3 |
||||||||||||||
|
|
|
−2 |
|
|
|
|
|
|
|||||
ем |
|
|
|
< <0 или -1,94< <0. Для вычисления |
корня методом |
|||||||||
|
|
|
|
|
|
|
||||||||
1 |
|
3 |
|
1 |
||||||||||
|
|
|
|
|
|
|
|
|
||||||
|
|
|
+ |
|
|
− |
|
|
|
|
|
|
||
|
2 |
2 |
|
|
|
|
|
|
||||||
|
|
|
3 |
|
|
|
|
|
|
итераций назначим значение =-1,3, которое лежит на отрезке [-1,94 ; 0].
Для корня, лежащего на отрезке [-2;-1], выберем начальное приближение x =-2, Так как производная f '(-2) отрицательная получим 0 < < −−1,662 или 0< <1,2. Для расчета можно назначить значение
= 0,9. Ниже приведен текст макроса на языке VBA вычисления корня уравнения лежащего на отрезке [0,5;1,5] методом простой итерации. В программе комментарием (оператором «REM») помечены строки, которые следует изменить для поиска корня на отрезке [-2; -1]. Оператором «Rem Ньютон» помечены строки, которые следует использовать, для вычисления корней методом Ньютона.
Sub main_Iter()
Dim a As Single, b As Single, delta As Single Dim x1 As Single, k1 As Integer
delta = 0.0001 ' заданная точность вычисления
x1 = 1.05 ' начальное приближения для вычисления ' корня в интервале [0,5; 1]
Rem x1 = -2.0 ' начальное приближения для вычисления ' корня в интервале [-2; -1]
Call iter_1(delta, 100, x1, k1)
Debug.Print "Ответ: Метод итераций x1="; x1, "k1="; k1
End Sub
Function fi(x) ' функция для вычисления итерационной формулы fi = x - 1.3*(Sin(x) - Cos(x) - x / 3) ' для корня на отрезке [0,5;1,5]
Rem fi = x + 0.9 *(Sin(x) - . . . для корня на отрезке [-2;-1] 31
Rem Ньютон fi = x - (Sin(x) - Cos(x) - x / 3)/(Cos(x)+Sin(x) 1/3)
End Function
Sub iter_1(eps As Single, limit As Integer, x As Single, n As Integer) n = 0
Debug.Print " Метод итераций x= "; x
Do
x1 = fi(x)
Debug.Print "n="; n," x1="; x1, "Delta=";Abs(x-x1)
If Abs(x - x1) < eps Then Exit Sub x = x1
n = n + 1
If n >= limit Then
Debug.Print "Превышено предельное число итераций"
Exit Sub End If
Loop End Sub
Результаты расчета макроса:
Метод итераций x= 1,05 |
|
|
||
n= 0 |
x1= 1,0241921981691 |
Delta= 2,58077541471815E-02 |
||
n= 1 |
x1= 1,03315175987991 |
Delta= 8,95954586776093E-03 |
||
n= 2 |
x1= 1,03000694509424 |
Delta= 3,14480070196588E-03 |
||
n= 3 |
x1= 1,03110673303375 |
Delta= 1,09984750518666E-03 |
||
n= 4 |
x1= 1,03072159268933 |
Delta= 3,851177446339E-04 |
||
n= 5 |
x1= 1,03085640517607 |
Delta= 1,34859956651301E-04 |
||
Метод итераций |
x1= |
1,030856 k1= |
6 |
32
Вычисление наименьшего корня методом деления отрезка пополам с относительной погрешностью, не превышающей Eps=0.0005, и с включѐнной вспомогательной печатью (KP=1):
Sub MainDOP() ' с хранением x, f в ячейках A1, B1 с именами "x", "f" ActiveWorkbook.Names.Add Name:="x", RefersToR1C1:="=Лист1!R1C1" ActiveWorkbook.Names.Add Name:="f", RefersToR1C1:="=Лист1!R1C2" Range("f") = "=SIN(x)-COS(x)-x/3" ' формулу в ячейку с именем «f» Debug.Print DOP("f", "x", -3, -1, Eps:=0.0005, KP:=1) , Range("x")
End Sub
Iter= 1 |
X=-2 |
Iter= 2 |
X=-1,5 |
Iter= 3 |
X=-1,75 |
Iter= 4 |
X=-1,875 |
Iter= 5 |
X=-1,9375 |
Iter= 6 |
X=-1,90625 |
Iter= 7 |
X=-1,890625 |
Iter= 8 |
X=-1,8984375 |
Iter= 9 |
X=-1,89453125 |
Iter= 10 |
X=-1,892578125 |
Iter= 11 |
X=-1,8935546875 |
True -1,8935546875
Интерфейс функции DOP (см. литературу [5]) представлен ниже:
Function DOP(Fch As String, Xch As String, a As Double, b As Double, _ Optional Eps As Double = 0.0001, Optional KP As Integer = -1, _
Optional Iter As Integer) As Boolean
' Fch, Xch - имена ячеек с функцией и аргументом,
'a, b - левая и правая границы отрезка, содержащего корень,
'Eps - относительная погрешность корня |X* - X|/max(|a|,|b|)<Eps,
'KP - код вспомогательной печати: KP<0 - нет вывода,
' |
KP>=0 - вывод в окно отладки, |
' |
Iter - число выполненных приближений (выходной параметр). |
33
Пример 1.4
Используя электронные таблицы Excel, найти корень уравнения sin x cos x 3x 0 с точностью =0.0001 методом простых итераций и методом касательных.
Решение данной задачи средствами Excel может быть выполнено:
с использованием циклических ссылок;
с помощью специальных средств Excel – «подбор параметра», либо «поиск решения»;
с использованием стандартных возможностей Excel.
Использование в Excel циклических ссылок для решения нелинейных уравнений является достаточно экзотической возможностью и, при желании, можно найти соответствующую статью в Интернет. Работа по подбору параметра и поиску решения описано в справке Excel, поэтому рассматривать этот способ не будем.
Вариант решения выше приведенного уравнения методом итераций представлен на рисунке 1.15. Значение параметра λ задается в ячейке D1 и используется в формуле ячейки В3 в абсолютной адресации. Диапазон ячеек A3:C3, с помощью маркера «Автозаполнения», затем «протягивается» вниз до тех пор, пока число с столбце «С» не станет меньше 0.0001.
Рисунок 1.15 – Фрагмент таблицы Excel реализующий метод простой итерации для решения уравнения sin x cos x 3x 0
На рисунках 1.16 и 1.17, в режиме отображения значений, представлены фрагменты таблицы Excel для нахождения двух корней
уравнения sin x cos x 3x 0 .
34
Рисунок 1.16 – Фрагмент таблицы Exсel для вычисления корня уравнения в интервале [0,5;1,5]
Рисунок 1.17 - Фрагмент таблицы Exсel для вычисления корня уравнения на отрезке [-2 ; -1] методом итераций
Вариант решения этого уравнения методом касательных представлен на рисунке 1.18 в режиме отображения формул, а на рисунке 1.19 в режиме отображения значений. Можно отметить, что методу Ньютона для вычисления корня с точностью 0,001 понадобилось все-
35
го две итерации, а методу простых итераций необходимо было сделать семь итераций.
Рисунок 1.18 - Фрагмент таблицы Exсel для вычисления корня уравнения на отрезке [0,5 ; 1,5] методом касательных
Рисунок 1.19 - Фрагмент таблицы Exсel для вычисления корня уравнения методом Ньютона в интервале [0,5 ; 1,5]
Пример 1.5
Используя встроенную функцию roots пакета MATLAB, найти корни алгебраического уравнения x3-7x+6 = 0. В квадратных скобках задаются коэффициенты многочлена, в порядке убывания степеней х.
f=inline('x^3-7*x+6') figure;
fplot(f,[-3 3]); grid;
x=roots([1 0 -7 6])
Корни уравнения
x = -3.0000
2.0000
1.0000
36
1.2 Задание к расчетно-графической работе №1
Вычислить минимальный положительный корень уравнения f(x)=0 своего варианта, представленного в таблице 1.1. Вычисления выполнить:
средствами электронной таблицы Excel;
с использованием макроса на языке VBA;
средствами пакета MatLab.
Точность вычисления δ= 0.0001. Метод вычисления корня указан в таблице 1.1.
Таблица 1.1 Варианты заданий для РГР №1
№ |
Функция |
f(x) |
Метод вычисления |
||
вар. |
уравнения f(x)=0 |
|
|
||
|
|
|
|
|
|
1 |
2 |
|
3 |
||
|
|
|
|
|
|
1. |
Ln(x) - e-x – 0,9 |
|
Метод деления отрезка пополам |
||
|
|
|
|
|
|
2. |
Ln(x) - Sin2(x) |
|
Метод простой итерации |
||
|
|
|
|
|
|
3. |
Cos(x)-2Cos(3x) |
|
Метод Ньютона |
||
|
|
|
|
|
|
4. |
xSin(x)-Cos(x-1) |
|
Модифицированный метод Ньютона |
||
|
|
|
|
|
|
5. |
1 - x + Sin(x) - lg(1+x) |
|
Метод деления отрезка пополам |
||
|
|
|
|
|
|
6. |
Sin(x+π/4) - x/3 |
|
Метод простой итерации |
||
|
|
|
|
|
|
7. |
e-x-Sin(x- π/4) |
|
Метод Ньютона |
||
|
|
|
|
||
8. |
|
|
|
|
|
Cos(x) +0,5 |
|
Модифицированный метод Ньютона |
|||
|
|
|
|
||
9. |
Lg(x)-e-x-0,5 |
|
Метод деления отрезка пополам |
||
|
|
|
|
||
10. |
Sin(x)+5Sin(3x)+0,5 |
|
Метод простой итерации |
||
|
|
|
|
||
11. |
(1-2/x)e-x |
|
Метод Ньютона |
||
|
|
|
|
|
|
37
Продолжение Таблицы 1.1
1 |
2 |
|
3 |
|
|
|
|
|
|
12. |
Ln(1+x)/(ex-1) – 0,3 |
Модифицированный метод Ньютона |
||
|
|
|
|
|
13. |
Cos(x)-Ln(x) |
Метод деления отрезка пополам |
||
|
|
|
|
|
14. |
Ln2(x+1)-Cos(x+1) |
Метод простой итерации |
||
|
|
|
|
|
15. |
ex - e-x -5 |
Метод Ньютона |
||
|
|
|
|
|
16. |
Ln(x) - Sin(x) |
Модифицированный метод Ньютона |
||
|
|
|
|
|
17. |
3Cos(x)-1/x |
Метод деления отрезка пополам |
||
|
|
|
|
|
18. |
Sin(x) - 1/x |
Метод простой итерации |
||
|
|
|
|
|
19. |
Ln(1+x)/x - 2/ π |
Метод Ньютона |
||
|
|
|
|
|
20. |
e(1-x)Ln(1+x2)-0,4 |
Модифицированный метод Ньютона |
||
|
|
|
|
|
21. |
Cos(x+π/4)-Ln(2+x)+2 |
Метод деления отрезка пополам |
||
|
|
|
|
|
22. |
Ln(x) - 1/x |
Метод простой итерации |
||
|
|
|
|
|
23. |
Ln(π x)xe-x |
Метод Ньютона |
||
|
|
|
|
|
24. |
1+Ln(x) - π/x |
Модифицированный метод Ньютона |
||
|
|
|
|
|
25. |
x3-3x-5 |
Метод деления отрезка пополам |
||
|
|
|
|
|
26. |
Ln(x) - 1/x2 |
Метод простой итерации |
||
|
|
|
||
|
Cos(x-3 π/4)/ |
|
|
Метод Ньютона |
27. |
|
|
||
|
|
|
||
28. |
Lg(x)-πCos(x)2 |
Модифицированный метод Ньютона |
||
|
|
|
||
29. |
e2-x - x2 |
Метод деления отрезка пополам |
||
30. |
Cos(x+π/4) - Ln(2+x)+2 |
Метод простой итерации |
||
|
|
|
|
|
38
2 РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА №2 Решение систем линейных алгебраических уравнений
методом (прямые методы)
2.1 Краткие теоретические сведения
2.1.1 Формулировка задачи
Во многих инженерных и научных расчетах приходится решать системы линейных алгебраических уравнений (СЛАУ)
a11x1 a12x2 |
... a1n xn |
b1 |
|
||||||
|
|
a22x2 |
... a2n xn |
b2 |
|
||||
a21x1 |
|
||||||||
|
|
|
|
|
|
, |
(2.1) |
||
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
a |
x a |
n 2 |
x |
... a |
nn |
x |
b |
|
|
|
n1 1 |
|
2 |
|
n |
n |
|
||
когда число неизвестных |
x1 , x2 , , xn равно числу n уравнений. |
||||||||
В матричной форме эта задача записывается следующим образом: |
|||||||||
|
|
|
|
|
|
|
? |
(2.2) |
|
|
|
|
Ax |
b, |
x |
где A - (n n) - матрица коэффициентов,
b - n-компонентный вектор правых частей уравнений (столбец свободных членов),
x - искомый n-компонентный вектор неизвестных, выражающиеся через свои компоненты:
a |
a |
... |
a |
|
|
b |
|
11 |
12 |
|
1n |
|
|
1 |
|
a21 |
a22 |
... |
a2n |
b2 |
|
||
A ... ... |
... |
... |
; |
b ... |
; |
||
|
|
|
|
|
|
|
|
|
an2 |
... |
|
|
|
|
|
an1 |
ann |
|
bn |
|
|
x |
|
|
|
|
1 |
|
|
|
|
x2 |
|
? |
|
x |
|
|
(2.3) |
|
|
|
|||
|
... |
|
|
|
|
|
|
|
|
|
xn |
|
|
|
Из курса линейной алгебры известно, что система (2.1) имеет единственное решение (единственный набор значений x1, x2 , , xn , обращающий уравнения в тождества), если определительdet(A) матрицы A не равен нулю. Этот случай иллюстрируется рисунком 2.1 для системы двух линейных уравнений (i)-(ii).
39
a11x1 a12 x2 |
b1 |
(i) |
|
|
a22 x2 |
b2 |
(ii) |
a21x1 |
Рисунок 2.1 – Случай единственного решения.
|
|
Рисунок 2.2 – Случай |
Рисунок 2.3 – Случай |
|
|
отсутствия решения. |
бесконечного числа решений. |
|
Точке пересечения прямых, |
|
|
соответствующих уравнениям, |
отвечает единственное решение |
||
, |
|
системы. |
|
1 |
2 |
|
|
Если определитель det(A) матрицы A равен нулю, то система уравнений вырожденная, и она, либо не имеет решения, либо имеет бесконечно много решений (в зависимости от значений правых частей). Вырожденные случаи для системы для системы (i)-(ii) показаны на рисунках 2.2 и 2.3.
Сразу же отметим, что при численном решении задачи (2.2) не применяется (при n > 4) традиционный в линейной алгебре способ решения систем по формулам Крамера (через определители, вычисляемые как произведения коэффициентов матрицы А) из-за большого объема вычислений уже при сравнительно малых n .
Численные методы решения систем уравнений делятся на прямые и итерационные. Прямые методы позволяют получить неиз-
40