|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Повтор Выход ⇐ ПредыдущаяСтр 2 из 2 ЧАСТЬ 2 Разработать алгоритм и программу вычисления корня уравнения f(x)=0 заданного на отрезке [A; B] методом дихотомии с допустимой погрешностью ε, равной: 0. 01, 0. 005, 0. 0005, 0. 002, 0. 00001.
Таблица данных:
Алгоритм:
Повтор Выход Да Нет Программа: var E: array[1.. 5] of real; A, B, At, Bt, St, fat, fst, x: real; l, i: integer; Begin write('Input A, B: '); read(A, B); write('Input E[1.. 5]: '); for i: = 1 to 5 do read(E[i]); writeln('Epsilon Root Iterations'); for i: = 1 to 5 do begin At: = A; Bt: = B; l: = 0; repeat st: = (At+Bt)/2; fat: = (2/3)*arctan(sqrt(At))+0. 577*ln((At+1))+(0. 01/abs(0. 01)*exp((1/3)*ln(abs(0. 01)))) - At; fst: = (2/3)*arctan(sqrt(Bt))+0. 577*ln((Bt+1))+(0. 01/abs(0. 01)*exp((1/3)*ln(abs(0. 01)))) – st; l: =l+1; if fat*fst > 0 then At: = st else Bt: = st; until abs(Bt-At) < = E[i]; x: = (At+Bt)/2; write(E[i]: 7: 5, ' '); write(x: 10: 5, ' '); writeln(l); end; readln; end. Тесты: 1. Тест 1 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
2. Тест 2 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
3. Тест 3 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
ЧАСТЬ 3 Разработать алгоритм и программу вычисления корня уравнения f(x)=0 заданного на отрезке [A; B] методом дихотомии с допустимой погрешностью ε, равной: 0. 01, 0. 005, 0. 0005, 0. 002, 0. 00001. Для вычисления корня уравнения и числа итераций при данном значении ε использовать подпрограмму-процедуру вместо внутреннего цикла. Таблица данных процедуры Solve:
Таблица данных основной части программы:
Блок-схема процедуры Solve:
Блок-схема основной части программы:
Код: var E: array[1.. 5] of real; A, B, x: real; l, i: integer; Procedure Solve(A: real; B: real; E: real; var X: real; var l: integer); var At, Bt, St, Fat, Fst: real; begin At: = A; Bt: = B; l: = 0; repeat st: = (At+Bt)/2; Fat: = (2/3)*arctan(sqrt(At)) + 0. 577*ln(At+1) + (0. 01/abs(0. 01)*exp((1/3)*ln(abs(0. 01)))) - At; Fst: = (2/3)*arctan(sqrt(St)) + 0. 577*ln(St+1) + (0. 01/abs(0. 01)*exp((1/3)*ln(abs(0. 01)))) - St; if Fat*Fst > 0 then At: = St else Bt: = St; l: = l+1; until abs(Bt-At) < = E; X: = (At+Bt)/2; end; begin write('Input A, B: '); read(A, B); write('Input E[1.. 5]: '); for i: = 1 to 5 do read(E[i]); writeln('Epsilon Root Iterations'); for i: = 1 to 5 do begin Solve(A, B, E[i], x, l); write(E[i]: 7: 5, ' '); write(x: 10: 5, ' '); writeln(l); end; readln; end. Тесты: 1. Тест 1 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
2. Тест 2 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
3. Тест 3 ñ Исходные данные: ◦ A = ◦ B = ◦ E = 0. 01 0. 05 0. 005 0. 002 0. 00001 ñ Результат:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|