Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 13:49 
Не в сети
Начинающий
Зарегистрирован:
17 янв 2018, 13:20
Сообщений: 25
Cпасибо сказано: 8
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Нужно реализовать отделение и поиск корней в уравнении с одной переменной.
Я решил делать методом дихотомии:

Код:
double dichotomy(double a, double b, const double eps)
{
    double c, d, fc;
    unsigned n = 0; // кол-во итераций

    do {
        n++;
        c = (a + b) / 2;
        d = (b - a) / 2;  // погрешность/точность
        fc = f(c);

        if (f(a) * fc <= 0) {
            b = c;
        } else {
            a = c;
        }

        out.write("%.2d | %lf | %lf | %lf\n", n, c, fc, d); // printf
    } while (fabs(fc) > eps);

    return c;
}


По условию задания нужно найти:
[*] Корень - с этим проблем нет
[*] Точность - здесь не уверен, правильно ли я это делаю [math]d = (b - a) \,\colon 2[/math] ?
[*] Параметр сходимости[math]\alpha = \frac{\begin{vmatrix}x_{n+1} - x_n\end{vmatrix}}{\begin{vmatrix}x_n - x_{n-1}\end{vmatrix}}[/math] - Что это такое и как в моём случае его получить? Что подставлять в качестве [math]x[/math]?

В математике не силен, поэтому если можно по подробнее с примерами :)

[math][/math]

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 14:18 
Не в сети
Оракул
Зарегистрирован:
14 дек 2017, 17:48
Сообщений: 870
Cпасибо сказано: 33
Спасибо получено:
206 раз в 187 сообщениях
Очков репутации: 31

Добавить очки репутацииУменьшить очки репутации
Я как бы без понятия (в программировании не селен), но по математике тут все очевидно:
[math]x_n, x_{n+1}[/math] это границы отрезка который содержит корень в n-ом шаге, а вы каждый раз уменьшаете интервал вдвое, то есть от [a; b] переходите к [a, c] или [c, b], где с=(a+b)/2. Значит [math]\alpha=0.5[/math]
Точность: [math]\frac{b-a}{2^n}[/math], то есть d, хотя я бы на вашем месте написал бы не while (fabs(fc) > eps); а while (b-a)>eps; и тогда точность eps. Точность, это насколько близок Ваш ответ к правильному то есть как хорошо Вы х нашли

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Slon "Спасибо" сказали:
neversleep
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 14:36 
Не в сети
Начинающий
Зарегистрирован:
17 янв 2018, 13:20
Сообщений: 25
Cпасибо сказано: 8
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Slon писал(а):
Я как бы без понятия (в программировании не селен), но по математике тут все очевидно:
[math]x_n, x_{n+1}[/math] это границы отрезка который содержит корень в n-ом шаге, а вы каждый раз уменьшаете интервал вдвое, то есть от [a; b] переходите к [a, c] или [c, b], где с=(a+b)/2. Значит [math]\alpha=0.5[/math]
Точность: [math]\frac{b-a}{2^n}[/math], то есть d, хотя я бы на вашем месте написал бы не while (fabs(fc) > eps); а while (b-a)>eps; и тогда точность eps. Точность, это насколько близок Ваш ответ к правильному то есть как хорошо Вы х нашли


Тогдя как я понимаю, параметр сходимости всегда 0.5. (я читал теорему, там что-то такое говорится, но т.к слаб в мат-ке, то сомневался)
А в остальном у меня всё верно? Или на каждой итерации нужно вычислять точность как `d = pow((b - a) / 2, n);` (возводим в n-ную степень) ?

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 14:41 
Не в сети
Оракул
Зарегистрирован:
14 дек 2017, 17:48
Сообщений: 870
Cпасибо сказано: 33
Спасибо получено:
206 раз в 187 сообщениях
Очков репутации: 31

Добавить очки репутацииУменьшить очки репутации
Нет считать один раз, просто последний d,
да при дихотомии всегда 1/2, а вот при некоторых алгоритмах поиска локального минимума там больше, а при поиске корня секущими меньше, при каких-то условиях, точно не помню

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Slon "Спасибо" сказали:
neversleep
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 15:02 
Не в сети
Начинающий
Зарегистрирован:
17 янв 2018, 13:20
Сообщений: 25
Cпасибо сказано: 8
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Осталось пара сомнений) У меня в итоге почти всегда точность нулевая выходит:

(немного переписал код, добавил pow((b - a) / 2, n))
▼ dichotomy
Код:
double dichotomy(double a, double b, const double eps)
{
    double c, d, fc;
    unsigned n = 0; // кол-во итераций

    do {
        n++;
        c = (a + b) / 2;
        d = pow((b - a) / 2, n);  // погрешность/точность
        fc = f(c);

        if (f(a) * fc <= 0) {
            b = c;
        } else {
            a = c;
        }

        out.write("%.2d | %lf | %lf | %lf\n", n, c, fc, d); // printf
    } while (fabs(fc) > eps);

    return c;
}

▼ результат
Код:
Поиск корня в интервале [-2.610000, -2.534100] с точностью 0.010000

№ | ξ | f(ξ) | Δ

01 | -2.572050 | -0.263113 | 0.037950
02 | -2.591025 | -0.145246 | 0.000360
03 | -2.600512 | -0.061445 | 0.000001
04 | -2.605256 | -0.013507 | 0.000000
05 | -2.607628 | 0.011945 | 0.000000
06 | -2.606442 | -0.000904 | 0.000000

Поиск корня в интервале [-2.534100, -2.458200] с точностью 0.010000

№ | ξ | f(ξ) | Δ                                                                                                                                                         

01 | -2.496150 | -0.052531 | 0.037950
02 | -2.477175 | 0.163027 | 0.000360
03 | -2.486662 | 0.047783 | 0.000001
04 | -2.491406 | -0.004281 | 0.000000

Поиск корня в интервале [-1.926900, -1.851000] с точностью 0.010000

№ | ξ | f(ξ) | Δ                                                                                                                                                         

01 | -1.888950 | 0.537353 | 0.037950
02 | -1.869975 | 0.168101 | 0.000360
03 | -1.860488 | 0.000606 | 0.000001




Это нормально? Собственно сама ф-ция: [math]3 * sin(8 * x) - 0.7 * x + 0.9[/math]

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 15:10 
Не в сети
Оракул
Зарегистрирован:
14 дек 2017, 17:48
Сообщений: 870
Cпасибо сказано: 33
Спасибо получено:
206 раз в 187 сообщениях
Очков репутации: 31

Добавить очки репутацииУменьшить очки репутации
Вот я и говорю, не fabs нужно оценивать, а длину интервала, по мне так 0.01 это как-то слабо
А заменять на pow не нужно было, все было нормально, я писал просто окончательный ответ в терминах начальных a, b и n

Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Slon "Спасибо" сказали:
neversleep
 Заголовок сообщения: Re: Отделения корней методом дихотомии и параметр сходимости
СообщениеДобавлено: 17 янв 2018, 15:24 
Не в сети
Начинающий
Зарегистрирован:
17 янв 2018, 13:20
Сообщений: 25
Cпасибо сказано: 8
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации
Slon писал(а):
Вот я и говорю, не fabs нужно оценивать, а длину интервала, по мне так 0.01 это как-то слабо
А заменять на pow не нужно было, все было нормально, я писал просто окончательный ответ в терминах начальных a, b и n

Благодарю.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему      Страница 1 из 1 [ Сообщений: 7 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Решить систему линейных уравнений методом квадратных корней

в форуме Линейная и Абстрактная алгебра

IlyaGorbunov

16

456

27 мар 2019, 12:54

Решение СЛАУ методом квадратных корней(разложение Холецкого)

в форуме Линейная и Абстрактная алгебра

sur-face

4

391

21 фев 2022, 14:43

Метод дихотомии

в форуме Maple

Ciber15

6

725

30 сен 2018, 17:41

Метод дихотомии

в форуме Численные методы

ilya2121

26

729

05 июн 2020, 15:41

Сумма арифметических корней , корней квадратного уравнения

в форуме Алгебра

TsaAst

24

355

25 июн 2022, 10:30

Определить радиус сходимости и область сходимости

в форуме Ряды

guerra

1

167

18 дек 2019, 21:27

Решить операторным методом и методом исключения

в форуме Дифференциальные и Интегральные уравнения

ioan

5

247

05 дек 2021, 23:33

Интегрирование методом Симпсона и методом прямоугольников

в форуме Численные методы

sfanter

0

447

08 апр 2017, 10:18

Параметр

в форуме Аналитическая геометрия и Векторная алгебра

[K]Fantom

3

254

13 янв 2017, 20:44

Параметр

в форуме Алгебра

kosov

5

418

10 фев 2016, 10:29


Часовой пояс: UTC + 3 часа [ Летнее время ]



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved