Вычисление реального корня из функции

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Вычисление реального корня из функции

Сообщение FaKk2 » 19.11.2004 (Пт) 8:22

По методу упомянутого товарища Ньютона, написал простенькую программку, которая выполняет часть рутинной работы.

Теория:
Если функция f непрерывна на открытом интервале (a,b), и имеет натуральный ноль на этом интервале, то выполняется следующая формула:

Xn+1= Xn - f(Xn)/f'(Xn)

Где Xn+1 число приблизительно равное искомому корню.
Xn предыдущее такое число.
f(Xn) - функция с подстановленным Xn.
f'(Xn) - производная функции f, с подстановленным Xn.

Для получения результата с требуемой точностью требуется несколько раз повторить подстановку.

Практика:
Например мы хотим найти корень из числа 7 с точностью до 4 знака после запятой.
1. Составление функции: Так как нам нужно значение при котором f(x)=0 берем f(x)=x^2 - 7. Если вместо х подставим корень из 7 как раз получим 0.

2. Нужно выбрать интервал: Знаем что 7 между 4 и 9 корни которых соответственно 2, 3. Т.е. корень из 7 будет гдето в этом интервале. (2,3)

3. Нужно удостоверится, что в этом интервале функция обнуляется:
f(2)=-3
f(3)=2
Между крайними точками знак меняется, значит там гдето и ноль проскакивает :)

4. Теперь надо выбрать точку в этом интервале от которой будет идти. Так как интервал мал относительно берем "нейтральную" точку Xn=2.5
Побольшому счету неважно что выберем, чем дальше от ответа тем больше повторений придется сделать.

5. Находим производную от f. К сожалению этот блок я ещё не написал, поэтому ручками. f'(x)=2*x

Вписываем все данные с поля проги и жмем Find.
Смотрим результат: 2.64575112521511

Берем калькулятор: 2.645751311

При требуемой точности до 4 знака результат вполне удовлетворительный :)
Последний раз редактировалось FaKk2 19.11.2004 (Пт) 8:30, всего редактировалось 3 раз(а).
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 19.11.2004 (Пт) 8:23

А вот и сама прога
У вас нет доступа для просмотра вложений в этом сообщении.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.11.2004 (Пт) 8:52

5. Этот блок написал я :)

http://bbs.vbstreets.ru/viewtopic.php?p=30749#30749
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 19.11.2004 (Пт) 8:55

Ню-ню :)
А я уже кинулся было...
С твоего разрешения добавлю в код.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 65

    TopList