2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Численно найти все корни уравнения
Сообщение19.02.2018, 10:35 
Аватара пользователя


12/03/11
688
Речь идет про решение тригонометрического уравнения
$$
A \cos(kx) \sin(x) + \sin(kx) \cos(x) = 0.
$$
Нужно найти все (например, первые 1000) его корни (положительные) с нужной точностью.
Если нарисовать график, задача тривиальная.
Но меня интересует как на практике решают такие задачи (вплоть до имплеметированной функции в пакете) :roll:

 Профиль  
                  
 
 Re: Численно найти все корни уравнения
Сообщение19.02.2018, 11:48 
Заслуженный участник


09/05/12
25179
Ну, например, так:
1) зная $k$, выделяем один период (возможно, приближенный - при нецелых $k$ он может оказаться достаточно большим, правда, искать все корни в таком редко когда бывает надо);
2) на нем уединяем корни чем-нибудь вроде дихотомии;
3) затем находим корни чем-нибудь вроде метода Ньютона.

 Профиль  
                  
 
 Re: Численно найти все корни уравнения
Сообщение19.02.2018, 11:58 
Аватара пользователя


12/03/11
688
Цитата:
1) зная $k$, выделяем один период (возможно, приближенный - при нецелых $k$ он может оказаться достаточно большим, правда, искать все корни в таком редко когда бывает надо);

Да, k - нецелое число взятое из эксперимента скажем 4.291 плюс/минус эпсилон :-)

 Профиль  
                  
 
 Re: Численно найти все корни уравнения
Сообщение19.02.2018, 18:10 
Заслуженный участник
Аватара пользователя


11/03/08
9599
Москва
Задача распадается на две подзадачи:
- как найти тысячу корней;
- как найти корни с точностью до тысячной.
Вторая проще - задача прямо создана для Ньютона. А если кто больше любит дихотомию или regula falsi - тоже пойдёт! Найти приближение и уточнять.
Со первой - для данных условий, k несколько единиц, я бы разделил уравнение на $\cos kx\cos x$ и получил бы $\tg kx=a\tg x$. Затем в качестве начальных приближений брал бы точки, в которых $\tg kx=0$ (возможно, проверяя, не попали ли на точку разрыва правой части и слегка шевеля значение. В общем случае, когда k невелико, наверно, тупо бы шёл по x с малым шагом, ища перемены знака в $\tg kx-a\tg x$, можно немного сэкономить вычисления, не используя тригонометрические функции, а воспользовавшись рекуррентными соотношениями для синуса и косинуса.

 Профиль  
                  
 
 Re: Численно найти все корни уравнения
Сообщение19.02.2018, 18:46 


04/07/15
137
DLL в сообщении #1293199 писал(а):
Но меня интересует как на практике решают такие задачи (вплоть до имплеметированной функции в пакете) :roll:


Присвойте конкретные значения А,k и воспользуйтесь стандартными функциями солидного матпакета. Начиная от указанной точки на оси oX, Вам найдут все решения, на какие хватит ресурсов. Точно знаю, такая есть у Maple. Спросите у пользователей, а пока конкретно не скажу.
(Можно не задавать А и k, тогда решений будет ещё больше.)

 Профиль  
                  
 
 Re: Численно найти все корни уравнения
Сообщение19.02.2018, 19:07 
Заслуженный участник


09/05/12
25179
DLL в сообщении #1293220 писал(а):
Да, k - нецелое число взятое из эксперимента скажем 4.291 плюс/минус эпсилон
При такой точности думать вообще не надо. :-) Можно довольно легко показать, что погрешность корня в такой ситуации тоже будет где-то в районе третьего знака после запятой (при $A \sim 1$), а тогда можно просто тупо просчитать значения левой части на сетке с соответствующим шагом и все.

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group