1sem / !_KursachZapiskaVar11
.docФедеральное государственное автономное образовательное учреждение
высшего образования «Санкт-Петербургский государственный
электротехнический университет «ЛЭТИ»
им. В.И. Ульянова (Ленина)»
мафедра МНЭ
Курсовая работа
По дисциплине «Информационные технологии»
«Применение информационных технологий
для решения инженерных задач»
Выполнил: Корепанов Д.М. гр.3206
Преподаватель: Шевченко С.А.
Санкт-Петербург
2023
Оглавление
Постановка задачи 3
Алгоритм решения 4
Текст программы 6
disp('Количество итераций'); disp(w); 7
Листинг результатов 8
Заключение 10
Постановка задачи
Вариант - 11
Написать программу на языке MatLab для нахождения методом последовательных приближений координаты x n-ой по счету точки пересечения графиков этих функций на интервале [0, ∞). Значение n пользователь вводит с клавиатуры при работе программы. Вычисление корней следует производить с заданной погрешностью (eps). Отобразить графически данные кривые в заданном диапазоне, включая точку пересечения. Найти зависимость количества приближений от погрешности.
Алгоритм решения
Для решения задачи пользователю требуется ввести номер точки пересечения двух функций, а также ввести с какой погрешностью будут вычислены корни. Для начала вводятся начально значение х и как оно меняется dx, также вводятся переменные q, r для счетчиков. Далее проводится вычисление разности значений функции в точке 0, далее сравнивая разности функций в значениях х на каждом шаге dx с значению разности функций в точке 0. Если после шага dx разность функций меняет знак на противоположный, значит в этом шаге находится пересечение функций. Мы ставим цикл, чтобы определить значение определенного интервала как можно меньшим и методом половинного деления уменьшаем его до значения меньше погрешности. После чего выводим графики функций.
Для определения зависимости количества итераций метода половинного деления мы вводим счетчик w, который после каждой итерации будет увеличиваться на 1. После чего запускаем код для нахождения 4 точки пересечения с разным значением погрешности.
Рисунок 1 – Блок-схема работы программы
Текст программы
clc
clear
close all
%Y1=cos(x) %Y2=sqrt(x)-4
disp('Корепанов Денис Максимович 3206')
disp('Вариант 11')
format long
n=input('Необходимая точка пересечения:');
eps=input('Погрешность:');
xq=0; %начальное значение
dx=0.0001; %изменение аргумента
q=1;
r=1; %переменные для счетчиков
xt(q)=xq;
while r<=n
dy0=cos(xt(q))-(sqrt(xt(q))-4); %разность значений функций в точке 0
q=q+1;
xt(q)=xt(q-1)+dx;
dy1=cos(xt(q))-(sqrt(xt(q))-4);
while dy1*dy0>0 %цикл нахождения точки пересечения
dy1=cos(xt(q))-(sqrt(xt(q))-4);
xt(q)=xt(q)+dx;
xt(q-1)=xt(q-1)+dx;
end
w=1;
c=(xt(q)+xt(q-1))/2;
While (xt(q)-xt(q-1))>eps %точное нахождение точки пересечения путем половинного деления отрезка
c=(xt(q)+xt(q-1))/2;
w=w+1;
dyc=cos(c)-(sqrt(c)-4);
if dyc*dy0>0 %определение приближенного значения x в зависимости от знака
xt(q)=xt(q);
xt(q-1)==xt(q)-(c-xt(q-1));
elseif dyc*dy0<0
xt(q-1)=xt(q-1);
xt(q)=xt(q-1)+(c-xt(q-1));
end
end
q=q+1
xt(q)=xt(q-1)+dx
r=r+1;
end
fplot('cos(x)',[0 c+100*dx],'r'); %Вывод графиков функций y1(x) и y2(x)
hold on
fplot('sqrt(x)-4',[0 c+100*dx]);
grid on
legend('cos(x)','sqrt(x)-4');
disp('Координата пересечения x='); disp(c); %вывод значения х
disp('Количество итераций'); disp(w);
Листинг результатов
Номер точки пересечения:
n=4
Погрешность
eps=0.001
Координата точки пересечения
x=17.458
Рисунок 2 – Скриншот рабочего окна Octave с результатами выполнения программы
Заключение
В ходе выполненной курсовой работы, была написана программа для определения координаты порядковой точки пересечения двух функций, с задаваемым порядком и погрешностью пользователем.
Определена зависимость итераций от заданной погрешности для определения 4 точки пересечения графиков.