Численные методы в инженерных расчетах
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?и: f(a)f(b)<0.Предположим, что
f(a)>0, f(b)<0.
Уравнение секущей:
.
Тогда
.
Получен новый отрезок [a1,b1]=[a,x0]. Вычисления производятся до тех пор, пока значение x0 не приблизится к искомому корню с заданной точностью.
В ряде случаев алгоритм имеет быструю сходимость.
Программа в Matlab для уравнения 2ex-2x-3=0
;=0.5;=1;=10^(-6);=a-((b-a)/((myf1(b)-myf1(a))))*myf1(a);=1;longabs(myf1(x))>eps;(m)=x;myf1(x)*myf1(a)<0;=x;=x;=m+1;=a-((b-a)/((myf1(b)-myf1(a))))*myf1(a);
disp(число итераций длЯ уточнениЯ корнЯ);
disp(m);
disp(последовательное приближение)
disp(c);(c,*);
Получен результат:
число итераций длЯ уточнениЯ корнЯ
последовательное приближение1 through 4
.80837697986152 0.85188251839544 0.85700982100534 0.857600113157515 through 6
.85766788654576 0.85767566538909
Рис.7. Итерационная последовательность
Программа в Matlab для уравнения (x-2)cos(x)=1
;=-6;=-4;=10^(-6);=a-((b-a)/((myf2(b)-myf2(a))))*myf2(a);=1;longabs(myf2(x))>eps;(m)=x;myf2(x)*myf2(a)<0;=x;=x;=m+1;=a-((b-a)/((myf2(b)-myf2(a))))*myf2(a);
disp(число итераций длЯ уточнениЯ корнЯ);
disp(m);
disp(последовательное приближение)
disp(c);(c,*);
Получен результат:
число итераций длЯ уточнениЯ корнЯ
последовательное приближение
.50362928795517 -4.56127779222470 -4.55931106364103
Рис.8. Итерационная последовательность
Программа в Matlab для уравнения 3x4+8x3+6x2-10=0.
;=0.5;=1;=10^(-6);=a-((b-a)/((myf3(b)-myf3(a))))*myf3(a);=1;longabs(myf3(x))>eps;(m)=x;myf3(x)*myf3(a)<0;=x;=x;=m+1;=a-((b-a)/((myf3(b)-myf3(a))))*myf3(a);
disp(число итераций длЯ уточнениЯ корнЯ);
disp(m);
disp(последовательное приближение)
disp(c);(c,*);
Получен результат:
число итераций длЯ уточнениЯ корнЯ
10
последовательное приближение1 through 4
.75545851528384 0.81290500229492 0.82367706378330 0.825618396817425 through 8
.82596568870814 0.82602773448238 0.82603881669747 0.826040796047059
0.82604114956799
Рис.9. Итерационная последовательность
.4 Метод Ньютона
Требуется, чтобы функция f(x) была дифференцируема в некоторой окрестности точки с (искомого корня уравнения). Производная не должна менять свой знак на промежутке [c, x0].
Уравнение касательной
.
Тогда
.
Алгоритм продолжается до тех пор, пока не будет достигнута заданная точность
.
Программа в Matlab для уравнения 2ex-2x-3=0
clc;long=0.00000001;=0.5;=1;abs(myf1(m))>eps;=m-myf1(m)/(2*exp(m)-2);(n)=m;
n=n+1;
end
disp(число итерации длЯ уточнениЯ корнЯ);
disp (n);
disp(последовательное приблежение);
disp(c);(c,*);
Получен результат:
число итерации длЯ уточнениЯ корнЯ
последовательное приблежение1 through 4
.04149408253680 0.88225679128705 0.85818785708263 0.857676900709575
.85767667394594
Рис.10. Итерационная последовательность
Программа в Matlab для уравнения (x-2)cos(x)=1
clc;long=0.00000001;=-6;=1;abs(myf2(m))>eps;=m-myf2(m)/(cos(m)-(m-2)*sin(m));(n)=m;
n=n+1;
end
disp(число итерации длЯ уточнениЯ корнЯ);
disp (n);
disp(последовательное приблежение);
disp(c);(c,*);
Получен результат:
число итерации длЯ уточнениЯ корнЯ
последовательное приблежение
.75166784825219 -4.56522808749884 -4.55934580524512 -4.559337734920
Рис.11. Итерационная последовательность
Программа в Matlab для уравнения 3x4+8x3+6x2-10=0
clc;long=0.00000001;=0.5;=1;abs(myf3(m))>eps;=m-myf3(m)/(12*m.^3+24*m.^2+12*m);(n)=m;=n+1;
end
disp(число итерации длЯ уточнениЯ корнЯ);
disp (n);
disp(последовательное приблежение);
disp(c);(c,*);
Получен результат:
число итерации длЯ уточнениЯ корнЯ
последовательное приблежение1 through 4
.04166666666667 0.86731136332084 0.82789983686378 0.826045199069205
.82604122645581
Рис.12. Итерационная последовательность
1.5 Метод Matlab
для уравнения 2ex-2x-3=0:
fzero(myf1,0.5)
ans =
.85767667394590
для уравнения (x-2)cos(x)=1
fzero(myf2,-4)
ans =
.55933773490524
для уравнения 3x4+8x3+6x2-10=0
fzero(myf3,1)
ans =
.82604122643762135
2. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ
.1 Задание
Записать систему линейных уравнений 5х5.
Проверить обусловленность систем:
а) вычислить определитель;
б) найти обратную матрицу;
в) вычислить числа обусловленности системы в трёх нормах.
Решить систему методом Зейделя.
Решить систему методом Matlab.
.2 Решение СЛАУ
При большом числе уравнений (100 и более) прямые методы решения СЛАУ (за исключением метода прогонки) становятся труднореализуемыми на ЭВМ из-за сложности хранения и обработки матриц большой размерности. Здесь разумнее применять итерационные методы.
Итерационными методами называют методы последовательного приближения, в которых при вычислении следующего приближения используется предыдущее.
Метод простых итераций довольно медленно сходится. Для его ускорения существует модификация, называемая методом Зейделя.
Метод Зейделя состоит в том, что итерации производятся по формуле:
,
где -произвольны, i=1, 2, …, n; k=1, 2,…
Итерации по методу Зейделя отличаются от простых итераций тем, что при нахождении i-й компоненты k-го приближения сразу используются уже найденные компоненты k-го приближения с меньшими номерами.
За счёт использования на каждом шаге уточнённых значений метод Зейделя обеспечивает более быструю сходимость, чем метод простой итерации.
Исходная система линейных уравнений 5x5
+4+8+6+4=6
+2-8+5+4=-5
+-5++5+10=3
+3+-7+5=5
+10+7-4-3=3
Программа в Matlab:
clc
a=[-1 4 8 6 4; -5 2 -8 5 4;4 -5 1 5 10; -4 3 1 -7 5;5 10 7 -4 -3]
b=[6; -5; 3; 5; 3]
w=det(a); %определител