Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа 5
Решение нелинейных уравнений методом хорд .
На отрезке [a,b]
содержится ровно один корень уравнения f(x)=0;
f(x)- непрерывна и монотонна.
f′(x), f′′(x) непрерывны, монотонны и знакопостоянны.
Найдите отрезок [a,b] для своей функции (если он не найден), построив график.
Метод секущих
Пусть ξ точное значение корня (неизвестное), т.е. f(ξ)=0.
Ищем приближенное решение с точностью ε0 , т.е. такое х0 , что |x0-ξ│<ε0.
Из точек a и b выберем ту, в которой f и f′′ имеют одинаковые знаки (f*f′′>0) и присвоим ее значение переменной Х, а значение другой переменной х0.
Через f(X) и f(x0) проведем хорду, получим точку х1.
х1 = х0 f(x0)*(x0 - X) / (f(x0) f(X))
Переменной х0 присвоим значение х1,
Х не переприсваиваем, проводим новую хорду,
находим новое х1 и так приближаемся к корню ξ.
Задача решена, когда получено такое х0, что
│x0-ξ│<ε0;
но ξ неизвестно, поэтому используем
условие │х1-х0│<
где m = min│ f′(x)│
M = max│f′(x)│.
Видно, что скорость сходимости этого метода
ниже, чем у метода Ньютона.
Программа оформляется в виде файл-функции.
Выходные аргументы это значение корня x0 и число итераций k.
Входные аргументы это 1) функции f, f′, f′′;
2) границы отрезка a и b;
точность ε0, с которой ищем корень x0;
Этапы написания программы:
Выбрать X и начальное приближение х0 из a и b
Т.к. f′′ - знакопостоянна, а f(a) и f(b) имеют разные знаки, то либо f(a) либо f(b) имеет такой же знак как f′′.
Если f(a)* f′′(a)>0, выбираем Х=a, х0=b, в противном случае - наоборот.
Найти m и M .
Воспользуемся тем, что f′ - монотонна на отрезке [a,b] , => на одном конце отрезка находится наименьшее, а на другом наибольшее значение.
Если │ f′(a)│ >│ f′(b)│, то M=a ,m=b, в противном случае наоборот.
Вычислить ε=;
Приготовить счетчик, для подсчета числа итераций: k=0.
Начать цикл с предусловием d> ε; (перед началом цикла переменной d присвоить значение 1, чтобы войти в цикл первый раз: d=1):
Нарисуйте блок схему.
Примечание
Не забудьте - для того чтобы использовать функции f′ f′, f′′ в качестве входных аргументов, надо задать inline функций.
x1
x1
0
ξ
X
a
x0
b