Компиляция программы
Курсовая работа, 23 Февраля 2013, автор: пользователь скрыл имя
Описание работы
Задачей данного курсового проекта является создание алгоритма вычисления корней нелинейного уравнения методом подекадного приближения (метод подобен методу поразрядного приближения, но уменьшение шага поиска корня фиксировано на значении 10) и программная реализация метода на языке MATLAB в среде MatLab.
Содержание
Введение………………………………………………………….………………..3
Постановка задачи.………………………………………………………………..4
Анализ, формальная постановка и выбор метода решения…………………….5
Разработка алгоритмов решения задачи……………………………………….10
Пошаговая детализация…………………………………………………………11
Блок-схема………………………………………………………………………..13
Тексты и описание программных модулей…………………………………….14
Тестирование разработанных программных модулей…………………….…..16
Список литературы………………………………………………………………18
Работа содержит 1 файл
Курсовая.docx
— 196.67 Кб (Скачать)Уточнение корней. На данном этапе задача состоит в получении приближенного значения корня, принадлежащего отрезку , с заданной точностью (погрешностью) 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 г. – стереотипное)