Добавил:
t.me мой будущий Dungeon Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
10.06.2025
Размер:
244.32 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Санкт-Петербургский государственный электротехнический университет "ЛЭТИ"

Факультет электроники Кафедра радиотехнической электроники

"Применение информационных технологий для решения инженерной задачи "

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовой работе по дисциплине "Информационные технологии"

Доцент, к.т.н. Фирсов Д.Д.

Студентка гр.1282 Billy Herrington.

Санкт-Петербург 2021

СОДЕРЖАНИЕ

стр.

  1. Постановка задачи 3

  2. Алгоритм решения ……………………………………………………………...4

  3. Текст программы 5

  4. Листинг результатов 6

  5. Заключение 9

  1. Постановка задачи

Вариант 10.

Даны две функции: ,

Написать программу на языке MatLab для

нахождения методом последовательных приближений координаты x n-ой по счету точки пересечения этих функций на интервале . Значения n пользователь вводит с клавиатуры при работе программы. Координатные значения определяются с заданной точностью ( . Отобразите графически данные кривые в заданном диапазоне, включая точку пересечения.

  1. Алгоритм решения

  1. Текст программы

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');%Выделение заданной точки

  1. Листинг результатов

Заключение

В ходе выполнения курсовой работы научились работать в среде MATLAB и получили программу для нахождения методом последовательных приближений координаты x n-ой по счету точки пересечения этих функций на интервале [0,∞).

Также мы отобразили графически данные кривые в заданном диапазоне, включая точку пересечения.

Соседние файлы в папке Курсач