Решение систем линейных уравнений в Matlab
Заказать уникальную курсовую работу- 22 22 страницы
- 7 + 7 источников
- Добавлена 17.01.2021
- Содержание
- Часть работы
- Список литературы
Содержание
Введение ................................................................................................................. 3
1 Математическая постановка задачи.................................................................. 5
2 Встроенные функции MATLAB........................................................................ 8
3 Численные методы решения систем уравнений............................................. 10
4 Пример решения системы линейных уравнений............................................ 14
5 Листинг программ............................................................................................. 18
Заключение ........................................................................................................... 21
Список использованных источников ................................................................. 22
В качестве тестового примера рассмотрим систему уравнений следующего вида:
Проведем расчеты, используя приведенные ранее функции:
A=[10, -1, 8;
-10, 20, -6;
-28, 10, 40];
b=[10; 200; 600];
xi=inv(A)*b
xpi=pinv(A)*b
xls=linsolve(A, b)
xlc=lscov(A, b)
xml=mldivide(A, b)
x=A\b
Рисунок 3. Результаты нахождение решений СЛУ
с помощью встроенных функций MATLAB
В ходе выполнения курсовой работы были реализованы собственные функции нахождение корней уравнений, а именно функции метода Крамера, метода Гаусса, метода простой итерации и метода Зейделя. В качестве входных параметров функции выступают несколько значений: матрица коэффициентов уравнений, вектор правых частей уравнений, начальное приближение (в итерационных методах) и точность вычисления (в итерационных методах). Результаты работы программы представлены ниже.
fprintf('Метод Крамера:');
xcm=CramersMethod(A, b)
fprintf('Метод Гаусса:');
xgm=GaussMethod(A, b)
C=[0, 0.1, -0.8;
0.5, 0, 0.3;
0.7, -0.25, 0];
d=[1; 10; 15];
xo=[0; 0; 0];
e=10^(-6);
fprintf('Метод итерации:');
[xim, iim]=IterationMethod(C, d, xo, e)
fprintf('Метод Зейделя:');
[xsm, ism]=SeidelsMethod(C, d, xo, e)
Рисунок 4. Результаты нахождения решений СЛУ
с помощью собственных функций
Тексты вызываемых функций представлены в следующем разделе настоящей курсовой работы.
5 Листинг программ
Ниже представлены тексты функций, которые были написаны в ходе реализации численных методов решения системы линейных уравнений.
Метод Крамера
function x=CramersMethod(A, b)
detA=det(A);
detAb=zeros(length(A),1);
for i=1:length(A)
C=A;
C(:,i)=b;
detAb(i)=det(C);
end
x=detAb/detA;
end
Метод Гаусса
function x=GaussMethod(A, b)
n=length(A);
for i=1:n
[~,ind]=max(A(i+1:n,i));
ind=ind+i-1;
A([i,ind],:)=A([ind,i],:);
b([i,ind])=b([ind,i]);
b(i)=b(i)/A(i,i);
A(i,:)=A(i,:)/A(i,i);
for j=i+1:n
b(j)=b(j)-A(j,i)*b(i);
A(j,:)=A(j,:)-A(j,i)*A(i,:);
end
end
for i=1:n
for j=i+1:n
b(n-j+1)=b(n-j+1)-b(n-i+1)*A(n-j+1,n-i+1);
end
end
x=b;
end
Метод простой итерации
function [x, iter]=IterationMethod(C, d, xo, e)
x=xo;
iter=0;
while 1
iter=iter+1;
xo=x;
x=C*xo+d;
if sum(abs(x-xo))
end
end
end
Метод Зейделя
function [x, iter]=SeidelsMethod(C, d, xo, e)
x=xo;
iter=0;
n=length(d);
while 1
iter=iter+1;
xo=x;
for i=1:n
x(i)=d(i);
for j=1:n
x(i)=x(i)+C(i,j)*x(j);
end
end
if sum(abs(x-xo))
end
end
end
Заключение
В процессе выполнения курсового проекта были приобретены практические навыки в использовании вычислительных алгоритмов для решения задач нахождения решений систем линейных уравнений с помощью математического пакета MATLAB.
Написаны четыре программы-функции, реализующие численное решение системы линейных уравнений различными методами, а именно: методом Крамера, методом Гаусса, методом простой итерации и методом Зейделя.
Так же были расширены теоретические знания документации MATLAB, которые были применены при расчете, приобретены начальные навыки самостоятельного планирования и выполнения научной исследовательской работы.
Список использованных источников
1. Atkinson, Kendall A. An Introduction to Numerical Analysis (2nd ed.), New York: John Wiley & Sons, 1989.
2. Дьяконов В. П. SIMULINK 5/6/7. Самоучитель. М.: «ДМК-Пресс», 2008., 784 с.
3. Самарский, А. А. Введение в численные методы: учеб. Пособие для вузов / А. А. Самарский. – 5-е изд., стер. – СПб.: Лань, 2009. – 288с.
4. Калиткин, Н. Н. Численные методы: учеб. пособие / Н. Н. Калиткин. – 2-е изд., исправленное. – СПб.: БХВ-Петербург, 2011., 592с.
5. Каханер, Д. Численные методы и программное обеспечение: пер. с англ. / Д. Каханер, К. Моулер, С. Нэш. – 2-е изд., стер. – М.: Мир, 2001., 575c.
6. Ильин В. А., Позняк Э. Г. Линейная алгебра: Учебник для вузов. – 6-е изд., стер. М.: ФИЗМАТЛИТ, 2004, 280 с.
7. Волков Е. А. Численные методы. – М.: Физматлит, 2003.
2
1. Atkinson, Kendall A. An Introduction to Numerical Analysis (2nd ed.), New York: John Wiley & Sons, 1989.
2. Дьяконов В. П. SIMULINK 5/6/7. Самоучитель. М.: «ДМК-Пресс», 2008., 784 с.
3. Самарский, А. А. Введение в численные методы: учеб. Пособие для вузов / А. А. Самарский. – 5-е изд., стер. – СПб.: Лань, 2009. – 288с.
4. Калиткин, Н. Н. Численные методы: учеб. пособие / Н. Н. Калиткин. – 2-е изд., исправленное. – СПб.: БХВ-Петербург, 2011., 592с.
5. Каханер, Д. Численные методы и программное обеспечение: пер. с англ. / Д. Каханер, К. Моулер, С. Нэш. – 2-е изд., стер. – М.: Мир, 2001., 575c.
6. Ильин В. А., Позняк Э. Г. Линейная алгебра: Учебник для вузов. – 6-е изд., стер. М.: ФИЗМАТЛИТ, 2004, 280 с.
7. Волков Е. А. Численные методы. – М.: Физматлит, 2003.