Uploaded by Борис Старцев

Пример задачи на Pascal

advertisement
{Этот код является программой на языке Паскаль для вычисления
приближенного значения квадратного корня числа с использованием
итеративного метода Ньютона.
Переменные, используемые в программе:
x, yn, y0: вещественные переменные для хранения значения входного
числа, текущего приближения квадратного корня, и начального
приближения соответственно.
E, anse, err: вещественные переменные для хранения значения требуемой
точности, приближенного значения квадратного корня, и значения ошибки
соответственно.
N: целочисленная переменная для хранения количества итераций.
Программа начинается с запроса ввода значения x и требуемой точности E
от пользователя.
Затем программа инициализирует начальное приближение квадратного
корня, устанавливая y0 равным половине введенного числа x.
Текущее приближение yn и количество итераций N также инициализируются
этим значением.
Далее следует цикл, который выполняется до тех пор, пока значение
ошибки (разница между текущим и предыдущим приближением) не станет
меньше требуемой точности E.
В каждой итерации цикла вычисляется новое приближение квадратного
корня yn на основе предыдущего приближения yn-1 с использованием
формулы Ньютона.
Если значение ошибки становится меньше требуемой точности E, цикл
прерывается с помощью оператора break.
В противном случае, приближенное значение квадратного корня anse
обновляется до текущего приближения yn.
После окончания цикла программа выводит приближенное значение
квадратного корня (anse) с помощью команды writeln, а также количество
выполненных итераций (N).
Таким образом, этот код реализует итеративный метод Ньютона для
вычисления приближенного значения квадратного корня с заданной
точностью.}
program Newton_sqrt_iterative; // название программы
var // блок описания переменных от английского variable - переменная
x, yn, y0: real; // вещественные (нецелые) переменные для хранения
значения входного числа, текущего приближения квадратного корня, и
начального приближения
// соответственно.
E, anse, err: real; // вещественные переменные для хранения значения
требуемой точности, приближенного значения квадратного корня, и
значения ошибки соответственно.
N: integer; // N - целочисленная переменная для хранения количества
итераций (повторов)
begin // начало
writeln('Введите значение x'); // оператор вывода, выводится сообщение
"Введите значение x"
readln(x); // оператор ввода, вводится х с клавиатуры
writeln('Введите требуемую точность E (E > 0):'); // оператор вывода,
выводится сообщение "Введите требуемую точность E (E > 0):"
readln(E:); // оператор ввода, вводится E с клавиатуры
y0 := x / 2; // Задаем начальное приближение y0 = x / 2, т.е.
программа инициализирует начальное приближение квадратного корня,
устанавливая y0 равным половине
// введенного числа x
yn := y0; // Это значит, что мы присваиваем переменной yn значение
переменной y0.
// В данном случае, это необходимо для начала итерационного
процесса, когда мы начинаем с начального приближения y0 и затем
улучшаем его,
// вычисляя следующие приближения (yn, yn+1 и т.д.)
N := 0;
// Переменная N используется для подсчета количества
итераций,
anse := yn; // Переменная anse хранит приближенное значение корня
(квадратного корня из числа x).
repeat // repeat - until это цикл с постусловием
N := N + 1; // увеличиваем счетчик итераций
err := abs(yn - yn-1); // вычисляем ошибку
yn := (yn-1 + x / yn-1) / 2; // вычисляем следующее приближение по
формуле Ньютона
// если ошибка меньше требуемой точности, то выходим из цикла
if err < E then // Если ошибка (err) меньше требуемой точности (E),
break // то выходим из цикла (break)
else // иначе
anse := yn; // обновляем значение anse (приближенное значение корня)
until (yn - anse) < E; // условие выхода из цикла. Цикл выполняется до
тех пор, пока разница между текущим и предыдущим значением yn меньше
требуемой точности E.
writeln('Приближенное значение квадратного корня равно:', anse:0:10,'
Количество итераций:', N); // вывод ответа с точнотью до 10 знаков
после запятой
// и вывод количества итераций
end. // конец
Download