Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возведение числа в отрицательную дробную степень 
V
    Опции темы
mes
Дата 3.12.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 6
Всего: 250



Цитата(Dmi3ev @  3.12.2008,  01:25 Найти цитируемый пост)
Например если x=2, а y=2.2, то, по-моему, должно получиться 4, а должно 2^(2,2)

получится 8.. 4 было бы при y =2, а так еше один раз цикл пройдется.

Цитата(alex_asker @  2.12.2008,  22:59 Найти цитируемый пост)
   А на счет функции я и сам не уверен, что она верна:

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

Это сообщение отредактировал(а) mes - 3.12.2008, 01:42


--------------------
PM MAIL WWW   Вверх
Dmi3ev
Дата 3.12.2008, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Цитата

получится 8.. 4 было бы при y =2, а так еше один раз цикл пройдется.

думал, что цикл с единицы начинается, не заметил, а так да, будет 8, i=0,1,2 - 3 прохода по циклу.
спасибо, mes, что поправили  


--------------------

PM MAIL   Вверх
Dmi3ev
Дата 3.12.2008, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



я попробовал выполнить программу, я там немного похимичил, потому что в первозданном виде она висла (сейчас объясню почему), только в путь, у мен возник вопрос к автору программы:
1. Вы дожидались концы программы хоть раз???
У меня нет желания разбираться в формуле с точки зрения задачи, но Вы уверены, что Вы так и задумывали формулу написать??? Просто дело в том что Ваша огромная, запутанная формула всегда будет вычислять ноль   smile Так вот, если Вы все же так и задумывали, не просто присвоить переменной ноль, а получить его столь изощренным способом, то: 
Код

if (Kg>c)
{c=Kg;
 T=T+step;
 goto m;}

В этом месте goto Вас и подвел (то о чем я и говорил), просто это условие выполняется всегда, соответственно goto выполняется тоже всегда.
Надо его оттуда убрать совсем, тогда хоть конец вычислениям настанет, если Вы опять не хотите и это слушать, то тогда пишите просто
Код

int main ()
{
int Kg=0;
for (;;)
 {
  Kg=0;
 }
}

Результат одинаков, может я и ошибаюсь, но мой двухъядерный процессор думал 10 мин и ничего не надумал, значит вероятность, что всегда Kg=0 увеличивается

Добавлено через 11 минут и 38 секунд
 smile 
Это прям троян какой-то, эта же тема в общих вопросах  smile 
alex_asker хочет повесить компы всех форумчан, берегись  smile 
Я уже попался на его хитрый ход  smile 
Кто станет следующей жертвой коварного alex_asker  smile 

Это сообщение отредактировал(а) Dmi3ev - 3.12.2008, 02:40


--------------------

PM MAIL   Вверх
Usper
Дата 3.12.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Цитата(alex_asker @  2.12.2008,  22:59 Найти цитируемый пост)
  Во-вторых, возведение в степень происходит неоднократно, т.к. после формулы добавлено еще циклов на 5000 решений:...

В далее приведённом куске кода я не вижу ни одного вызова функции stepen(), поэтому я и сделал вывод, что возведение в степень вызывается только один раз:
Код

r=stepen(e,(-T/T0));

А присваивание с=Kg:
Код

c=-1;
if (Kg>c)
{c=Kg;


вообще бессмысленно, так как если (Kg<c), то c так и останется ==-1, а если (Kg>c), то выполняется присваивание c=Kg, но после этого сразу же выполняется переход goto на формулу, а после этого c опять равно -1.

Я также как и Dmi3ev выполнял код, но 10 минут ждать не стал smile, однако и через 10 секунд прошло несколько миллионов (если не миллиардов) циклов, в результате которых Kg всё ещё была больше 0. Соответственно я и написал, что условие if (Kg>c) всегда выполняется, а значит код в принципе не может завершиться. Подставив в код правильную функцию для вычисления степени (в очередной раз скажу, что это функция pow()) я всё равно не добился завершения программы, следовательно проблема даже не в неправильном вычислении степени числа, а в логике работы цикла:
Код

m: 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)));
c=-1;
if (Kg>c)
{c=Kg;
 T=T+step;
 goto m;}


Это сообщение отредактировал(а) Usper - 3.12.2008, 10:51


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
alex_asker
Дата 4.12.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



       Вы на правильном пути, товарищи!!! Спасибо большое, что ставите на путь истинный. Возведение в степень действительно лучше сделать через    экспоненту: exp(y*log(e)) , в этом я убедился на более простых примерах, и в отрицательную дробную степень замечательно возводит (извините,что так долго до меня шло это открытие...).  НО, как вы уже правильно заметили, байда с циклом.
      Вобщем, само задание на прогу звучит так: "найти при каком Т (от 0.1 до бесконечности с шагом 0.1) значение Kg, высчитанное по формуле, будет максимальным" ??? Вот в чем истинная проблема!!! (извините что продолжаю тему, но надо ведь добить до конца!)
      Формула верна - перепроверял без цикла. Значение Kg всегда будет положительным, поэтому я и вводил изначально с=-1, чтобы было с чем сравнивать, чтобы искать максимум. Возможно я чего-то совсем недопонимаю, и максимум ищется как-то иначе???? Вероятно, что да! Прошу подсказки! пожалста.....

P.S.     Dmi3ev, извини за потраченное тобой время и мощности компа, не хотел, сам с этим столкнулся smile 
PM MAIL   Вверх
Usper
Дата 4.12.2008, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Поиск максимума делается не так. Пример:
Код

...
int m[100];
int Max;
for(int count=0; count<100; count++)
    m[count]=random(100); //заполняем массив псевдослучайными значениями
Max=m[0];
for(int count=1; count<100; count++)
    if(m[count]>Max) Max=m[count];
...


То есть тебе надо постоянно сравнивать текущее значение с предыдущим максимумом. В самый первый момент масимум равен самому первому значению. То есть в твоём случае надо прикинуть как ведёт себя значение Kg, и если функция монотонно убывает, то максимум это самое первое значение (то есть надо постоянно смотреть не начала ли убывать функция, и если начала - прервать цикл).
В моём примере значения массива - случайные числа, но массив - конечен, поэтому надо просмотреть весь массив, а по условию твоей задачи - массив бесконечен, поэтому надо сначало аналитически решить когда прервать цикл.

Это сообщение отредактировал(а) Usper - 4.12.2008, 22:47


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
xvr
Дата 5.12.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(alex_asker @ 4.12.2008,  20:15)
      Вобщем, само задание на прогу звучит так: "найти при каком Т (от 0.1 до бесконечности с шагом 0.1) значение Kg, высчитанное по формуле, будет максимальным" ??? Вот в чем истинная проблема!!! (извините что продолжаю тему, но надо ведь добить до конца!)

А матанализ не пробовали задействовать? Или хотя бы примитивную алгебру  smile 
Цитата

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)));
это аналогично
Цитата

Kg=A/(T*B+C);
где
A=T0*(1-r);
B=1+(1-r)*b;
C=(Tk/n) + r*a*(r1+(Tk/n)) + (1-r)*(1-b)*(r2+(Tk/n))+(1-r)*b*((Tk/n)+r2) + (Tk/n)
Т.е. максимальный Kg будет при минимальном T

PM MAIL   Вверх
alex_asker
Дата 6.12.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Всем большое спасибо! Вопрос решен. smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1111 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.