📝 Как бы вы решали второе уравнение, если бы у вас под рукой не было бы компьютера ?
#задача #математика #алгоритмы #численные_методы #math #physics #science
💡 Physics.Math.Code // @physics_lib
Можно функцию через ряд тейлора расписать и найти приближение к x-a чуть быстрее метода ньютона ( хотя почти одно и тоже) но зато каждую мега большую дробь считать не надо
Стандартный подход такой.
1. Сначала при помощи производной первого порядка исследуем количество корней. Чтобы повыделываться, можем второй производной показать выпуклость--впуклость, что необязательно.
2. Параллельно рисуем графичек. Чтобы красиво было.
3. Чтобы повыпендриваться и показать знание теории без практического смысла применяем W-функцию Ламберта.
4. Чтобы досчитать численно, пробуем 2^x загнать в натуральный или двоичный логарифм и подобрать решение.
5. Если решение не подбирается, как в данном случае, с применением биноминальной теоремы разлагаем 2^x в знакочередующийся ряд, от которого по теореме Ляйбница откусываем колбасу под заранее заданную точность до указанного знака. Я так понимаю, до аппроксимации 2^x полиномом 4-й степени будет избыточно достаточно. Находим единственный действительный нуль полинома как аппроксимацию.
6. Альтернативный вариант, для численного решения применяем метод Ньютона, начав с итерации x0 = 2 (или даже с x0=1, whatever).
Вроде бы, нигде не накосячил.
PS: действительных чисел не существует! Дорон Цейльбергер, Норман Уайлдбергер, Леопольд Кронекер, Александр Сергеевич Есенин-Вольпин, Оливер Нилл и Родерик Люмсден правы во всём!!!
В смысле? 2^x это (1+1)^x . Далее из биноминальной теоремы получаем:
2^x = 1 + x - (x(1-x))/2! + (x(1-x)(2-x))/3! - (x(1-x)(2-x)(3-x))/4! +...
Для знакочередующихся рядов есть теорема Ляйбница, указывающая, где эту колбасу имеет смысл откусывать — погрешность вычисления под остаток ряда.
Для цепных дробей и "незнакочередующихся рядов" аналогичной теоремы нет и там "откусывать колбасу" сложнее: то есть, тоже можно, разумеется, но для оценки "где откусывать" инструменты более сложные и вычурные. Поэтому всякую непонятную трансцендентную штуку проще сводить к знакочередующемуся ряду, и дальше резать именно его.
А если ещё и сразу понятно, к какому именно знакочередующемуся ряду, то вообще сказка. Здесь понятно сразу из биноминальной теоремы, которую Дональд Кнут совершенно справедливо высоко ценит.
суровый ряд! учитывая, что асимптотика его члена (n-x)!/n!, то есть хуже чем 1/n^2, даже для 12 знаков после запятой придётся взять миллионы членов. после чего искать корень многочлена миллионной степени.
до чего? до того, что натуральный логарифм это площадь под гиперболой? или до метода Эйлера?
второе чуть сложней. в качестве примера возьмём тот же ряд для
ln(1 + 1) = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
если мы обрываем этот ряд на двух членах, то получаем 0.5, что так себе приближение для 0.693. а вот если добавим к результату полуследующий получлен, то есть 0.5/2.5 = 0.2, то получим 0.5 + 0.2 = 0.7, что уже гораздо лучше.
но так мы улучшаем сходимость с 1/n до 1/n^3, то есть на два порядка по n. есть техника, изобретённая Эйлером, которая улучшает сходимость таких медленных знакопеременных рядов на произвольный порядок по n.
основан на монотонности производных формулы для (модуля) члена ряда.
последний взятый член 1/2, следующий член 1/3, полуследующий член 1/2.5, нам надо добавить его половину, то есть 0.5/2.5.
в данном случае - монотонность второй производной (от 1/n).
вы могли бы добавлять просто половину следующего члена, тогда сходимость тоже улучшилась бы, но только на один порядок.
чтобы понять, при чёт тут производные, положим член ряда равным (-1)^n * f(n).
обозначте, как обычно, через s(n) частичную сумму членов ряда до n включительно, через p(n) сумму с предлагаемой поправкой, после чего посмотрите, чему равно p(n+1) - p(n). при монотонности производной получите ряд Лейбница уже с другими членами, гораздо меньшими.
впрочем, для ln(2) есть и попроще ряд, сразу сходящийся довольно быстро:
ln(2) = ln((1.5+0.5)/(1.5-0.5)) = ln((1+1/3)/(1-1/3)) =
2*(1/3 + 1/3*1/3^3 + 1/5*1/3^5 + ...)
сходится не хуже геометрической прогрессии со знаменателем 1/9, примерно по члену на цифру.
В данном случае нам повезло, что оно тыкается биноминальной теоремой. Часто, когда имеем трансцедентное нечто, задача сведения вот этого вот всего к знакочередующемуся ряду не вполне тривиальна. И приходится сводить к какому-то другому ряду или цепной дроби, где уже такой удобной теоремы Ляйбница нет. Нам тут сразу же дважды повезло с применимостью биноминальной теоремы, во-первых, и теоремы Ляйбница, во-вторых. Сплошная халява.
Но, повторюсь. можно без выпендрёжа аппроксимировать методом Ньютона. Он тут тоже хорошо срабатывает.
И обязательно графичек рисуем.
как вы без компухтера применяете W-функцию?
в какой логарифм вы собираетесь загнать 2^x ?
какой нафиг знакочередующийся ряд? ряд у экспоненты знакопостоянный, а в его членах живёт натуральный логарифм двух, как планируете его считать?
как будем искать корень полинома 4 степени?
6 пункт ещё туда-сюда, но и в Ньютоне логарифм двух, его придётся считать, а заодно (для следующих шагов) считать 2^x для дробных иксов, как это сделать? как получить хотя бы 1.71562, не говоря уже о 1.71562073327558616938 ?
Я же написал, что не буду дорешивать Ламберта, а просто нарисую, что знаю такого зверя вот и всё.
В случае любой показательной функции я сначала пробую натуральный, десятичный, двоичный логарифм или логарифм по основанию и посмотреть, подбирается ли решение. Здесь оно в лоб не подбирается и логарифмирование нам не помогло. Значит, следующий этап — посмотреть, разлагается ли показательная функция в знакочередуюшийся ряд. Прекрасно разлагается. Если под заданные пределы допусков достаточно аппроксимации полиномом 4-й степени, то юзаем его. Если недостаточно, то... Ну, значит, смотрим дальше и отрезаем колбаску по теореме Ляйбница. Если там на выходе выйдет уравнение пятой степени и выше, решаем его численно методом Ньютона и итерационно-графически методом Лилля и всё это без калькулятора. Один действительный корень и будет нашим решением.
метод Ньютона хорош, но в нём шаг (2^x+x-5)/(2^x*ln(2)+1), как эту красоту вычислять со всё возрастающей точностью даже для x = 1.7? а для x = 1.71562?
В решении задачи надо продемонстрировать не только ответ, но знание теории (Ламберт) и ход мысли (попробовали логариф и подбор — не получилось, пробуем численно).
PPhysics.Math.Code@math_code · группа · Образование