
- •Экзаменационный вопрос №1 базовые понятия алгоритмизации
- •Экзаменационный вопрос №2 средства изображения алгоритмов
- •Экзаменационный вопрос № 3 базовые канонические структуры алгоритмов
- •Экзаменационный вопрос № 16. Общая характеристика языка программирования паскаль
- •Экзаменационный вопрос № 17. Программирование ввода-вывода данных различного типа
- •Экзаменационный вопрос № 18. Программирование линейных вычислительных процессов
- •Экзаменационный вопрос № 19. Программирование разветвляющихся вычислительных процессов с использованием if -then –else
- •Экзаменационный вопрос № 20. Программирование разветвляющихся вычислительных процессов с использованием оператора case
- •Экзаменационный вопрос № 21.
- •Экзаменационный вопрос № 22. Программа вычисления корней квадратного уравнения
- •Экзаменационный вопрос № 23. Программирование разветвляющихся структур с использованием в цикле операторов repeat – until
- •Экзаменационный вопрос № 24. Программа вычисления суммы бесконечного ряда
- •Экзаменационный вопрос № 25. Программирование циклических вычислительных структур
- •Экзаменационный вопрос № 26. Программирование с использованием цикла с параметрами
- •Экзаменационный вопрос № 27. Программирование циклов с постусловием
- •Экзаменационный вопрос № 28. Программирование с использованием подпрограмм
- •Экзаменационный вопрос № 29. Алгоритмы нахождения корней уравнений
- •Экзаменационный вопрос № 30. Алгоритмы численного интегрирования
- •Экзаменационный вопрос № 31. Программа вычисления определенного интеграла методом прямоугольников
- •Экзаменационный вопрос № 32. Программа вычисления определенного интеграла методом трапеций
- •Экзаменационный вопрос № 33. Программа вычисления определенного интеграла методом симпсона
- •Экзаменационный вопрос № 34. Программа вычисления корней алгебраического уравнения методом половинного деления
- •Экзаменационный вопрос № 35. Программа вычисления корней алгебраического уравнения методом ньютона
- •Экзаменационный вопрос № 36. Программа вычисления корней алгебраического уравнения методом хорд
- •Экзаменационный вопрос № 37. Программирование операций в одномерных массивах
- •Экзаменационный вопрос № 38. Программирование операций в двумерных массивах (На примере задания 1)
- •Экзаменационный вопрос № 39. Программирование операций в двумерных массивах (На примере задания 2)
- •Экзаменационный вопрос № 40. Построение графических изображений
- •Экзаменационный вопрос № 41. Программа для построения объекта с циклическим изменением цвета
- •Экзаменационный вопрос № 42. Программа для построения динамического объекта
Экзаменационный вопрос № 36. Программа вычисления корней алгебраического уравнения методом хорд
№
|
Уравнение f(x) = 0 |
Метод |
Интерв [а; b] |
Точн. вычисл. |
Ответ |
Число итер-й |
1 |
F = x2 + x – 5=0 |
Хорд |
[0; 10] |
10–4 |
1,791 1 |
22 |
Задание. Используя подпрограмму-процедуру, составить программу для определения корней уравнения методом Хорд.
Код программы.
Program primer3;
uses crt;
Var x: real; iter: integer; {x - значение вычисляемого корня}{iter - кол-во итераций}
Const
eps =0.001; {точность вычислений}
a:=–5.0 ; {a — левая граница отрезка }
b:=5.0; {b — правая граница отрезка}
Function Y(x:real) : real;
begin
Y:= x–1.1*sin(x)–0.245; {вычисление функции в точке}
end;
Procedure Metod_PolDel ( a, b : real; eps: real);
begin
Y:= x*x+x–5;
{Вычисление значения искомой функции в заданной точке x}
end;
function Y2(x:real):real;
begin
Y2:=2;
{Вычисление значения второй производной искомой функции в заданной
точке x}
end;
Procedure Metod_Hord ( a, b : real; eps: real);
var c,x0,x1 :real;
{x0 — первое приближенное значение корня функции}
{x1 — второе приближенное значение корня функции}
begin
if Y(a)*Y2(a)>0 then
{Условный оператор, проверка на отличие знаков функции и ее второй
производной}
{Y(a) — вычисление искомой функции на левой границе отрезка}
{Y2(a) — вычисление второй производной функции на левой границе отрезка}
begin
c:=a; {Переопределение промежуточной границы функции}
x1:=b; {Выбор приближенного корня функции от правого конца
отрезка}
end
else {Если условие на различие знаков функции и ее второй производной
не выполняется}
begin
c:=b; {Переопределение промежуточной границы функции}
x1:=a; {Выбор приближенного корня функции от левого конца
отрезка}
end;
repeat
x0:=x1; {Переопределение предыдущего приближенного решения
корня функции}
x1:=(c*Y(x0)–x0*Y(c))/(Y(x0)–Y(c));
{Вычисление следующего приближенного решения корня функции}
iter:=iter+1; {Происходит увеличение числа итераций}
until abs(x0–x1)<=eps;
{abs(x0–x1)<=eps — проверка точности достижения результата}
{Если abs(x0–x1) оказалось <=eps, то цикл завершает свое выполнение}
{Если abs(x0–x1) оказалось >eps, то цикл проводит еще одну итерацию}
x:=x1; {Получение корня функции}
end;
begin
clrscr; {clrscr- — метод из модуля CRT, осуществляющий очистку экрана}
writeln(‘a=’,a:2:1);
writeln(‘b=’,b:2:1);
Metod_Hord(a,b,eps);
{вызов процедуры, вычисляющей корень уравнения}
writeln('Ответ: x=',x:5:3);
writeln(‘Кол-во итераций: i=’,iter);
write(‘Нажмите ENTER’); {Вывод сообщения на экран}
readln();
end.