2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Локализация нулей функции
Сообщение29.09.2019, 22:16 
Придумал идею как локализовать корни уравнения, которая должна работать для некоторых функций
Пусть есть некоторая функция $f(x)$ (что-то подобное этому):
Изображение
Ее нужно "сигмоидировать". Например, по формуле:
$s(x)=\frac{f(x)}{\sqrt{f(x)^2+1}}$
Тогда график $s(x)$ уже будет выглядеть примерно так:
Изображение
не вылезая за значения (-1; 1)
тогда для любого интервала из области определения можно посчитать количество корней на нем локализованных по формуле:
$n=(int)(\frac{ls-lx}{2})$
где $ls$ -длина кривой $s(x)$ на интервале $(x_1, x_2)$;
$lx$ - длина самого интервала $(x_1, x_2)$;

 
 
 
 Re: Локализация нулей функции
Сообщение29.09.2019, 22:46 
granit201z в сообщении #1418267 писал(а):
где $ls$ -длина кривой $s(x)$ на интервале $(x_1, x_2)$;
Примерно это называется "в Рязань через Париж". Стартовая идея, возможно, и неплоха (если отвлечься от погрешности вычислений при "сигмоидации"), но вот подсчет длины кривой - несколько более сложная задача, чем уединение корней само по себе.

 
 
 
 Re: Локализация нулей функции
Сообщение29.09.2019, 22:51 
Нет, нельзя. «Сигмоидируйте» так $f(x) = \sin x + 1 + \varepsilon$, $0 < \varepsilon\ll 1$; корней не будет ни одного, а $n$ можно будет получить какое угодно большое, увеличивая интервал (и даже условие $\varepsilon\ll 1$ лишь для наглядности).

Кроме того на практике считать длину кривой графика функции довольно сложно. А, с этим уже опоздал. :-)

-- Пн сен 30, 2019 00:56:08 --

И тут можно видеть, что любой способ «сигмоизации» потерпит провал для функций с особенным поведением; им достаточно много колебаться в промежутке значений, который занимает большую часть выходного промежутка после этого преобразования.

 
 
 
 Re: Локализация нулей функции
Сообщение29.09.2019, 23:54 
arseniiv в сообщении #1418276 писал(а):
Нет, нельзя. «Сигмоидируйте» так $f(x) = \sin x + 1 + \varepsilon$, $0 < \varepsilon\ll 1$; корней не будет ни одного, а $n$ можно будет получить какое угодно большое, увеличивая интервал (и даже условие $\varepsilon\ll 1$ лишь для наглядности).


Да, я знаю. Я примерно с такой задачи (естественно пока что не решив ее) и пришел к этой идее.
Где-то слышал, что вычисление натурального числа на "простоту" - сложновычислимая задача. Задумался и придумал, что для натурального числа $A$ в случае, если есть целочисленные делитель и частное должно выполняться условие:
$\sin^2(\pi\cdot x)+\sin^2(\pi\cdot\frac{A}{x})=0$
Нарисовал график, а там и получается какая-то "бешеная гармошка", которая судя по всему - неограниченно приближается к 0 в своем бесконечном чередовании убывания и возрастания. Но все-таки на интересующем интервале $(1, A)$ - говоря о "ложных устремлениях" к 0 она ограниченно (конечное число раз и на конечно (а не бесконечно) малую $\varepsilon$) приближается к нулю. Поэтому есть надежда смасштабировав по Oy:
$A\cdot \sin^2(\pi\cdot x)+A\cdot \sin^2(\pi\cdot\frac{A}{x})=0$
а уж только после этого "отсигмоидировать" и в итоге получить желаемый результат. Правда не уверен, что будет хоть какой-нибудь выигрыш в сторону уменьшения сложновычислимости

-- 30.09.2019, 00:03 --

Pphantom в сообщении #1418273 писал(а):
granit201z в сообщении #1418267 писал(а):
где $ls$ -длина кривой $s(x)$ на интервале $(x_1, x_2)$;
Примерно это называется "в Рязань через Париж". Стартовая идея, возможно, и неплоха (если отвлечься от погрешности вычислений при "сигмоидации"), но вот подсчет длины кривой - несколько более сложная задача, чем уединение корней само по себе.


если честно, то я никогда этим не занимался (не искал длину кривой), но слышал, что это делается через интегрирование и теорему Пифагора

-- 30.09.2019, 00:21 --

arseniiv в сообщении #1418276 писал(а):
им достаточно много колебаться в промежутке значений

да. вот сейчас Вас понял. Вы имеете ввиду, что несмотря на то, что вся эта штука будет лежать возле единицы и ни разу не устремившись к нулю - за счет огромного множества микроколебаний наберет длину гораздо большую, чем длина интервала?

 
 
 
 Re: Локализация нулей функции
Сообщение30.09.2019, 10:59 
Но наверное для некоторых задач это не непреодолимая проблема. Конкретно для функции "поиска простоты числа" можно эту функцию умножить на число (например само A), отсигмоидировать. Снова умножить на A. опять отсигмоидировать и т.д. Каждый раз график будет получаться все глаже и глаже, все ближе и ближе к линии y=1. Иногда от него будут отходить пипки к линии y=0 (в случае если имеются целочисленные делитель и частное). Т.е. получится некоторая последовательность с известной формулой длины кривой, элементы которой, будут значением длины кривой на интервале (1, A) для каждой i-ой итерации сигмоидирования. При стремлении количества этих элементов к бесконечности пределом этой последовательности будет некоторое число. Предположительно для простого числа A этот предел будет A+2 (учитывая две полупипки возле 1 и A, т.к. убывающая полупипка возле 1 и возрастающая возле A не входят в искомый интервал)

 
 
 
 Re: Локализация нулей функции
Сообщение30.09.2019, 12:04 
granit201z
Тут вся проблема в том, что интегралы от подобных выражений просто так не посчитаешь (или долго или нельзя). А длина дуги считается через интеграл. Года два назад мне тоже пришла подобная идея разложения числа на простые. Но длину дуги я сразу выкинул из головы - ее считать сложнее чем просто интеграл, поэтому задача была сведена к вычислению интеграла или суммы. Сначала я пытался искать решение через ряды и формулу Эйлера-Маклорена, но ряды сходились очень долго, а формула ЭМ в нужных точках вообще начинает расходиться. В итоге остались только варианты на основе интеграла, который непонятно было как считать.
Тогда я спросил у людей более знающих тут на форуме (topic129588.html) и уважаемый mihiv научил меня как можно считать подобного вида интегралы. Поняв принцип, мне удалось посчитать интегралы других похожих функционалов с использованием тригонометрических функций (всего варинтов было около 5 штук, м.б. даже больше).
В итоге, всего этого все равно оказалось недостаточно, т.к. помимо корня, рассматриваемые функционалы содержали в себе значения, очень похожие на корень (различие для больших $A$ могло быть $10^{-100}$ и меньше). И таких значений всегда очень много, они мешаются и не дают выделить корень. Отделить их от корня можно только если "усилить функционал" - возвести в большую степень, разделить на большее число, взять модуль и т.п. Но при таком усилении либо непозволительно увеличивается количество арифметических операций при вычислении результата, либо принцип подхода mihiv невозможно становится применить - т.к. его идея основывается на идее интегрирования по частям, а интегрирование по частям не всегда работает - например, если функция имеет особые точки.

 
 
 
 Re: Локализация нулей функции
Сообщение30.09.2019, 19:57 
granit201z в сообщении #1418287 писал(а):
Вы имеете ввиду, что несмотря на то, что вся эта штука будет лежать возле единицы и ни разу не устремившись к нулю - за счет огромного множества микроколебаний наберет длину гораздо большую, чем длина интервала?
Притом не обязательно возле единицы. Можно будет всегда найти плохой случай, улезающий рано или поздно поближе к нулю. Хотя для конечных промежутков это можно отбросить, но мысли это навевает.

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 10:11 
granit201z в сообщении #1418312 писал(а):
...можно эту функцию умножить на число (например само A), отсигмоидировать. Снова умножить на A. опять отсигмоидировать и т.д. Каждый раз график будет получаться все глаже и глаже, все ближе и ближе к линии y=1. Иногда от него будут отходить пипки к линии y=0 (в случае если имеются целочисленные делитель и частное)...


