0 / 0 / 0
Регистрация: 20.04.2022
Сообщений: 2
|
||||||
1 | ||||||
Метод деления отрезка пополам22.04.2022, 19:54. Показов 484. Ответов 4
Метки нет (Все метки)
Добрый день. На одной из лаб надо найти корни двух уравнений методом деления отрезка пополам. Все сделал, считает правильно, корни ищет, наблюдаю непонятный эффект - для двух разных уравнений число итераций одинаково. Другим методом (простые итерации) число итераций разное. В чем ошибка?
PS Классы, потоки и конвейеры использовать было нельзя - ограничение препа для 1 курса. Только функциональное программирование.
0
|
22.04.2022, 19:54 | |
Ответы с готовыми решениями:
4
Метод деления отрезка пополам Метод деления отрезка пополам Метод «деления отрезка пополам» Метод деления отрезка пополам для решения нелинейных уравнений (метод дихотомии) метод деления отрезка пополам и метод итерации |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
|
|
22.04.2022, 20:20 | 2 |
А почему оно должно быть одинаковое?
Это просто случайное совпадение в 1 случае.
0
|
0 / 0 / 0
Регистрация: 20.04.2022
Сообщений: 2
|
||||||
22.04.2022, 20:38 [ТС] | 3 | |||||
Нет, проверено на разных отрезках и для разной точности. Даже функции(уравнения) менял. Строго одинаковое число итераций для 2х разных функций на одном отрезке для данного метода. На том же отрезке для второго метода (простых итераций) число итераций разное.
0
|
48 / 37 / 14
Регистрация: 23.12.2015
Сообщений: 188
|
|
22.04.2022, 23:11 | 4 |
Pavel_Soklakov,
quote="Pavel_Soklakov;16192323"]Строго одинаковое число итераций для 2х разных функций на одном отрезке для данного метода.[/quote] Эм, а не все ли Верно? Что такое метод деления отрезка. 1. Пусть уже есть отрезок, на котором корень заведомо есть (с одной стороны функция минус, с другой плюс). 2. Вычисляем значение функции в центре отрезка, ну и по результату сокращаем отрезок в два раза. 3. Благодаря "страшной силе экспоненты" за лишь десятки (ну максимум сотни если уж очень точно искать. и то вряд ли надо) итераций находим с высокой точностью. Ну и ты "нужную точность" считаешь видимо тут while (fabs(b-a)>=eps && iter <=2000); Т.е. когда отрезок станет достаточно коротким. Ну а так как он каждую итерацию сокращается в два раза, то и получается тот эффект, который тебя удивляет. *** Ну а "простые итерации" это я не помнил наизусть, но посмотрел в вики Идея метода простой итерации состоит в том, чтобы уравнение f ( x ) = 0 привести к эквивалентному уравнению x = φ ( x ) так, чтобы отображение φ ( x ) было сжимающим. Если это удаётся, то последовательность итераций x i + 1 = φ ( x i ) сходится. Разумеется знаю про такой метод. Он да, понятно принципиально завязано на конкретную функцию, насколько быстро сойдется. Добавлено через 5 минут zss, Т.е. я думаю, что автор темы все верно посчитал, и из свойств метода деления отрезка так и должно быть. Но не настаиваю безапелляционно. Вопрос как к модератору. Может перенести тему в https://www.cyberforum.ru/numerical-methods/ Так как такие общие свойства методов деления отрезка и метода простых итераций - это вычислительная математика, а не плюсы?
0
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,066
|
|
23.04.2022, 00:06 | 5 |
Что ж тут непонятного? Один и тот же отрезок делится пополам, пока остаток не станет меньше некоего эпсилон. От решаемого уравнения этот процесс вообще нигде и никак не зависит. То есть не только не "непонятно", а всем, включая вас, совершенно очевидно (!), что количество итераций для одного и того же отрезка и одного и того же эпсилон всегда будет одно и то же.
Зачем вы выдумываете сказки про про какой-то "непонятный эффект"? В методе простых итерацией способ деления отрезка у вас зависит от решаемого уравнения, поэтому там число итераций будет разным для разных уравнений. Все очевидно. Распространенные ошибки Зачем "выходить из main", когда функция и так заканчивается? Почему эта функция возвращает double ???В чем назначение возвращаемых значений этих функций? Термин "функциональное программирование" не имеет ничего общего с написанием С++ программ только из функций.
1
|
23.04.2022, 00:06 | |
23.04.2022, 00:06 | |
Помогаю со студенческими работами здесь
5
Визуальное программирование. Метод деления отрезка пополам Минимум Функции (метод деления отрезка пополам) 2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам" Ошибка в методе деления отрезка пополам Поиск экстремума методом деления отрезка пополам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |