Компиляция программы

Автор: Пользователь скрыл имя, 23 Февраля 2013 в 13:22, курсовая работа

Описание работы

Задачей данного курсового проекта является создание алгоритма вычисления корней нелинейного уравнения методом подекадного приближения (метод подобен методу поразрядного приближения, но уменьшение шага поиска корня фиксировано на значении 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 — знак) — кусочно-постоянная функция, определённая следующим образом:

 

Функция не является элементарной.

Часто используется представление:

При этом производная модуля в нуле, которая, строго говоря, не определена, доопределяется средним арифметическим соответствующих производных слева и справа.

Функция применяется в  теории обработки сигналов, в математической статистике и других разделах математики, где требуется компактная запись для индикации знака числа.

  • Область определения: .
  • Область значений: {-1;0;+1}.
  • Гладка во всех точках, кроме нуля.
  • Функция нечётна.
  • Точка x=0 является точкой разрыва первого рода, так как пределы справа и слева от нуля равны +1 и -1 соответственно.
  • для .

 

Шаг 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

Корней больше нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованной литературы

 

  1. Дьяконов В.П. Справочник по алгоритмам и программам для ПЭВМ. М.: Наука, 1987. 240 с. (издание 1989 г. – стереотипное)

 

 

 


Информация о работе Компиляция программы