
IT ФЭЛ, кафедра МНЭ, 1 сем / Курсач / guzlo_1282
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"
Факультет электроники Кафедра радиотехнической электроники
"Применение информационных технологий для решения инженерной задачи "
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе по дисциплине "Информационные технологии"
Доцент, к.т.н. Фирсов Д.Д.
Студентка гр.1282 Billy Herrington.
Санкт-Петербург 2021
СОДЕРЖАНИЕ
стр.
Постановка задачи 3
Алгоритм решения ……………………………………………………………...4
Текст программы 5
Листинг результатов 6
Заключение 9
Постановка задачи
Вариант 10.
Даны
две функции:
,
Написать программу на языке MatLab для
нахождения
методом последовательных приближений
координаты x n-ой по счету точки пересечения
этих функций на интервале
.
Значения n
пользователь вводит с клавиатуры при
работе программы. Координатные значения
определяются с заданной точностью (
.
Отобразите графически данные кривые в
заданном диапазоне, включая точку
пересечения.
Алгоритм решения
Текст программы
clc;
close all;
clear;
eps=0.001;
e=eps;
r=3;
i = 0; %счетчик для массива с корнями
xn = 0; xk = 100; %корни полученные при решении 0<sqrt(x/100)<=1
h = 0.1; %шаг
x = xn : h : xk; %массив значений х для построения графиков
f = @(x) cos(x) - sqrt(x/100); %вводим функцию для разности функций
while xn < xk
if f(xn) * f(xn + h) < 0 %условие выполняющееся когда произведение разности меньше нуля
n = xn; %запоминание занчения хn
k = xn + h; %присваиваем значение хn+h
while abs(k - n) >= eps
c = (n + k) / 2; %центр интервала (n;k)
if f(n) * f(c) < 0 %смотрим находится ли корень в интервал (n;c)
k = c; %уменьшаем интервал в два раза
elseif f(k) * f(c) < 0 %смотрим находится ли корень в интервале (c;k)
n = c; %уменьшаем интервал в два раза
end
end
i=i+1;%увеличиваем значение переменой на 1
a(i) = (n + k) / 2;%записываем точку пересечения
end
xn = xn + h;%увеличиваем значение переменой на h
end
fprintf('Количество точек пересечения: %g\n', i);
for j=1:i
fprintf('Координаты точки пересечения под номером %g - (%g, %g)\n', j, round(a(j), r), round(sqrt(a(j)/100), r));
end
hold on; %Команда, позволяющая строить несколько графиков
grid on; %Включаем сетку
figure(1);
title('Графики функций y = cos(x) и y = sqrt(x/100)'); %Название графика
xlabel('Ось X'); %Подпись оси x
ylabel('Ось Y'); %Подпись оси y
plot(x, cos(x),'r'); %Построение графика y=cos(x)
plot(x, sqrt(x/100),'b'); %Построение графика y=sqrt(x/100)
plot(a, sqrt(a/100),'.k');%Строим точки пересечения графиков
n=input('Введите номер точки пересечения:');
if n>=1 && n<=i %проверяем если ли корень под номером n
fprintf('Координаты точки пересечения под номером %g - (%g, %g)\n', n, round(a(n), r), round(sqrt(a(n)/100), r));
else
error('Точки пересечения под номером %g нет', n);
end
plot(a(n), sqrt(a(n)/100),'ok');%Выделение заданной точки
Листинг результатов
Заключение
В ходе выполнения курсовой работы научились работать в среде MATLAB и получили программу для нахождения методом последовательных приближений координаты x n-ой по счету точки пересечения этих функций на интервале [0,∞).
Также мы отобразили графически данные кривые в заданном диапазоне, включая точку пересечения.