![]() |
|
![]() ![]() ![]() |
|
Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
ms vs 2008 в какой строке ошибка?
сделай так, чтобы нули не получались и все будет ок... скорее всего поэтому ошибка... Это сообщение отредактировал(а) Dmi3ev - 10.3.2009, 18:40 -------------------- |
||||
|
|||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Пробую откомпилировать в Visual Studio 2005. Создал progect(по умолчанию), код вставил в name.h... А вот что нужно выбрать при: executable for debug session?
|
|||
|
||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Ура! Удалось запустить! Только вот странность: при любом значении step, программа выдает одно и тоже значение (k = 17)... Кто-нибудь знает в чем ошибка?
|
|||
|
||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Исправил все значения на double... прога стала выдавать значения k = 43 при любом x!
Если вместо float поставить long double, то k уже будет равняться 50! Также не получается нормально вывести left(пишет left = 1.#IND), а вот у right нормальное число! Кто-нибудь знает почему такое происходит и как это исправить?
|
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
короче, molodzo, программа у тебя правильно работает, осталось только предусмотреть те случае, когда могут быть 0 (в отрицалтельной степени) и еще немного въехать в то, что компьютер некоторые числа воспринимает одинаково, хотя они не равны... Добавлено через 12 минут и 23 секунды molodzo, я понял, где косяк, завтра выложу полное решение... -------------------- |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
molodzo, А вы уверены, что уравнение сходится при любом х?
Мне лень было кодить и я загнал вашу формулу банально в excel, и напоролся на х (простите, не помню какой), который в принципе не сходился. Может быть добавить проверку, что при таком-то х, к просто не существует? |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
Проблема в том, что мы считаем (ты говоришь, что к-бывает 43):
((2*43)!)^2=(86!)^2=(1*2*3*...*86)*(1*2*3*...*86) (4*43+1)!=173! - это число точно не почитает, отсюда и ошибки... нужно пользоваться чем-то другим для хранения таких больших чисел... попробуй просто написать прогу:
не пробовал! но на вскидку, дальше 100 точно не должен уйти... -------------------- |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Выражение надо упростить и обойтись без факториала. Использовать несколько другой метод.
Посмотрим на формулу повнимательнее и раскроем ее При к=1 Дробь получится 5!/(2!*2!) В развернутом виде (1*2*3*4*5)/(1*2*1*2) При к=2 9!/(4!*4!) В развернутом виде (1*2*3*4*5*6*7*8*9)/(1*2*3*4*1*2*3*4) При к=3 13!/(6!*6!) В развернутом виде (1*2*3*4*5*6*7*8*9*10*11*12*13)/(1*2*3*4*5*6*1*2*3*4*5*6) Т.е. сразу видно какую часть можно сократить, а подсчет уже производить не втупую вычислением числителя и знаменателя, а последовательным умножением 7 * 8/2 * 9/3 * 10/4 * 11/5 * 12/6 * 13 Никакого переполнения у нас не будет. И т.д. для любого к |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
Anikmar, сильно не вдумывался, но тут, конечно, надо что-то преобразовывать и считать не в лоб, потому как в лоб не выходит стандартными средствами... или нужно уже брать длинные числа и шпарить...
-------------------- |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
что вроде...
только я брал порядок 10^(-5), думаю, ты легко это поправишь...
Это сообщение отредактировал(а) Dmi3ev - 14.3.2009, 12:03 -------------------- |
|||
|
||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Хм... странная программа... А она у тебя работает? Какие числа выдает?
У меня она считает как будто до бесконечности! А если вручную ввести i, то тоже непонятно когда остановится... Я поставил if k >1500 break; и прога у меня посчитала до этого значения за 3 сек!!! странно... P.S. Спасибо за участие! |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
у меня она выдает последние такие:
Добавлено через 11 секунд ща досчитает... ![]() Добавлено через 3 минуты и 46 секунд x=-0.21262 left=1.28753 right=1.28753 res=4.8107e-006 min=4.8107e-006 2 собственно 2 и есть ответ... Добавлено через 9 минут и 50 секунд а ты паузу сделай и посмотри min уменьшается? в смысле в консоли (я нажимаю правую кнопу мыши или pause и смотрю) -------------------- |
|||
|
||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Да! У меня тоже наконец посчитала
![]() А вот почему, если я ввожу x сам(допустим x = 0.21), у меня прога выдает другие значения! И left при этом равняется 1.#IND ? |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 16 Всего: 41 |
как ты ввод организуешь? я же не вижу, что ты там творишь? -------------------- |
|||
|
||||
molodzo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 18.11.2007 Репутация: нет Всего: нет |
Вот так:
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |