- •НЕКОТОРЫЕ АЛГОРИТМЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ
- •Табулирование функции одной переменной
- •Состав данных
- •начало
- •Пример использования таблицы функции. Отделение корней уравнения с помощью построения таблиц и графиков.
- •Приближенное решение уравнения на отрезке
- •Приближенное решение уравнения на отрезке
- •Метод деления отрезка пополам (дихотомии)
- •Метод деления отрезка пополам (дихотомии)
- •Метод деления отрезка пополам (дихотомии)
- •Состав данных
- •КЛАССИФИКАЦИЯ
- •КЛАССИФИКАЦИЯ
НЕКОТОРЫЕ АЛГОРИТМЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ
лекция №7
Табулирование функции одной переменной
ТАБЛИЦА ФУНКЦИИ
i |
X |
Y |
1 |
0.550 |
5.456749 |
2 |
0.551 |
4.380586 |
3 |
0.552 |
3.450684 |
4 |
0.553 |
2.456783 |
|
--- |
--- |
5 |
0.554 |
1.356709 |
Составить алгоритм и программу вычисления
таблицы значений функции f(x) для N значений
аргумента X, равномерно распределенных на отрезке
[A,B].
Состав данных
начало |
|
|
|
|
|
|
ввод A,B,N |
Program tabulirovanie; |
|
||||
Var N,i:integer; A,B,x,y,h:real; |
|
|||||
|
|
|||||
h:=(B-A)/(N-1) |
begin |
|
|
|
|
|
x:=A |
writeln(´input A,B,N´); |
|
||||
readln(A,B,N); |
|
|
|
|||
i:=1 |
h := (B-A)/(N-1); |
|
|
|||
x := A; |
|
|
|
|
||
|
|
|
|
|
||
i N |
writeln(´ |
i |
x |
y´); |
|
|
+ |
for i:=1 to N do |
|
|
|
||
y:=f(x) |
begin |
|
|
|
|
|
вывод i,x,y |
y:=f(x) {у каждого своя формула} |
|||||
writeln(´ |
´,i,´ |
´,x:5:2, ´ |
´,y:7:2); |
|||
|
||||||
x:=x+h |
x:=x+h; |
|
|
|
|
|
|
end; |
|
|
|
|
|
i:=i+1 |
readln; |
|
|
|
|
|
|
end. |
|
|
|
|
|
конец |
|
|
|
|
|
Пример использования таблицы функции. Отделение корней уравнения с помощью построения таблиц и графиков.
х6- 85х4+96х3+1027х2- 96х - 945 = 0
xy
-11 |
525009 |
-10 |
157715 |
-9 |
-12393 |
-8 |
-69105 |
-7 |
-68971 |
-6 |
-47421 |
-5 |
-24165 |
-4 |
-7873 |
-3 |
-135 |
-2 |
1299 |
-1 |
-1 |
0-945
1-3
22435
34419
43519
5-1375
6-7533
7 -5145
826639
600000 |
500000 |
400000 |
300000 |
200000 |
100000 |
0 |
-100000 |
Приближенное решение уравнения на отрезке
Известно, что уравнение
F(x)=0 (*)
на отрезке [A,B] имеет ровно один корень.
Требуется найти приближенное значение корня с точностью :
|x*-xпр|< ,
где x* - точное значение корня, xпр – приближенное значение корня.
Приближенное решение уравнения на отрезке
y=F(x)
A |
x* |
B |
x |
|
|
|
|
|
|
|
|
|
|
|
Если уравнение (*) имеет на отрезке [A,B] ровно один корень, то F(A)*F(B) 0.
Метод деления отрезка пополам (дихотомии)
y=F(x)
A |
x=(a+b)/2 |
x* |
B |
|
||||
|
|
x |
||||||
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
x2 |
|
x3 |
|
|
|
|
|
|
|
||||
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Если F(x)*F(B) 0, то x* [x,B] корень надо искать на правой половине отрезка: A=x;
иначе x* [A,x] корень надо искать на левой половине отрезка: B=x.
Далее деление пополам нового отрезка.
Метод деления отрезка пополам (дихотомии)
i-ая итерация (цикл): вычисление xi - середины
i-го отрезка и выбор его левой или правой половины.
{xi} x* при i .
Условие продолжения цикла: B-A> .
Метод деления отрезка пополам (дихотомии)
начало ввод A,B,
x:=(A+B)/2
- |
|
|
|
|
+ |
|
||
|
F(x)*F(B) 0 |
|
||||||
|
|
|
|
|||||
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
B:=x |
|
|
|
|
|
A:=x |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B-A<
+
вывод x
конец
Алгоритм для идеального случая: на [A,B] ровно один корень.
Более надежный алгоритм учитывает ограничение на число итераций: если число итераций больше некоторого предельного значения, то цикл завершается с выводом сообщения о некорректной постановке задачи.