Шага алгоритма в виде сводной таблицы — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Шага алгоритма в виде сводной таблицы

2022-12-20 37
Шага алгоритма в виде сводной таблицы 0.00 из 5.00 0 оценок
Заказать работу

N X0 X1 c F(x0) F(x1) F(c) <eps
1 -2.8425 -2.8425 0.15748 0.92789 -0.031976 0
2 -2.9045 -2.9045 -0.061952 -0.60174 0.0012211 1

 

Решения исходного уравнения с помощью встроенных функций roots, fzero, sqp.

X= -2.9078

Анализ результатов решения уравнения и выводы по работе.

 

Точка x0 = -2.9000

Точка x0fzero = -2.9078

Значение x при помощи встроенных функций sqp = -2.9078

i = 61

 

 

Текст программы

x=-4:0.05:-1;

function y=f(x) y=(sin(x).*x.*x+5.*cos(5.*exp(x/2)));

 

end;

plot(x,f(x));

grid on;

 

f=inline('(sin(x).*x.*x+5.*cos(5.*exp(x/2)))');

x0=-3;

x1=-2;

eps=0.05;

tmp=0;

n=1;

x1=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));

while (abs(x1-x0)>eps)

c = x1-x0

tmp=x1

f(x0)

f(x1)

x1=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));

x0=tmp

printf("====\n")

n++;

endwhile

x1

n

 

fzero(f,[-3;-2])

 

x0=-3;

x1=-2;

n=1;

x1=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));

while (abs(x1-x0)>eps)

tmp=x1;

x1=x1-(x1-x0)*f(x1)/(f(x1)-f(x0));

x0=tmp; 

n++; 

endwhile

x1

n

%hold on;

fzero(f,[-3;-2])

f1=inline('abs(sin(x).*x.*x+5.*cos(5.*exp(x/2)))');

[x,obj,info,iter]=sqp(-3,f1)

[x,obj,info,iter]=sqp(-2,f1)

Выводы по работе.

Изучил основы программирования на Octave, применил полученные навыки в написании программ по решению нелинейных трансцендентных уравнений.

ФГБОУ ВО «Чувашский государственный университет им.И.Н.Ульянова»

Факультет информатики и вычислительной техники

Кафедра вычислительной техники

Вычислительная математика

 

Лабораторная работа №2

«Решение нелинейных трансцендентных уравнений»

Вариант 1

 

 

Выполнил: Студент группы ИВТ-41-15

Агниашвили Д.В.

Проверила:Первова Н.В.

 

Чебоксары 2017.

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

1. В итерационных методах предусмотреть выход в случае зацикливания программы.

 

Исходная матрица:

Матрица коэффициентов

Свободный член
20 1 1 1 1 1 1 1 53.2
1 20 1 1 1 1 1 1 106.4
1 1 20 1 1 1 1 1 159.6
1 1 1 20 1 1 1 1 212.8
1 1 1 1 20 1 1 1 266
1 1 1 1 1 20 1 1 319.2
1 1 1 1 1 1 20 1 372.4
1 1 1 1 1 1 1 20 425.6

Общий Алгоритм:

Я решил использовать метод наискорейшего спуска. 1. Задать (произвольно) точку начального приближения x(0);2. В цикле по номеру итерации k=0,1,… вычислить:3. Значение вектора градиента в точке x=x(k) по формуле      4. Значение нормы (длины) вектора градиента по 5. Значение вектора единичной длины в направлении, противоположном вектору градиента s(k) по формуле 6. Значение матрицы вторых производных по 7. Значение шага по 8. Новое значение приближения x(k+1) по 9. Закончить итерационный процесс, используя условие: следует прекратить вычисления, если, начиная с k* - той итерации абсолютное значение нормированной разности между значениями функции в “соседних” не превышает наперед заданного малого числа   

Алгоритм для решения СЛАУ: (на псевдокоде)

A,B - входная матрица и матрица свободных членов

x0 = 0

x1 = 0

r = 0

r1 = 0

k = 0;

 

kMax = 100;          - максимальное число итераций, на случай зацикливания

eps = 0.0001;         - точность

 

repeat

for i = 1 to 8 do

r(i) <- B(i);

for j = 1 to 8 do

r(i) -= A(i,j)*x0(j);

 

s = 0;

s1 = 0;

 

for i = 1 to 8 do

   s += r(i)^2;

 

r1(i) = 0;

for j = 1 to 8 do

r1(i) += A(i,j)*r(j);

 

s1 += r(i)*r1(i);

 

s = s / s1;

 

for i=1 to 8 do

x1(i) += s*r(i);

 

s=0;

 

for i=1:8

   s += (x0(i) - x1(i))*(x0(i) - x1(i));

x0(i) = x1(i);

 

k++;

until (k >= kMax) ИЛИ (sqrt(s) <= eps)

 

Вывод(x1)


Результат работы алгоритма:

Невязка:

Максимальная невязка = X*A-B = -6.795*10-5 = -0,00006795

Метод вычисления: Метод Гаусса

Алгоритм решения:

Создаётся единичная матрица размером NxN. При помощи простейших преобразований из матрицы А получаем единичную матрицу, параллельно проводя те же действия с данной единичной матрицей. В итоге на месте единичной матрицы будет находится обратная к А.

Обратная матрица

Решение:


Метод вычисления: с помощью стандартных функций inv(A), mldivide и fsolve.

Cпомощью inv(A):

 

Cпомощью mldivide:

Cпомощью fsolve:

 


 

Листинг программы:

A = [ 2, 1, 1, 1, 1, 1, 1, 1;

  1, 2, 1, 1, 1, 1, 1, 1;

  1, 1, 2, 1, 1, 1, 1, 1;

  1, 1, 1, 2, 1, 1, 1, 1;

  1, 1, 1, 1, 2, 1, 1, 1;

  1, 1, 1, 1, 1, 2, 1, 1;

  1, 1, 1, 1, 1, 1, 2, 1;

  1, 1, 1, 1, 1, 1, 1, 2;

]

B = [ 1;2;3;4;5;6;7;8; ]

Вычисление методом Градиентного спуска:

 

x0 = [ 0; 0; 0; 0; 0; 0; 0; 0 ];

x1 = [ 0; 0; 0; 0; 0; 0; 0; 0 ];

r = [ 0; 0; 0; 0; 0; 0; 0; 0 ];

r1 = [ 0; 0; 0; 0; 0; 0; 0; 0 ];

k = 0;

 

kMax = 100;

eps = 0.0001;

 

 

do

for i=1:8

r(i)=B(i);

for j=1:8

r(i) -= A(i,j)*x0(j);

end;

end;

 

s = 0;

s1 = 0;

 

for i=1:8

   s += r(i)^2;

 

r1(i) = 0;

for j=1:8

r1(i) += A(i,j)*r(j);

end;

 

   s1 += r(i)*r1(i);

end;

 

s = s / s1;

 

for i=1:8

x1(i) += s*r(i);

end;

 

s=0;

 

for i=1:8

   s += (x0(i) - x1(i))*(x0(i) - x1(i));

x0(i) = x1(i);

end;

 

k++;

until (k >= kMax) || (sqrt(s) <= eps)

 

 

printf("Gradient solve:\n k = %i\n", k);

disp(x1);

 

printf("Discrepancy:\n");

disp(A*x1-B);

 

Вычисление методом Гаусса:

 

printf("\n\n");

Ae = [ A B ];

E = eye(8);

 

for j=1:7

for i=1+j:8

s=Ae(i,j)/Ae(j,j);

Ae(i,:)=Ae(i,:)-s*Ae(j,:);

E(i,:)=E(i,:)-s*E(j,:);

end;

end;

 

for j=0:7

for i=1:(7-i)

s=Ae(7-i,8-j)/Ae(8-j,8-j);

Ae(7-i,:)=Ae(i,:)-s*Ae(8-j,:);

E(7-i,:)=E(i,:)-s*E(8-j,:);

end;

end;

 

Ae = Ae(:,9)/Ae(8,8);

 

printf("Inverse matrix of method Zhordan-Gauss:\n");

invA = E/A(8,8);

disp(invA);

printf("\nSolve of method Zhordan-Gauss:\n");

disp(Ae);

 

 

Вычисление встроенными функциями:

 

printf("\n\nSolve of standart inverse matrix:\n");

X=A^(-1)*B;

disp(X);

 

printf("Solve of standartfunc 'mldivide':\n");

mld = mldivide(A,B);

disp(mld);

 

printf("Solve of standartfunc 'fsolve':\n");

xFslv = 0;

function [y] = myfunc(x)

y = zeros(8,1);

y(1) = 2*x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8)-1;

y(2) = x(1)+2*x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+x(8)-2;

y(3) = x(1)+x(2)+2*x(3)+x(4)+x(5)+x(6)+x(7)+x(8)-3;

