![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
alex_asker |
|
||||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.2.2007 Репутация: -1 Всего: нет |
Добрые люди, подскажите, пожалуйста, как прописать возведение значения Эйлера "е" в отрицательную дробную степень, например -0.0002.
Я делал следующим образом:
И далее:
Это возведение используется в довольно внушительной величины формуле. В данном случае выполняемое приложение зависает и считать формулу совсем не хочет. А вот если просто убрать знак "-" в степени, то все замечательно работает. Помогите, пожалуйста, кто знает! |
||||
|
|||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
z^(-n) = 1/z^n , для всех z>0
Это сообщение отредактировал(а) jonie - 30.11.2008, 16:31 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
J0ker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
да при чем тут это ты на формулу посмотри Добавлено через 3 минуты и 34 секунды это не правильно так можно делать только для положительных целых степеней |
|||
|
||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: нет Всего: 13 |
Имхо, если человек не знает, что такое возведение числа в степень, то программировать ему ещё рано. И вопросы стоит сразу публиковать в Центр помощи, чтобы не утруждать модераторов переносом.
alex_asker, приглядитесь внимательно к вашему циклу. Если у вас y < 0, то уже в первом шаге цикла будет неверно, что i < y. А значит цикл не будет выполняться ни разу и функция вернёт 1. приведите весь код программы, тогда можно будет сказать, почему она виснет. А пока лучше вспомнить определение возведения в степень. Не знаю что хочет от вас преподаватель или чего хотите вы, но если нельзя пользоваться функцией pow(x,y) или вы не хотите её использовать, то можете попробовать записать эту функцию через экспонирование логарифмов. -------------------- |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
Вообще да, ноль больше отрицательного значения. Цикл не должен выполняться. Не понятно почему он у вас виснет.
Это сообщение отредактировал(а) SABROG - 30.11.2008, 22:42 |
|||
|
||||
alex_asker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.2.2007 Репутация: -1 Всего: нет |
Sannis, я действительно новичок в программировании, но все, что здесь было предложено (pow или экспонирование логарифмов) я пробовал на своем коде, результат тот же. Я уверен, что какая-то самая малая ошибка мешает мне сделать правильный код, не могу ее найти, поэтому и обратился к вам.
Вот мой код (я его не переделывал - это я про i=0;i<y;):
В общем, что не так пишите (если конечно есть соображения как исправить), буду премного благодарен!!! ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Ужас
![]() По поводу того, что оно виснет - у вас в формуле Kg=T0*((1-r)/(T+(Tk/n)+r*a*(r1+(Tk/n))+(1-r)*(1-b)*(r2+(Tk/n))+(1-r)*b*(T+(Tk/n)+r2)+(Tk/n))); есть такая часть 1-r на которую умножается T0. Если r равно 1 (как у вас и получается в вашем stepen), то Kg всегда равна 0. После чего у вас все зацикливается на первом же goto. Вообще для таких вещей есть дебагер, по шагам не пробовали ваши спагетти проходить? Это сообщение отредактировал(а) xvr - 2.12.2008, 12:13 |
|||
|
||||
Lycifer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 4.11.2007 Репутация: нет Всего: нет |
x в -2 это не 1/x во 2?(Может математику забыл, пожалуйста без сооказма)
|
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Lycifer сообщение номер 2 прочти.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
alex_asker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.2.2007 Репутация: -1 Всего: нет |
Ну, во-первых, уважаемый xvr, Т0 умножается не на (1-r), а на все выражание целиком! Во-вторых, не надо округлять, на первом шаге r=0.998001998667, поэтому и нуля не будет! А вот правильно ли я возвел в отрицательную дробную степень - это вопрос! Да это же собственно название темы!!! Я не просто так обратил ваше внимание именно на это!
хотя ошибка всегда может оказаться где угодно......... |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
неправильно и о чем сказано уже не раз. Шаг в цикле for равен 1, т.е при дробном значение степени, в цикле исполнится шаг для i=0, и вернется (res=) 1*x условие if (y==0) rez=1; некоректно, так числа с плавающей запятой не сравнивают. if (y<epsilon && y>-epsilon) .. где epsilon выбираете сами как (условно) бесконечно малое число. |
|||
|
||||
xvr |
|
||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
1-r входит во все части всего выражения, так что будет 0 Нет, вру, есть еще слагаемое Tk/n, так что будет T0*Tk/n, что является константой относительно T, которое меняется в первом цикле, так что разницы всеравно нет. Хотя там еще с меняется, в общем, ищи цикл, в котором все это зацикливается
![]() ![]() Это сообщение отредактировал(а) xvr - 3.12.2008, 00:45 |
||||||||||
|
|||||||||||
alex_asker |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 7.2.2007 Репутация: -1 Всего: нет |
Всем Большое спасибо!!! Вопрос решен.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |