Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2022-12-20 | 37 |
5.00
из
|
Заказать работу |
|
|
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 |
Общий Алгоритм:
|
Алгоритм для решения СЛАУ: (на псевдокоде)
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!