Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2022-12-20 | 27 |
5.00
из
|
Заказать работу |
|
|
Вариант 1
Выполнил: Студентгруппы ИВТ-41-15
Агниашвили Д.В.
Проверила:Первова Н.В.
Чебоксары2017.
Задание на работу
1. Построить график функции y=f(x) на отрезке [x0, x1].
2. Найти корень заданного уравнения f(x)=0 с заданной точностью ε на заданном отрезке [x0, x1].
3. Привести расчёты параметров итерационного процесса для каждого шага алгоритма.
4. Решить исходное уравнение с помощью встроенной функции roots, fzero, sqp.
5. Сравнить результаты, полученные в п.2 и 4.
6. Записать в ответе только верные цифры
Алгоритм
График заданной функции
Значения параметров итерационного процесса для каждого
Шага алгоритма в виде сводной таблицы
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)
|
Текст программы
disp("Start\n");
function y=F(x)
y = (sin(x(1))+2*x(2)-2).^2+(cos(x(2)-1)+x(1)-0.7).^2;
endfunction
y=x=[-5:0.1:5];
[xx,yy] = meshgrid(x,y);
z = (sin(xx)+2*yy-2).^2+(cos(yy-1)+xx-0.7).^2;
mesh(x,y,z);
disp("Using SQP function");
X = [0,0];
[x, obj, info, iter] = sqp (X, @F)
disp("Gradient descent");
grad_x = inline('2*(cos(x)*sin(x)+2*y-2)+x+cos(1-y)-0.7');
grad_y = inline('4*(sin(x)+2*y-2)+2*sin(1-y)*(x+cos(1-y)-0.7)');
X = [0;0];
EPS = 1e-5;
n = 0;
grad = [];
h = 0.182;
do
tmp = X;
grad(1,:) = grad_x(X(1),X(2));
grad(2,:) = grad_y(X(1),X(2));
X = X - h*grad;
n++;
until (abs(F(X)-F(tmp))<=EPS);
X
n
disp("Newton-Raphson's method");
w1 = inline('sin(x)+2*y-2');
w2 = inline('cos(y-1)+x-0.7');
J1 = inline('cos(x)');
J2 = 2;
J3 = 1;
J4 = inline('sin(1-y)');
n = 0;
X = [0;0];
do
w = [ w1(X(1),X(2)); w2(X(1),X(2))];
Jacobian = [ J1(X(1)), J2; J3, J4(X(2)) ];
delta = inv(Jacobian)*w;
X = X - delta;
n++;
until (abs(delta) <= EPS)
X
n
Задание и исходные данные к лабораторной работе.
F1(x,y) = cos(x-1)+y=0.5
F2(x,y) = x-cos(y)=3
Метод наискорейшего спуска
Алгоритм
На каждом шаге метод «приближается» к решению последовательно покаждой из координат. Переход от точки х к к точке х к+1 назовем внешнейитерацией. Внутри каждой «внешней» итерации находятся n внутреннихдля последовательного вычисления координат точки х к+1
1. Поверхностьфункционаласистемы:
2. ОпределимВизуальноминимумфункционала:
x = 4;
y = 1.5;
3. Графикилинийуровняфункционала:
4. Результатырешенияразнымиметодами:
Уточнение корней:
eps | Метод Ньютона -Рафсона | Наискорейший спуск | Функция spq |
1E-2 | x1 = 3.3559 y1 = 1.2069 | ans = 4 3.3562 1.2070 | x = 3.3559 1.2069 obj = 1.4379e-16 info = 101 iter = 7 |
1E-3 | x1 = 3.3559 y1 = 1.2069 | ans = 5 3.3559 1.2069 | x = 3.3559 1.2069 obj = 1.7616e-16 info = 101 iter = 9 |
1E-5 | x1 = 3.3559 y1 = 1.2069 | ans = 8 3.3559 1.2069 | x = 3.3559 1.2069 obj = 1.7423e-16 info = 101 iter = 13 |
x(0) = [4; 1.5](Наискорейший спуск и метод Ньютона-Рафсона)
начальный шаг равен 0.3.(Наискорейший спуск)
Тексты программ
%главнаяпрограмма
y=x=[-5.5:0.01:12];
[xx, yy] = meshgrid (x, y);
z=(cos(xx-1)+yy-0.5).^2.+(xx-cos(yy)-3).^2;
%mesh(x,y,z)
%x0 = [4,1.5];
%[x,obj,info,iter] = sqp(x0,@phi)
fq = @(x,y) (cos(x-1)+y-0.5).^2.+(x-cos(y)-3).^2;
%ezcontourf (fq, [-5.5, 12],200);
%contour3(x,y,z)
%функционал
function y = phi(x)
y = (cos(x(1)-1)+x(2)-0.5).^2+(x(1)-cos(x(2))-3).^2;
endfunction;
%методЗейделя-Гаусса
functionXm = GaussSeidelMin(phi, x0, d, g)
% минимизацияпокоординатнымспуском (методГаусса-Зейделя)
% Xm - координтаыминимума
% phi - функциядвухпеременных, котойищетсяминиммум
% x0 - координатыначальнойточки
% d - точность
% g - постояннаяшага
k = 1; %Счетчикшагов
kmax =500; % Предельноечислошагов,
% задаетсядляпредотвращениязацикливания
% Массивыдляхраненияпромежуточныхкоординат
x1 = x0(1);
x2 = x0(2);
x1trace = [x1];
x2trace = [x2];
i = 2;
h = 1e-5; % приращениедлярассчетаградиентов
whilek<kmax
% Спускпопервойкоординате
gr1 = (phi(x1+h,x2)-phi(x1-h,x2))/(2*h); % производнаяпох1
x1 = x1 - g*gr1;
% Сохранениекоординат
x1trace(i) = x1;
x2trace(i) = x2;
i = i + 1;
|
% Спускповторойкоординате
gr2 = (phi(x1,x2+h)-phi(x1,x2-h))/(2*h); % производнаяпох2
x2 = x2 - g*gr2;
% Сохранениекоординат
x1trace(i) = x1;
x2trace(i) = x2;
i = i + 1;
% Проверкаусловияостанова
ifsqrt(gr1^2 + gr2^2) <= d;
break; % Выходизциклавслучаевыполненияусловия
end
k = k + 1;
end
Xm = [x1, x2]; % координатыминимума
ifk>= kmax
disp('Минимумненайден!')
disp('Изменитезначениешага')
end
k
endfunction;
function newton = Func(x)
newton = [0; 0];
newton(1) = cos(x(1)-1)+x(2)-0.5;
newton(2) = x(1)-cos(x(2))-3;
endfunction;
GaussSeidelMin(fq, [4,1.5], 1e-2, 0.3);
cur_x = [10; 10];
Eps = 1e-5;
delta = 0;
count = 0;
do
count++;
W = [-sin(-1+cur_x(1)), 4; 1.5, sin(cur_x(2))];
B = (-1)*Func(cur_x);
delta = inv(W)*B;
cur_x += delta;
until (max(abs(delta)) <Eps || count > 1000);
disp('МетодНьютона-Рафсона')
x
y
count
Вариант 1
Выполнил: Студентгруппы ИВТ-41-15
Агниашвили Д.В.
Проверила:Первова Н.В.
Чебоксары2017.
Задание на работу
1. Построить график функции y=f(x) на отрезке [x0, x1].
2. Найти корень заданного уравнения f(x)=0 с заданной точностью ε на заданном отрезке [x0, x1].
3. Привести расчёты параметров итерационного процесса для каждого шага алгоритма.
4. Решить исходное уравнение с помощью встроенной функции roots, fzero, sqp.
5. Сравнить результаты, полученные в п.2 и 4.
6. Записать в ответе только верные цифры
Алгоритм
График заданной функции
Значения параметров итерационного процесса для каждого
|
|
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!