Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
многочлены.doc
Скачиваний:
14
Добавлен:
10.05.2015
Размер:
317.44 Кб
Скачать

2.4.6 Метод простых итераций

Теперь рассмотрим более общий итерационный метод уточнения корней. Представим исходное уравнение в виде

. (2.21)

О том как преобразовать исходное уравнение к виду (2.21) буден рассказано ниже. Пусть нам известно начальное приближение к корню (). Подставив его в правую часть уравнения (2.21) получим новое приближение , затем аналогичным образом получим и так далее.

, . (2.22)

Оказывается, что при определенных свойствах функции последовательность , определяемая по формуле (2.22), сходится к корню уравнения . Необходимо установить при каких условиях итерационный процесс (2.22) будет сходящимся.

3. Разработка алгоритма решения задачи

Шаг 1 Определяем общую структуру программы

Программа:

Ввести выражения для вычисляемой функции

Ввести a, b, E

Определить X

Вывести X

Конец.

Шаг 2. Детализируем операцию определения X.

c=a-(y/(d-y))*(b-a);

x=c;

g=f(x);

i=1;

Цикл пока

while (1)

i = i+1

если(i == 16)

все если

все цикл

если (y*g)>0

то a=c

иначе b=c;

все цикл

Все.

Таким образом программа состоит из двух простых шагов. Полностью имеет вид:

Программа:

Ввести выражение для вычисляемой функции

Ввести a, b, E

% определить Х.

c=a-(y/(d-y))*(b-a);

x=c;

g=f(x);

i=1;

Цикл-пока

while (1)

i = i+1

если (i == 16)

се если

се цикл

если (y*g)>0

то a=c

иначе b=c;

се цикл

ывести Х

Конец.

Общая схема алгоритма приведена на рисунке 3.1

Рис. 3.1 Схема алгоритма программы

Алгоритм подпрограммы ввода границ интервала вычисления приведен на рис. 3.2

Рис. 3.2 Ввод границ интервала

4. Реализация разработанного алгоритма

R=input('Введите функцию, f=','s')

f=inline(R);

a=input('Введите нижний промежуток')

b=input('Введите верхий промежуток')

if a>b

disp('Неверный ввод промежутка '), break

else

e=input('Введите относительную погрешность')

c=1

x=a;

y=f(x);

x=b;

d=f(x);

c=a-(y/(d-y))*(b-a);

x=c;

g=f(x);

i=1;

while (1)

i = i+1

if (i == 16) break;

end;

if (y*g)>0

a=c

else

b=c;

end

x=a;

y=f(x);

x=b;

d=f(x);

c=a-(y/(d-y))*(b-a)

x=c;

g=f(x);

end

end

disp('Ваш ответ'),disp(c)

5. Тестирование разработанной программы

5.1 Ручной расчёт тестового примера

В качестве тестового примера возьмём функцию .

на интервале [-2;-1]. Относительная погрешность Е = 0.01. Результаты приведены ниже.

Искомый корень : - 1,6430

5.2 Решение тестовой задачи в MatLab

Программа MatLab при расчёте тестового примера даёт следующие значения:

Введите функцию, f=5^x-3*x-5

R =

5^x-3*x-5

Введите нижний промежуток-2

a = -2

Введите верхий промежуток-1

b = -1

Введите относительную погрешность0.01

e = 0.0100

c = 1

i = 2

c = -1.6429

i = 3

c = -1.6430

i = 4

c = -1.6430

i = 5

c = -1.6430

i = 6

c = -1.6430

i = 7

c = -1.6430

i = 8

c = -1.6430

i = 9

c = -1.6430

i = 10

c = -1.6430

i = 11

c = -1.6430

i = 12

c = -1.6430

i = 13

c = -1.6430

i = 14

c = -1.6430

i = 15

c = -1.6430

i = 16

Ваш ответ

-1.6430

Таким образом, значение ,вычисленное при помощи программы MatLab, равно -1.6430. Следовательно, результаты тестовой задачи совпадают для случаев ручного расчёта и расчёта в MatLab.

математизация matlab трансцендентный локализация

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

  1. Самарский А.А. Введение в численные методы. Учебное пособие для Вузов, - М., Наука,1987,288 с.,;

  2. Дьяконов В.П. MatLab 6.5 SP/7 + Simulink 5/6. Основы применения. М.: СОЛОН-Пресс, 2005.

  3. Иванов Г.С Основы программирования : Учебник для вузов.- М. : Изд-во МГТУ им. Н.Э.Баумана, 2001

  4. Бураков М.В. Основы работы в MATLAB: учебное пособие/ М.В. Бураков .- ГУАП.СПб., 2006;

Размещено на Allbest.ru

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]