![]() |
Корень 3-й степени из отрицательного числа???
В "Справочнике по математике", И.Н.Бронштейн и К.А. Семендяев, стр.139, 8-я строка сверху:
корень 3-й степени из -4 = -1.5874 Обычный виндузовский калькулятор на ввод -4 x^y ( 1 / 3 ) выдаёт -1.587401051968.... НО!!!!! В Matlab 6 ввод (-8)^(1/3) выдаёт комплексное число: ans = 1.0000 + 1.7321i :mad: Во Флеш следующий скрипт ----------------------- a = Math.pow(-8 , 1/3); trace (a); ----------------------- в трейсе выдаёт NaN :mad: =========== Я точно знаю, что -2 х -2 х -2 = -8. Соответственно корень 3-й степени из -8 должен = -2. (Речь собсно о минусе в подкоренном числе) Вопрос: Какой проблем у Matlab 6 и Flash MX ? Или у меня ? |
Определись на каком множестве ты оперируешь. Если комплексные числа, то там три корня равномерно размазанные по окружности радиуса два, если действительные, то один отрицательный, а флэш прав на каком-ньть другом множестве...
|
Что значит, на каком множестве? Помоему я ясно описал конкретные числа.
Обьясни |
Помнится в стандартном школьном определении было мол, что общая степенная функция y=a^x имеет смысл только при a>0.
По ходу Flash пользуется им. :) Кстати проверил в MathCad'e, там верно все. |
Множество R - действительные числа. 0, 1, -1, пи, -пи, -корень из 3.... Стандартная числовая прямая от минус бесконечности до плюс бесконечности. Операции заданные на этом ножестве подразумевают аргумент из R и принимают значения в R.
Множество C - комплексные числа, предстваленные парами действительных чисел, первое из которых называю действительной частью а второе мнимою. Аналогия - плоскость (пары действительныз x, y). Очевидно флэш не знаком с новыми математическими теориями и поэтому не способен взять корень третьей степени из -8... |
Существует 3 корня 3 степени из -8. Калькулятор честно называет один из них, -2. И вообще говоря, пока мы не говорим про мнимые числа, а ограничиваемся вещественными, это будет единственным корнем. Однако, так как степень третья, то и корней олжно быть три. Поэтому МатЛаб честно признается в том, что ему известен еще один корень, единица плюс корень из трех на мнимую единицу, то есть 1+1.732i.
А вот Флэш, видимо, единственный, кто знает о существовании третьего корня, единица минус корень из трех на мнимую единицу (1-1.732i) - но какие-то внутренние религиозные убеждения не позваоляют ему поверить в существование мнимых чисел, отчего он и заявляет, что это вовсе и не число (Not a Number)... |
А это и не число :)))))
|
Дело в том, что в математике (еще до флеша, интернета и компов) договорились на следующем (хотя в некоторых учебниках могут и по-другому объяснить):
1. Существует функция Корня N-ой степени, которая: 1.1. Определена на [0;+infinity) для четного N 1.2. Определена на (-infinity;+infinity) для нечетного N 2. Существует показательная функция X^A, которая: 2.1. Определена на (0;1)+(1;+infinity). Т.е. на множестве положительных числах без единицы (споры до сих пор по поводу единицы - если логарфим считать обратной к показательной функцией, то БЕЗ единицы - тогда возможно беспроблемное преобразование туда-обратно, если логарифм - самостоятельная ф-ция, то можно договориться и на включении единицы) Судя по всему, во Флэш Math.pow - показательная функция и не понимает отрицательных значений. Функция Корня во Флеше одна - Math.sqrt() - квадратного корня. зы: корень и степенная функция - разные функции. Те, кто не верит, поверьте :) |
не парься и считай через экспоненту
Код:
xPow = function (x,y) |
2 DeliMIter
> Очевидно флэш не знаком с новыми математическими теориями и поэтому не способен взять корень третьей степени из -8... < Эти "новые математические теории" 16 века. Сейчас 21. Тормозитттт Флэш. :))) 2 DMN > Поэтому МатЛаб честно признается в том, что ему известен <!>еще<!> один корень, единица плюс корень из трех на мнимую единицу, то есть 1+1.732i. < Было бы честно, если бы при наличии 3-х корней он показал бы все 3 корня. А то он на свой вкус показывает только один - этот, даже не заикаясь об остальных. Это честно? 2 [subway]design спасибо за очень интересный материал. 2 Pietrovich спасибо, но код не для таких дилетантов, как я. ---------------- if x < 0 k = -1 else k = 1 end y = k*(k*x)^(1/3) ---------------- кусок кода в формате Matlab, придуманный мной для избавления от этого геммороя В Visual Basic 6 следующий код: ----------------------- Private Sub Form_Load() a = (-8) ^ (1 / 3) Text1.Text = a End Sub ----------------------- выдаёт Run-time error '5': Invalid procedure call or argument Если прав [subway]design, спинным мозгом чую, что прав: "корень и степенная функция - разные функции", а корень n-ной степени в имеющихся под рукой программах нереализован как функция, значит его что-то заменяет. Экспонента, как говорит Pietrovich, или может, что попроще? Интересны ваши мнения на сей счёт. Спасибо. |
| Часовой пояс GMT +4, время: 22:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.