kursach_gotovoпередел
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"
Факультет электроники Кафедра радиотехнической электроники
"Применение информационных технологий для решения инженерной задачи "
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе по дисциплине "Информационные технологии"
Преподаватель Смирнов А.А
Студента гр.6291 Панкаля А. А.
Санкт-Петербург
2017
СОДЕРЖАНИЕ
стр.
Microsoft, MS являются зарегистрированными товарными знаками корпорации Microsoft, а Microsoft Works является торговым знаком корпорации Microsoft в США и других странах.
Microsoft Corporation
-
Постановка задачи
Даны две функции: y1 =cos(2x), y2 = sin(x)
Написать программу на языке MatLab для
нахождения в интервале x (0, ∞) методом последовательных приближений границы интервала (X1, X2), в который будут попадать корни (c 6 по 8) уравнения . Вычисление границ интервала следует производить с заданной погрешностью (eps). Отобразить графически данные кривые в заданном диапазоне, включая точки пересечения графиков. Исследовать зависимость количества приближений от погрешности.
-
Алгоритм решения
Начало Ввод
данных: is_in_valid_interval
= false; while(~is_in_valid_interval)
eps
= input('Введите
значение eps = ');
if(eps
>= 0)
is_in_valid_interval
= true;
else
disp('значение
eps должно быть больше 0')
end end
Вывод
данных is_in_valid_interval
= false; while(~is_in_valid_interval)
X2
= input('Введите
значение X2 = ');
if(X2
> 0 && X2 < 100 && X2 > X1)
is_in_valid_interval = true;
else
if(~(X2
> 0 && X2 < 100))
disp('X1
должен принадлежать интервалу (0 ; 100)')
else
if(~(X2
> X1))
disp('значение
X2 должно быть больше, чем X1')
end
end
Вывод
данных is_in_valid_interval
= false; while(~is_in_valid_interval)
eps
= input('Введите
значение eps = ');
if(eps
>= 0)
is_in_valid_interval = true;
else
disp('значение
eps должно быть больше 0')
end end
for
x = X1:0.1:(X2 - 0.1)
if(F(x)
* F(x + 0.1) < 0)
n
= n + 1; Новая
переменная для хранения левой границы
интервала xl
= X1;
Да Нет
xl = x;
break;
end
end
xr
= xl + 0.1; xp
= (xl + xr) / 2; num
= 0;
while(~(abs(F(xp))
<= eps))
if(F(xl)
* F(xp) < 0)
xr
= xp;
else
if(F(xr)
* F(xp) < 0)
xl
= xp;
end
end
num
= num + 1;
xp
= (xl + xr) / 2;
end Нет Да
disp(['num
: ', num2str(num)]);
disp(['интервал
: [', num2str(x1), ' ; ', num2str(x2), ']']);
end
Конец
-
Текст программы
function variant_21
function y = f1(xf)
y = cos(2 * xf);
end
function y = f2(xf)
y = sin(xf);
end
function y = F(xf)
y = f1(xf) - f2(xf);
end
is_in_valid_interval = false;
while(~is_in_valid_interval)
eps = input('Введите значение eps = ');
if(eps >= 0)
is_in_valid_interval = true;
else
disp('значение eps должно быть больше 0')
end
end
X1 = 0;
X2 = inf;
xl = X1;
n = 0;
x1 = 0;
x2 = 0;
num = 0;
for x = X1:0.1:(X2 - 0.1)
if(F(x) * F(x + 0.1) < 0)
n = n + 1;
if(n == 6 || n == 8)
xl = x;
xr = xl + 0.1;
xp = (xl + xr) / 2;
while(~(abs(F(xp)) <= eps))
if(F(xl) * F(xp) < 0)
xr = xp;
else
if(F(xr) * F(xp) < 0)
xl = xp;
end
end
num = num + 1;
xp = (xl + xr) / 2;
end
if(n == 6)
x1 = xp;
else
x2 = xp;
break;
end
end
end
end
x = x1:0.001:x2;
F1 = cos(2 * x);
F2 = sin(x);
plot(x', [F1' F2']);
grid on;
title('Графики функций f(x) = cos(2 * x) и f(x) = sin(x)');
xlabel('Координаты по оси Ox');
ylabel('Координаты по оси Oy');
disp(['num : ', num2str(num)]);
disp(['интервал : [', num2str(x1), ' ; ', num2str(x2), ']']);
end
-
Листинг результатов
Исходные данные задаются с клавиатуры, затем выводится сопоставление цветов графиков и функций, построение графика (так как интервал вводится с клавиатуры, подписать график функций не представляется возможным по техническим причинами), производится алгоритм поиска точек пресечения и в процессе работы алгоритма вывод пересекающихся функция и количества их пересечений. Исходные данные задаются с клавиатуры, затем выводится сопоставление цветов графиков и функций, построение графика (так как интервал вводится с клавиатуры, подписать график функций не представляется возможным по техническим причинам), производится алгоритм поиска точек пересечения и в процессе работы алгоритма вывод пересекающихся функций и количества их пересечений.
Рис. 1 Графики зависимости N и X от погрешности
Рис. 2 Вывод данных в MatLab
-
Диаграммы
В MATLAB входит мощная графическая подсистема, которая поддерживает как средства визуализации двумерной и трехмерной графики на экран. Для каждого графика можно задать заголовок, нанести обозначение осей и масштабную сетку. Для того чтобы построить график используется оператор plot.
Рис. 3 Графическая иллюстрация функций y1(x) и y2(x)
-
Тестовый результат
Тестовые результаты в Excel подтвердили, то что программа работает исправно.
Рис. 4 Тестовые результаты в Excel
Заключение
Программа принимает введенный с клавиатуры пользователем интервал, строит график исходя из этого интервала и заданных в задании функций.
Программа может использоваться для любого интервала и любых функций.
При проверке результатов EXCEL было установлено, что MatLab справился с поставленной задачей. Для теста были построены 2 графика функций. Следующим шагом мы попытались по графику определить пересечение функций. В конке мы с помощью обратных функций для у1(х) и у2(х) было подобрано значение х. для решения задач этим методом, требуется большая точность построения графика. Для этого нужно строить график по большому множеству точек. В ином случае придется долго подбирать значение пересечения графиков для координаты Y. Конечный результат в EXCEL совпал с конечным результатом MatLab.