TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
||||||
1 | ||||||
Поиск точек графика функции на заданном интервале28.12.2010, 14:26. Показов 3002. Ответов 21
Метки нет (Все метки)
Смысл программы: поиск точек графика функции y=(x^0.33)-(x+1)^0.33 на интервале.
Вопрос: почему начиная с наименьшего значения отрезка значений икс (сказанул) до нуля программа выдает результат типа: -1.IND0000000000. После нуля значения идут вразумительные значения Я использовал float, но когда использовал double была также фигня
0
|
28.12.2010, 14:26 | |
Ответы с готовыми решениями:
21
Табулирование функции на заданном интервале Табулирование функции на заданном интервале Расчитать значение функции на заданном интервале Вывести таблицу значений функции на заданном интервале |
377 / 357 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
|
|
28.12.2010, 14:37 | 2 |
получается, что степень 0.33 - это 33/100, то есть ты отрицательное число x возводишь в 33 степень - получается опять же отрицательное число, а потом от него пытаешься вычислить корень четной степени - а это математически неверно
1
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
|
28.12.2010, 14:52 [ТС] | 3 |
тогда как вообще считать корни выражений степеней больше двух? Даже если я напишу pow(x,0.4) или (x,0.16) (возвожу в четную степень и извлекаю корен четной степени), то все равно на отрицательных значениях икс - чушь
0
|
377 / 357 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
|
|
28.12.2010, 14:56 | 4 |
видимо внутреннее устройство pow() так себя ведет.
0,4 = 2/5, сначала y=pow(x,2) потом pow(y,0.2) - так работает.
1
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
|
28.12.2010, 15:06 [ТС] | 5 |
deadlock, спасибо, конечно, но все равно проблему это не решило. Я думал, что с помощью pow можно любую степень извлекать, а оказалось, что нельзя толком извлечь даже кубический корень 0_0
0
|
28.12.2010, 15:31 | 6 |
http://www.manpagez.com/man/3/pow/
1
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
||||||
28.12.2010, 15:37 [ТС] | 7 | |||||
Evg, я написал, как сказали вы:
0
|
377 / 357 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
|
|
28.12.2010, 15:40 | 8 |
скачай библиотеку gmp))
0
|
28.12.2010, 16:07 | 9 |
Забыл главное написать. В общем случае нельзя отрицательное число возводить в нецелую степень. Для этого нужно руками знак менять. В твоём случае, грубо говоря, для отрицательного x нужно пользоваться формулой "x^(1/3) = -((-x)^(1/3))"
1
|
28.12.2010, 16:48 | 10 |
Василий-Робот, вы математику не знаете? При извелечении корня из отрицательного числа ответ получается в виде комплексного числа ( i ). Попробуйте на калькуяторе сделать, то, что пытаетесь в коде, наверное удивитесь)))
0
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
|
28.12.2010, 17:29 [ТС] | 11 |
Моя математика прекрасна И если посчитать в калькуляторе кубический корень из минуса двух (например), то ответ будет -1.25992105.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
28.12.2010, 17:49 | 13 |
Kastaneda, во-первых, ответ-то неверный, ибо ваша запись равна 0,25599..., что не есть кубический корень из -2. Скорее всего вы вместо "*" поставили "+". А во-вторых, арифметический кубический корень из -2 прекрасно представляется без комплексных чисел, только в действительных, и равен, как уже было сказано, -1,25992104... То, что калькулятор может вычислить его в таком виде, как привели вы, это, скорее всего, особенность численного метода, который в нём применяется
2
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
||||||
28.12.2010, 17:53 [ТС] | 14 | |||||
Kastaneda, не буду спорить, ибо у меня для этого нет базы, комплексные числа мы будем проходить в следующем семестре.
0
|
28.12.2010, 17:55 | 15 |
ага
silent_1991, не берусь с тобой спорить по части матемаике, но Windows калькулятор (calc.exe) солидарен со мной) -1,25992104 * -1,25992104== - * - = + , а должно быть минус.
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
28.12.2010, 17:58 | 16 |
Kastaneda, так, а мы какой корень-то всё-таки вычисляем?
0
|
28.12.2010, 18:01 | 17 |
Василий-Робот, сейчас глянул, википедия говорит, что можно извлечь корень из орицательного числа, если степень корня не четная, так что неправильный результат при pow(x,(1.0/3.0)) - это похоже особенность реализации ф-ции pow()
Добавлено через 1 минуту Не по теме: silent_1991, да, заморочился)), но calc.exe все равно этого не умеет, хотя должен)
0
|
silent_1991
|
28.12.2010, 18:02
#18
|
Не по теме: Kastaneda, да calc.exe много чего не умеет...
0
|
28.12.2010, 18:05 | 19 | |||||
Василий-Робот, а не проще ли написать функцию типа
Добавлено через 2 минуты 1.0/3.0 в плавющем машинном хранится лишь приблизительно (т.е. это НЕ эквивалентно математическому значению 1/3). А потому pow в принципе не может работать математически правильно с корнями целых степеней.
0
|
TECHNO
28 / 28 / 8
Регистрация: 04.11.2009
Сообщений: 366
|
|
28.12.2010, 18:29 [ТС] | 20 |
Evg, в данном случае (ваш код) не проще. Так как мы извлекаем кубический корень из (1+x) и там знаки меняется не так как в функции x. Можно при x и x+1 держать числа a и b соответственно, чтобы возвращать их значение -1 или 1
0
|
28.12.2010, 18:29 | |
28.12.2010, 18:29 | |
Помогаю со студенческими работами здесь
20
Вывести таблицу значений функции на заданном интервале Найти значение минимума функции на заданном интервале (дихотомия) Вычислить и вывести в виде таблицы значения функции F в заданном интервале Вычислить и вывести на экран в виде таблицы значения функции f на заданном интервале Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |