Thursday, January 9, 2020

ЛР10 Программирование (1.7 В21) - I

LabWork10
I. Внешняя спецификация
1. Условие задачи
Составить программу для решения уравнения f(x)=0 на отрезке [A,B] с точностью Е методом деления отрезка пополам. Метод состоит в последовательном приближении к корню за счет уменьшения отрезка, на котором находится корень. Каждое новое приближение Х находится как середина текущего отрезка. Концы текущего отрезка выбираются из условия противоположности знака f(x) на его концах. Вычисление корня заканчивается, когда длина отрезка станет меньше Е.
Для проверки программы задать А≈0, В≈2, Е=10-4.

2. Состав данных
Тип
Имя
Смысл
Структура
Исходные данные
вещественный
A
начало отрезка, на котором находится корень уравнения X
простая переменная
вещественный
B
конец отрезка
простая переменная
вещественный
E
минимальная длина отрезка при вычислении корня уравнения
простая переменная
Выходные данные
вещественный
f(A)
значение функции для аргумента в начале отрезка
функция
вещественный
f(X)
значение функции для аргумента в середине отрезка
функция
вещественный
f(B)
значение функции для аргумента в конце отрезка
функция
вещественный
X
корень уравнения
простая переменная
Промежуточные данные
-
-
-
-

3. Форма ввода
1 5
<A>
1 5
<B>
1 5
<E>

4. Выходная форма
1 5
<A>
1 5
<B>
1 5
<E>
1 7
<f(A)>
1 7
<f(X)>
1 7
<f(B)>
1 7
<X>

5. / 6. Проработка фрагментов программы
Найти корень уравнения указанным методом можно только при разных знаках у значения функции в начале и в конце отрезка.
Если оба указанных значения функции положительны или оба отрицательны, то программа выдает соответствующее предупреждение.

if ((f(A)>=0) and (f(B)>=0)) or ((f(A)<0) and (f(B)<0)) then
        writeln('Невозможно найти корень уравнения указанным методом')
else
begin
end;

В данном случае подсчет значения функции удобнее выделить в отдельную подпрограмму.

function f(X:real):real;
begin
    f:=ln(20/sqrt(0.009))-1.5*(exp(X/3)+exp(-X/3))-X;
end;

7. Аномалии
При совпадении знаков значения функции в начале и в конце отрезка невозможно вычислить корень уравнения указанным методом. 
Ошибки программы возможны и при некорректном вводе данных пользователем. Сообщение в таких случаях выдает компилятор.

8. Тесты
1) с положительным результатом

0
2
0.0001


2) с отрицательным результатом

2
3
0.0001


No comments:

Post a Comment