Численные методы решения нелинейных систем уравнений

Автор: Пользователь скрыл имя, 26 Марта 2012 в 14:21, лабораторная работа

Краткое описание

В данной лабораторной работе требуется решить систему нелинейных уравнений методом Ньютона и методом секущих. Решение необходимо реализовать на языке MatLab.

Оглавление

1. ПОСТАНОВКА ЗАДАЧИ
2. ОПИСАНИЕ АЛГОРИТМОВ
2.1 АЛГОРИТМ МЕТОДА НЬЮТОНА
2.2 АЛГОРИТМ МЕТОДА СЕКУЩИХ
3. ТЕСТИРОВАНИЕ
4. ВЫВОДЫ

Файлы: 1 файл

Отчёт 2.doc

— 105.00 Кб (Скачать)


10

 

СОДЕРЖАНИЕ

 

1. ПОСТАНОВКА ЗАДАЧИ

2. ОПИСАНИЕ АЛГОРИТМОВ

2.1 АЛГОРИТМ МЕТОДА НЬЮТОНА

2.2 АЛГОРИТМ МЕТОДА СЕКУЩИХ

3. ТЕСТИРОВАНИЕ

4. ВЫВОДЫ

ПРИЛОЖЕНИЕ 1

ПРИЛОЖЕНИЕ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. ПОСТАНОВКА ЗАДАЧИ

 

В данной лабораторной работе требуется решить систему нелинейных уравнений методом Ньютона и методом секущих. Решение необходимо реализовать на языке MatLab.

 

Уравнения:

1.

 

2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. ОПИСАНИЕ АЛГОРИТМОВ

2.1 АЛГОРИТМ МЕТОДА НЬЮТОНА

 

1.   Задать начальное приближение и малое положительное число (точность). Положить .

2.   Найти значение выражения .

3.   Вычислить следующее приближение: .

4.   Если и , процесс закончить и положить . Иначе, положить и перейти к п.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.2 АЛГОРИТМ МЕТОДА СЕКУЩИХ

 

1.   Задать начальное приближение и малое положительное число

(точность). Положить .

2.   Найти значение выражения:

            

3.   Найти значение выражения: 

4.   Если и , процесс закончить и положить . Иначе, положить и перейти к п.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. ТЕСТИРОВАНИЕ

 

Для первой системы:

 


 

Для второй системы:

 


 

 

 


4. ВЫВОДЫ

 

В ходе выполнения лабораторной работы нами были реализованы на языке MatLab два метода решения систем нелинейных уравнений: метод Ньютона и метод секущих. По полученным результатам мы определили, что наиболее точным методом вычисления оказался метод Ньютона.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ 1

 

Метод Ньютона. Код программы

 

clc;

clear;

syms x1 x2 x3;

x=[x1, x2, x3];

k=0;

E=10^-5;

funcii =  sprintf('1.\nF(1)= x(1)^2+x(2)^2+x(3)^2-1\nF(2)= 2*x(1)^2+x(2)^2-4*x(3)\nF(3)=3*x(1)^2-4*x(2)+x(3)^2\n\n2.\nF(1)= x(1)+x(1)^2-2*x(2)*x(3)-0.1\nF(2)= x(2)-x(2)^2+3*x(1)*x(3)+0.2\nF(3)= x(3)+x(3)^2+2*x(1)*x(2)-0.3;\n');

    funcii2 = input(funcii);

t = input('Выберите систему: ');

if t~=1&&t~=2

    t = input('Выбран невозможный вариант, попробуйте еще раз ');

end

if t==1

   X=[0.5;0.5;0.5];

   F(1)= x(1)^2+x(2)^2+x(3)^2-1;

   F(2)= 2*x(1)^2+x(2)^2-4*x(3);

   F(3)=3*x(1)^2-4*x(2)+x(3)^2;

end

if t==2

   X=[0;1;0];

   F(1)= x(1)+x(1)^2-2*x(2)*x(3)-0.1;

   F(2)= x(2)-x(2)^2+3*x(1)*x(3)+0.2;

   F(3)= x(3)+x(3)^2+2*x(1)*x(2)-0.3;

end

while norm(subs(F,x,X),'inf')>E

    k=k+1;

    dX=subs(-((jacobian(F,x))^(-1)),x,X)*subs(F,x,X)';

    X=X+dX;

end

disp('Решение:')

X = X';

X1 = X(1)

X2 = X(2)

X3 = X(3)

disp('Количество итераций:')

k

disp('Точность:')

E

disp('Проверка решения:')

Y=solve(F(1),F(2),F(3),x1,x2,x3);

x1 = Y.x1;

x1 = vpa(x1,15)

x2 = Y.x2;

x2 = vpa(x2,15)

x3 = Y.x3;

x3 = vpa(x3,15)

 

 

 

 

 

 


ПРИЛОЖЕНИЕ 2

 

Метод секущих. Код программы

 

clc;

clear;

syms x1 x2 x3;

x=[x1 x2 x3];

k=0;

e=10^-5;

funcii =  sprintf('1.\nF(1)= x(1)^2+x(2)^2+x(3)^2-1\nF(2)= 2*x(1)^2+x(2)^2-4*x(3)\nF(3)=3*x(1)^2-4*x(2)+x(3)^2\n\n2.\nF(1)= x(1)+x(1)^2-2*x(2)*x(3)-0.1\nF(2)= x(2)-x(2)^2+3*x(1)*x(3)+0.2\nF(3)= x(3)+x(3)^2+2*x(1)*x(2)-0.3;\n');

    funcii2 = input(funcii);

t = input('Выберите систему: ');

if t~=1&&t~=2

    t = input('Выбран невозможный вариант, попробуйте еще раз ');

end

if t==1

   X=[0.5;0.5;0.5];

   X0=[1;1;1];

   F(1)= x(1)^2+x(2)^2+x(3)^2-1;

   F(2)= 2*x(1)^2+x(2)^2-4*x(3);

   F(3)=3*x(1)^2-4*x(2)+x(3)^2;

end

if t==2

   X=[0.5;1;0];

   X0=[1;1.5;0.5];

   F(1)= x(1)+x(1)^2-2*x(2)*x(3)-0.1;

   F(2)= x(2)-x(2)^2+3*x(1)*x(3)+0.2;

   F(3)= x(3)+x(3)^2+2*x(1)*x(2)-0.3;

end

while norm(subs(F,x,X),'inf')>e

    k=k+1;

    for m=1:size(x,2)

        for n=1:size(x,2)

            Buf=X;

            Buf(n)=X0(n);

            J(m,n)=(subs(F(m),x,Buf)-subs(F(m),x,X))/(X0(n)-X(n));

        end

    end

    X0=X;

    X=X-inv(J)*subs(F,x,X)';

end

disp('Решение:')

X = X';

X1 = X(1)

X2 = X(2)

X3 = X(3)

disp('Число итераций:')

k

disp('Точность:')

e

disp('Проверка решения:')

Y=solve(F(1),F(2),F(3),x1,x2,x3);

x1 = Y.x1;

x1 = vpa(x1,15)

x2 = Y.x2;

x2 = vpa(x2,15)

x3 = Y.x3;

x3 = vpa(x3,15)

 

 

 



Информация о работе Численные методы решения нелинейных систем уравнений