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