y(4) = x(1)+x(2)+x(3)+2*x(4)+x(5)+x(6)+x(7)+x(8)-4;

y(5) = x(1)+x(2)+x(3)+x(4)+2*x(5)+x(6)+x(7)+x(8)-5;

y(6) = x(1)+x(2)+x(3)+x(4)+x(5)+2*x(6)+x(7)+x(8)-6;

y(7) = x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+2*x(7)+x(8)-7;

y(8) = x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+x(7)+2*x(8)-8;

end;

[xFslv, fval, info]=fsolve(@myfunc, [0;0;0;0;0;0;0;0]);

disp(xFslv);

Выводы по работе.

Изучил основы программирования на Octave, применил полученные навыки в написании программ порешению нелинейных трансцендентных уравнений.

 

ФГБОУ ВО «Чувашский государственный университет им.И.Н.Ульянова»

Факультет информатики и вычислительной техники

Кафедра вычислительной техники

Вычислительная математика

 

Лабораторная работа №3

«Решение систем нелинейных уравнений»

Вариант 1

 

 

Выполнил: Студент группы ИВТ-41-15

Агниашвили Д.В.

Проверила:Первова Н.В.

 

Чебоксары 2017.

 

 

 

 

x1 = linspace(-5,5);

y2 = linspace(-5,5);

y1=(2-sin(x1))/2;

x2=0.7-cos(y2-1);

%plot(x1,y1, x2,y2);

x = y = -2:0.01:2;

[xx, yy] = meshgrid(x, y);

z = (sin(xx)+2*yy-2)^2+(cos(yy-1)+xx-0.7)^2;

%mesh(x, y, z);

ezmeshc("(sin(x)+2*y-2)^2+(cos(y-1)+x-0.7)^2", [-10, 10, -5, 5]);

%ezcontour("(sin(x)+2*y-2)^2+(cos(y-1)+x-0.7)^2", [-10, 10, -5, 5]);

%================================================

function [res] = f(x)

res(1,1) = cos(x(1));

res(1,2) = 2;

res(2,1) = 1;

res(2,2) = -sin(x(2)-1);

end;

function [res] = fd(x)

res(1,1) = sin(x(1))+2*x(2)-2;

res(2,1) = x(1)+cos(x(2)-1)-0.7;

end;

e = 0.001;

k = 0;

 

x = [1;1];

t = [0;1];

 

while abs(max(x-t)) > e

t = x;

x = t-(inv(f(x))*fd(x));

k++;

end;

 

printf("x = %f\ny = %f\nK = %i\n\n", x(1), x(2), k);

 

 

%================================================

 

x1=0; x2=0;

y1=0; y2=1;

h=0.5;

e=0.001;

k = 0;

 

f=@(x1,x2) ((2-sin(x1))/2) - (asin(0.7-x2)+1);

 

while (abs(y2-y1) > e)

x1 += h;

y1 = f(x1,x2);

x2 += h;

y2 = f(x1,x2);

if (y2-y1 > 0)

h = -h/3;

end;

k++;

end;

 

printf("x0 = %f\ny0 = %f\nK = %i\n", x1, ((2-sin(x1))/2), k);

 

 

%================================================

 

e = 0.001;

x0 = [0;0];

 

function result = F(x)

result = (sin(x(1))+2*x(2)-2)^2+(cos(x(2)-1)+x(1)-0.7)^2;

end;

 

 [x,obj,info,iter] = sqp(x0,@F,@F,@F,-10,10,1000,e^2)

 

 

Задание и исходные данные к лабораторной работе.

1. Отделить графически корни системы нелинейных уравнений (таблица 3).

2. Уточнить приближенное решение из п.1 методом Ньютона-Рафсона с точностями

e =1E-2,1E-3,1E-5 из трех различных начальных точек.

3. Уточнить приближенное решение из п.1 одним из указанных в таблице 4 методом

уточнения корней с точностью e =1E-2,1E-3,1E-5.

4. Сравнить результаты, полученные в п.2-3 задания, по количеству итераций

уточнения корней системы уравнений.

5. Найти решения системы нелинейных уравнений, а также информацию о процессе

нахождении минимума функции (функционала) с помощью стандартной функции

OCTAVE sqp с точностью e=1E-2, 1E-3, 1E-5.

 

Метод для уточнения корней - градиентный спуск.

Система уравнений, предлагаемая для решения:

 

                                                  (1)

 


Поделиться с друзьями:

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.09 с.