Автор: Пользователь скрыл имя, 23 Февраля 2013 в 13:22, курсовая работа
Задачей данного курсового проекта является создание алгоритма вычисления корней нелинейного уравнения методом подекадного приближения (метод подобен методу поразрядного приближения, но уменьшение шага поиска корня фиксировано на значении 10) и программная реализация метода на языке MATLAB в среде MatLab.
Введение………………………………………………………….………………..3
Постановка задачи.………………………………………………………………..4
Анализ, формальная постановка и выбор метода решения…………………….5
Разработка алгоритмов решения задачи……………………………………….10
Пошаговая детализация…………………………………………………………11
Блок-схема………………………………………………………………………..13
Тексты и описание программных модулей…………………………………….14
Тестирование разработанных программных модулей…………………….…..16
Список литературы………………………………………………………………18
Уточнение корней. На данном этапе задача состоит в получении приближенного значения корня, принадлежащего отрезку , с заданной точностью (погрешностью) e. Это означает, что вычисленное значение корня должно отличаться от точного не более чем на величину e:
Процедура численного определения приближенных значений корней нелинейных уравнений, как правило, состоит в выборе начального приближения к корню и вычислении по некоторой формуле последующих приближений , и т.д. Каждый такой шаг называется итерацией (от латинского iteratio – повторение), а сами методы уточнения – итерационными методами. В результате итераций получается последовательность приближенных значений корня , которая называется итерационной последовательностью. Если эти значения с ростом k стремятся к точному значению корня :
, (2.3)
то говорят, что итерационный процесс сходится.
Сходимость итерационного процесса означает, что погрешность каждого последующего приближения должна быть меньше погрешности предыдущего приближения, т.е. погрешность приближенных значений с каждым шагом должна уменьшаться:
В общем случае это неравенство можно представить в виде:
, (2.4)
где и – некоторые числа, значения которых определяются методом уточнения корня. От значений q и a зависит насколько с каждым шагом уменьшается погрешность приближенных значений и, соответственно, насколько быстро можно получить приближенное значение с заданной точностью. Главным показателем скорости сходимости метода является значение a, называемое порядком сходимости. При погрешность с каждым шагом убывает линейно, в этом случае говорят о линейной сходимости. Если , то говорят, что имеет место сверхлинейная сходимость.
Разработка алгоритмов решения задачи
Алгоритмом называют формально описанную последовательность действий, которые необходимо выполнить для получения требуемого результата.
Суть метода: значение переменной величины изменяется с некоторым достаточно большим шагом. Как только целевая функция перейдет искомое значение, отходим на шаг назад и начинаем движение с уменьшенным в R раз шагом (при R = 10 метод называется методом подекадного приближения). Процесс повторяется до достижения требуемой точности.
Общая структура программы, для решения нелинейных и трансцендентных уравнений, методом подекадного приближения должна выглядеть следующим образом:
Пошаговая детализация
Шаг 1 (Ввод исходных данных).
Функция (другое обозначение: ), читается «сигнум» (от лат. signum — знак) — кусочно-постоянная функция, определённая следующим образом:
Функция не является элементарной. Часто используется представление:
При этом производная модуля в нуле, которая, строго говоря, не определена, доопределяется средним арифметическим соответствующих производных слева и справа. Функция применяется в теории обработки сигналов, в математической статистике и других разделах математики, где требуется компактная запись для индикации знака числа. |
|
Шаг 2 (Проверка принадлежности x к промежутку поиска корней).
Шаг 3 (Определение наличия корней на промежутке).
Шаг 4 (Задание допустимой погрешности, уточнение корня).
Шаг 5 (Вывод результата).
Таким образом программа будет проделывать итерации, искать и выводить на печать корни, пронумеровав их от 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
Корней больше нет
Список использованной литературы