Компиляция программы
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное
образовательное учреждение
высшего профессионального образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА КОМПЬЮТЕРНОЙ МАТЕМАТИКИ И ПРОГРАММИРОВАНИЯ
КУРСОВАЯ РАБОТА
ЗАЩИЩЕНА С ОЦЕНКОЙ
РУКОВОДИТЕЛЬ
Доцент, к. т. н-к |
Ключарев А.А. | |||
должность, уч. степень, звание |
подпись, дата |
инициалы, фамилия |
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА | ||||||
Решение нелинейных уравнений методом подекадного приближения | ||||||
по дисциплине: ИНФОРМАТИКА | ||||||
РАБОТУ ВЫПОЛНИЛ | ||||||
СТУДЕНТ ГР. |
3126 |
Евгеньев В.В. | ||||
подпись, дата |
инициалы, фамилия | |||||
Санкт-Петербург
2012
Содержание
Введение…………………………………………………………
Постановка задачи.……………………………………………………………
Анализ, формальная постановка и выбор метода решения…………………….5
Разработка алгоритмов решения задачи……………………………………….10
Пошаговая детализация…………………………………………………
Блок-схема……………………………………………………
Тексты и описание программных модулей…………………………………….14
Тестирование разработанных
программных модулей…………………….….
Список литературы…………………………………
Введение
Целью данного курсового проектирования является:
- Изучение этапов разработки программного обеспечения.
- Получение навыков программирования на языке MATLAB и схожих с ним.
- Освоение работы с функциями и массивами данных, получение навыков построения интерфейса пользователя.
Краткий план
по пояснительной записке к
- Постановка задачи;
- Анализ, формальная постановка и выбор метода решения задачи;
- Разработка алгоритмов решения задачи;
- Тексты и описание программных модулей;
- Тестирование разработанных программных модулей.
Постановка задачи
Задачей данного курсового проекта является создание алгоритма вычисления корней нелинейного уравнения методом подекадного приближения (метод подобен методу поразрядного приближения, но уменьшение шага поиска корня фиксировано на значении 10) и программная реализация метода на языке MATLAB в среде MatLab.
Анализ, формальная постановка и выбор метода решения
Решение нелинейных уравнений
с одним неизвестным является
одной из важных математических задач,
возникающих в различных
В общем случае нелинейное уравнение с одним неизвестным можно записать в виде:
, (2.1)
где – некоторая непрерывная функция аргумента x.
Всякое число , обращающее функцию в нуль, т.е. при котором , называется корнем уравнения (2.1). Если в точке наряду с функцией обращаются в ноль и ее производные до порядка включительно, то число называют корнем k-й кратности. Однократный корень также называют простым. В дальнейшем мы будем говорить именно о простых корнях.
В зависимости от вида функции нелинейные уравнения подразделяются на два класса – алгебраические и трансцендентные.
Уравнение (2.1) называется алгебраическим, если функция является алгебраической функцией. Алгебраическое уравнение всегда может быть представлено в канонической форме:
, (2.2)
где – коэффициенты уравнения. Показатель n называют степенью алгебраического уравнения.
Если функция содержит тригонометрические, показательные, логарифмические и другие функции, не являющиеся алгебраическими, то уравнение (2.1) называется трансцендентным. Примерами трансцендентных уравнений являются:
Методы решения нелинейных уравнений делятся на прямые (аналитические, точные) и итерационные. Прямые методы позволяют записать решение в виде некоторого соотношения (формулы). При этом значения корней могут быть вычислены по этой формуле за конечное число арифметических операций. Подобные методы развиты для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений.
Однако подавляющее
При численном подходе задача о решении нелинейных уравнений разбивается на два этапа: локализация (отделение) корней, т.е. нахождение таких отрезков на оси x, в пределах которых содержится один единственный корень, и уточнение корней, т.е. вычисление приближенных значений корней с заданной точностью.
a |
b |
x |
y = f(x) |
f(a) |
f(b) |
Рис. 2.1. Отделение корней. Функция f(x) не монотонна на отрезке [a, b]. |
Локализация корней. Для отделения корней уравнения (2.1) необходимо иметь критерий, позволяющий убедится, что, во-первых, на рассматриваемом отрезке имеется корень, а, во-вторых, что этот корень единственный на указанном отрезке. Если функция непрерывна на отрезке , а на концах отрезка её значения имеют разные знаки , то на этом отрезке расположен, по крайней мере, один корень. Это условие (как видно из рисунка 2.1) не обеспечивает единственности корня. Достаточным дополнительным условием, обеспечивающем единственность корня на отрезке является требование монотонности функции на этом отрезке. В качестве признака монотонности функции можно воспользоваться условием знакопостоянства первой производной .
Таким образом, если на отрезке функция непрерывна и монотонна, а ее значения на концах отрезка имеют разные знаки, то на рассматриваемом отрезке существует один и только один корень. Заметим, что под этот критерий не подпадают кратные корни уравнений, например, очевидный корень уравнения .
Воспользовавшись этим критерием можно отделить корни аналитическим способом, находя интервалы монотонности функции.
Отделение корней можно выполнить графически, если удается построить график функции . В ряде случае бывает удобно заменить уравнение эквивалентным уравнением вида . Корни этого уравнения определяются абсциссами точек пересечения графиков функций и .
x |
1 |
y |
1 |
p |
e |
x* |
|
y = ln x |
y = sin 2x |
0 |
Рис. 2.2. Графическое отделение корней уравнения sin 2x – ln x = 0. |
A |
B |
x |
y = f(x) |
Рис. 2.3. Табличный способ локализации корней. |
h |
h |
В качестве примера рассмотрим уравнение . Переходя к эквивалентному уравнению построим графики функций и (рис. 2.2)
Из графика видно, что уравнение содержит один корень, расположенный в интервале .
Отделение корней можно также выполнить табличным способом. Допустим, что все интересующие нас корни уравнения (2.1) находятся на отрезке . Выбор этого отрезка (интервала поиска корней) может быть сделан, например, на основе анализа конкретной физической или иной задачи. Будем вычислять значения , начиная с точки , двигаясь вправо с некоторым шагом h (рис. 2.3). Как только обнаруживается пара соседних значений , имеющих разные знаки, так соответствующие значения аргумента x можно считать границами отрезка, содержащего корень.
Надежность рассмотренного подхода к отделению корней уравнений зависит как от характера функции , так и от выбранной величины шага h. Действительно, если при достаточно малом значении h ( ) на границах текущего отрезка функция принимает значения одного знака, то естественно ожидать, что уравнение корней на этом отрезке не имеет. Однако, это не всегда так: при несоблюдении условия монотонности функции на отрезке могут оказаться корни уравнения (рис. 2.4а). Также несколько корней на отрезке могут оказаться и при выполнении условия (рис. 2.4б).
x |
x + h |
x |
x |
Рис. 2.4. |
– |
– |
– |
+ |
x |
x + h |
а) |
б) |
Предвидя подобные ситуации, следует выбирать достаточно малые значения h.
Поскольку данный способ предполагает выполнение лишь элементарных арифметических и логических операций, количество которых может быть велико при малых значениях h, для его реализации целесообразно использовать вычислительные возможности компьютера.
Отделяя таким образом корни, мы, по сути, получаем их приближенные значения с точностью до выбранного шага. Так, например, если в качестве приближенного значения корня взять середину отрезка локализации, то абсолютная погрешность этого значения не будет превосходить половины шага поиска (h/2). Уменьшая шаг в окрестности каждого корня, можно, в принципе, повысить точность отделения корней до любого наперед заданного значения. Однако такой способ требует большого объема вычислений. Поэтому при проведении численных экспериментов с варьированием параметров задачи, когда приходится многократно осуществлять поиск корней, подобный метод не годится для уточнения корней и используется только для отделения (локализации) корней, т.е. определения начальных приближений к ним. Уточнение корней проводится с помощью других, более экономичных методов.
Уточнение корней. На данном этапе задача состоит в получении приближенного значения корня, принадлежащего отрезку , с заданной точностью (погрешностью) e. Это означает, что вычисленное значение корня должно отличаться от точного не более чем на величину e:
Процедура численного определения приближенных значений корней нелинейных уравнений, как правило, состоит в выборе начального приближения к корню и вычислении по некоторой формуле последующих приближений , и т.д. Каждый такой шаг называется итерацией (от латинского iteratio – повторение), а сами методы уточнения – итерационными методами. В результате итераций получается последовательность приближенных значений корня , которая называется итерационной последовательностью. Если эти значения с ростом k стремятся к точному значению корня :
, (2.3)
то говорят, что итерационный процесс сходится.
Сходимость итерационного процесса означает, что погрешность каждого последующего приближения должна быть меньше погрешности предыдущего приближения, т.е. погрешность приближенных значений с каждым шагом должна уменьшаться:
В общем случае это неравенство можно представить в виде:
, (2.4)
где и – некоторые числа, значения которых определяются методом уточнения корня. От значений q и a зависит насколько с каждым шагом уменьшается погрешность приближенных значений и, соответственно, насколько быстро можно получить приближенное значение с заданной точностью. Главным показателем скорости сходимости метода является значение a, называемое порядком сходимости. При погрешность с каждым шагом убывает линейно, в этом случае говорят о линейной сходимости. Если , то говорят, что имеет место сверхлинейная сходимость.
Разработка алгоритмов решения задачи
Алгоритмом называют формально описанную последовательность действий, которые необходимо выполнить для получения требуемого результата.
Суть метода: значение переменной величины изменяется с некоторым достаточно большим шагом. Как только целевая функция перейдет искомое значение, отходим на шаг назад и начинаем движение с уменьшенным в R раз шагом (при R = 10 метод называется методом подекадного приближения). Процесс повторяется до достижения требуемой точности.
Общая структура программы, для решения нелинейных и трансцендентных уравнений, методом подекадного приближения должна выглядеть следующим образом:
- Ввод исходных данных.
- Проверка принадлежности x к промежутку поиска корней.
- Определение наличия корней на промежутке.
- Задание допустимой погрешности, уточнение корня.
- Вывод результата.
Пошаговая детализация
Шаг 1 (Ввод исходных данных).
- Ввод исходных данных, т.к. исследуемый метод предназначен для решения нелинейных и трансцендентных уравнения, то необходимо ввести функцию вида y=f(x), где f(x)=0.
- Выбираем отрезок [a,b] , на котором будет производиться поиск корней.
- Задаем шаг решения c=h.
- Принимаем х=а.
- Задаем номер итерации k=0.
- Находим значение W=sgn f(x).
Функция (другое обозначение: ), читается «сигнум» (от лат. signum — знак) — кусочно-постоянная функция, определённая следующим образом:
Функция не является элементарной. Часто используется представление:
При этом производная модуля в нуле, которая, строго говоря, не определена, доопределяется средним арифметическим соответствующих производных слева и справа. Функция применяется в теории обработки сигналов, в математической статистике и других разделах математики, где требуется компактная запись для индикации знака числа. |
|
Шаг 2 (Проверка принадлежности x к промежутку поиска корней).
- Задаем значение и проверяем условие . Если оно выполняется, заканчиваем счет, иначе переходим к шагу 3.
Шаг 3 (Определение наличия корней на промежутке).
- Вычисляем f(x) и проверяем условие . Если оно выполняется, идем к шагу 2, иначе переходим к шагу 4.
Шаг 4 (Задание допустимой погрешности, уточнение корня).
- Задаем погрешность вычисления корня , где R — показатель разрядности (уменьшении шага с, в случае подекадного приближения, R=10), и проверяем выполнение условия . Если это условие выполняется, идем к шагу 2, иначе переходим к шагу 5.
Шаг 5 (Вывод результата).
- Задаем и выводим на печать (индикацию) значение k-гo корня . Затем полагаем , и идем к шагу 2.
Таким образом программа будет проделывать итерации, искать и выводить на печать корни, пронумеровав их от 1-го до n-го, пока не будет достигнут конец промежутка.
Блок-схема алгоритма
Начало
Ввод y=f(x)
Ввод c=h
W=sgn f(x)
x=x+c
(x-c)≥b
Конец
Тексты и описание программных модулей
clear all
clc
%Тема
disp ('Вычисление всех корней нелинейного уравнения F(X)=0')
disp ('в интервале (A,B) методом подекадного приближения');
%Ввод функции
s=input('введите функцию F(X)=', 's');
f=inline(s); %Перевод строки в функцию
flag=0;
while (flag==0)
%Промежуток поиска
disp ('Задайте границы интервала (A,B)');
A=input('A=');
B=input('B=');
if A>B disp ('Неверный промежуток'); flag=0;
else flag=1;
end
end
flag=0;
while (flag==0)
%Погрешность
while (flag==0)
E=input('Задайте погрешность вычислений E=');
if E>0.01 disp ('Слищком большое значение погрешности'); flag=0;
elseif E<0.0001 disp ('Слишком маленькое значение погрешности'); flag=0;
else flag=1;
end
end
flag=0;
%Шаг
while (flag==0)
H=input('Задайте шаг начального поиска H=');
if H>1.1 disp ('Слишком большое шаг'); flag=0;
elseif H<0.0001 ('Слишком маленький шаг'); flag=0;
else flag=1;
end
end
flag=0;
if E>=H disp ('Погрешность больше или равна шагу'); flag=0;
else flag=1;
end
end
%Стартовые данные
C=H;
K=0;
X=A;
F=f(X); %Взятие функции от X
W=sign(F);
X=X+C;
flag=1; %Ограничитель на значение X
%Цикл
while (flag==1)
while A<B
while abs(C)>E/10
while F*W/C>0
X=X+C;
if X-C>=B break; %Ограничитель на значение X
end
F=f(X);
end
F=f(X);
C=C/10;
if X-C>=B break;
end
end
F=f(X);
if X<B disp ('Найден корень уравнения! Х=');
disp(X);
disp('±');
disp(E)
else flag=0;
end
A=X;
C=H;
W=-W;
X=X+C;
end
end
disp ('Корней больше нет');
Тестирование
разработанных программных
Пример №1
Вычисление всех корней нелинейного уравнения F(X)=0
в интервале (A,B) методом подекадного приближения
введите функцию F(X)=X^5-X^2-4
Задайте границы интервала (A,B)
A=-10
B=10
Задайте погрешность вычислений E=0.0001
Задайте шаг начального поиска H=0.01
Найден корень уравнения! Х=
1.4400
±
1.0000e-004
Корней больше нет
Пример №2
Вычисление всех корней нелинейного уравнения F(X)=0
в интервале (A,B) методом подекадного приближения
введите функцию F(X)=X^4-225
Задайте границы интервала (A,B)
A=-100
B=100
Задайте погрешность вычислений E=0.001
Задайте шаг начального поиска H=0.01
Найден корень уравнения! Х=
-3.8700
±
1.0000e-003
Найден корень уравнения! Х=
3.8800
±
1.0000e-003
Корней больше нет
Список использованной литературы
- Дьяконов В.П. Справочник по алгоритмам и программам для ПЭВМ. М.: Наука, 1987. 240 с. (издание 1989 г. – стереотипное)

- Комплекс credo
- Комплекс агротехнических мероприятий, обеспечивающих получение действительно возможного урожая заданной культуры
- Комплекс вредителей и болезней кукурузы и обоснование системы защиты от него
- Комплекс выразительных средств их организация при постановке театрализованого представления
- Комплекс ГИС при поисках медно-никелевых месторождений
- Комплекс грузового таможенного терминала
- Комплекс дій по поліпшенню якості обслуговування й контролю за якістю обслуговування покупців у дилерській мережі «Субару Україна»
- Компетенция Российских судов по рассмотрению дел с участием иностраных лиц
- Компетенция Совета Министров Республики Беларусь
- Компетенция Федерального собрания РФ, его правовой статус, полномочия и структура
- Компетенция федеральных законодательных органов и органов местного управления по установлению местных налогов
- Компетенция эксперта-бухгалтера
- Компетенция эксперта-бухгалтера
- Компетенця правительства рф