Численные методы в инженерных расчетах

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?и: 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); %определител