Нет. Не так. Пришла в голову новая гипотеза, которая должна упростить формулу поиска длины. Имеем кривую $f(x)$, для которой хотим вычислить количество корней на некотором интервале. Эта кривая способна породить бесконечную последовательность сигмоидированных себя с общей формулой: $(sf(x))_i=\frac{n\cdot f(x)}{\sqrt{(n\cdot f(x))^2 +1}}$, где $n$-натуральное число до бесконечности. ->>

Тут смысл увеличения n - в том, что с каждым большим n исходная функция все сильнее и сильнее "утягивается" (вверх или вниз) от оси абсцисс (если, конечно она не 0 в рассматриваемой точке), а следовательно все ближе и ближе к $y=1$ или $y=-1$ "падает" после сигмоидации, и в пределе мы таки получим кривую (при условии, что исходная кривая была конечной длины на интервале), по форме близкую к "табуретке", которая позволит сделать вывод о количестве корней.

->> А эта последовательность, в свою очередь должна породить последовательность длин этих $(sf(x))_i$ на рассматриваемом интервале. Получив предел последовательности длин можно однозначно определить количество корней на интервале.
По сравнению с предыдущими думками теперь поиск длины каждой из этих кривых - однотипная задача, поскольку формула каждой последующей кривой не усложняется, а только в ней меняется множитель $n$.
Но и не смотря на это - я, из-за того что пока еще очень дубовый в интегрировании, не могу вывести общую формулу длинны кривой вида: $sf(x)=\frac{n\cdot f(x)}{\sqrt{(n\cdot f(x))^2 +1}}$. Поэтому прошу вашей помощи.
Сейчас же, что мне известно (как мне кажется это может быть полезным в решении этой задачи) - это то, что данная сигмоида хорошо параметризуется параметром $t$, то есть:
$\left\{
\begin{array}{rcl}
 &n\cdot f(x)=&\tg t \\
 &\frac{n\cdot f(x)}{\sqrt{(n\cdot f(x))^2 +1}}=&\sin t \\
\end{array}
\right.$

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 10:34 
Аватара пользователя
Все это очень напоминает известный анекдот про Горбачева и куриные фермы. Для тех, кто его не знает - в оффтопе сам анекдот.

(Оффтоп)

Встречаются в одном из коридоров Кремля Горбачёв и Рыжков. Горбачёв интересуется: — Ну как у нас дела? Как хозяйство? — Михаил Сергеевич, вы знаете, курицы дохнут! — Серьёзно? Где? — Да во всех колхозах. Буквально по всей стране. — Николай Иванович, есть решение у этой беды! Надо изготовить небольшие квадратные дощечки и прикрепить их к каждой куриной клетке. Рыжков, удивлённый и ничего не понимающий, ушёл к себе в кабинет. Проходит пара-тройка дней, они снова встречаются. Горбачёв ему: — Ну, Коля, как дела? — Михаил Сергеевич, курицы продолжают дохнуть. — Есть решение! В центре у всех квадратиков надо нарисовать по красному кружку. Опять Рыжков ничего не понял. Ну и отправился дальше работать. Ещё через пару дней Горбачёв его встречает: — Ну как там дела? — Михаил Сергеевич, уже почти все курицы сдохли! — Николай, есть решение! В центре каждого красного кружка надо нарисовать маленький жёлтый треугольничек. Рыжков уже в полном недоумении. Ушёл, схватившись за голову. Ещё через два дня они встречаются: — Коля, ну как? — К сожалению, Михаил Сергеевич, все курицы передохли. — Жаль. А у меня ещё было столько замечательный идей!

Кому нужны "гениальные идеи", если их автор не может довести их до работающего алгоритма и показать работоспособность своих "гениальных идей"? А когда автору явно показывают в каких местах его "гениальная идея" не работает, тот не сдается и пробует сколотить "артель напрасный труд", которая будет проверять бесперспективность его идеи. Кто желает напрасно поработать? "Творцов-то у нас полно, а вот криэтеров, действительно, не хватает", :D

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 12:14 
Brukvalub в сообщении #1419342 писал(а):
А когда автору явно показывают в каких местах его "гениальная идея" не работает, тот не сдается и пробует сколотить "артель напрасный труд", которая будет проверять бесперспективность его идеи.


Мне тоже навеяло известный анекдот про мужиков и пилораму по дереву. Для тех, кто его не знает - в оффтопе сам анекдот.

(Оффтоп)

Купили мужики пилораму по дереву. Решили ее проверить в действии. Засунули в нее доску:
-Вжик! - сказала пилорама, с легкостью распилив доску.
-Оо! - сказали мужики и засунули брус.
-Вжжик! - сказала пилорама.
-Ооо! - сказали мужики и засунули бревно.
-Вжжжик! - сказала пилорама.
-Оооо! - сказали мужики и засунули арматурину.
-Грррр! - сказала пилорама, обломала все зубья и заклинила.
-Аааа! - ухмыльнулись мужики.

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 12:18 
Аватара пользователя
granit201z, да ладно вам. На самом деле это анекдот про сибирских лесорубов и японскую бензопилу.

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 15:11 
granit201z
Ну вы ведь серьёзно похоже не сравниваете то, что у вас выходит, с известными методами, в работе. Насколько просто реализовать, какую точность можно получить за сколько потраченных ресурсов и т. п..

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 15:32 
arseniiv в сообщении #1419368 писал(а):
Ну вы ведь серьёзно похоже не сравниваете то, что у вас выходит, с известными методами, в работе.

дело в том, что сравнивать пока еще нечего. я не получил еще формулу, выражающую длину i-ой кривой. А без нее - последовательность, предел которой нужно найти - не задана формулой

 
 
 
 Re: Локализация нулей функции
Сообщение06.10.2019, 23:53 
Наверное, я еще на шаг ближе к искомой длине кривой:
$sf(x)=\dfrac{n\cdot f(x)}{\sqrt{(n\cdot f(x))^2 +1}}$
По учебнику ее длина:
$$\int\limits_{x_1}^{x_2}(\sqrt{(sf'(x))^2 + 1})dx$$
Производная же:
$sf'(x)=\dfrac{d(sf(x))}{dx}$
В свою очередь:
$d(sf(x))=d(\dfrac{n\cdot f(x)}{\sqrt{(n\cdot f(x))^2 +1}})=\dfrac{\sqrt{(n\cdot f(x))^2 +1}\cdot d(n\cdot f(x)) - d(\sqrt{(n\cdot f(x))^2 +1})\cdot (n\cdot f(x))}{(n\cdot f(x))^2 +1}=

\dfrac{n\cdot [\sqrt{(n\cdot f(x))^2 +1}\cdot d(f(x)) - 
\dfrac{f(x)}{2\cdot \sqrt{(n\cdot f(x))^2 +1}}\cdot
d((n\cdot f(x))^2 +1)]}
{(n\cdot f(x))^2 +1}=
$

$\dfrac{n\cdot [\sqrt{(n\cdot f(x))^2 +1} - \dfrac{n^2\cdot(f(x))^2}{\sqrt{(n\cdot f(x))^2 +1}}]
}{(n\cdot f(x))^2 +1}\cdot d(f(x))=$

$
\sqrt{(n^4\cdot f(x))^2 +n^2}\cdot d(f(x))$

то есть:

$$\int\limits_{x_1}^{x_2}(\sqrt{(n^4\cdot (f(x))^2 +n^2)\cdot(f'(x))^2 + 1})dx$$

 
 
 
 Re: Локализация нулей функции
Сообщение07.10.2019, 00:04 
Аватара пользователя
Производную неправильно считаете, и то, что получилось, неправильно подставляете в формулу.

 
 
 [ Сообщений: 17 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group