| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Поиск радиуса и высоты цилиндрического бака |
| Автор: Studeht 5.1.2010, 14:59 | ||
Здравствуйте уважаемые эксперты! Вообщем нужно найти размеры бака, чтобы на него ушло наименьшее количество материала. Вот получившийся код:
Но программа почему то уходит в бесконечный цикл.. Помогите найти ошибку, очень нужно! (В случае помощи в долгу не останусь) |
| Автор: ~FoX~ 5.1.2010, 15:13 |
| FuncAndDerrivation Это кто такой? |
| Автор: Studeht 5.1.2010, 15:21 | ||
Прощу прощения, забыл выложить модуль.. Здесь впринипе сама функция которая вроде бы должна быть(не уверен т.к. с математикой туго) и ее производные
Впринипе с точки зрения математики, я пошел через формулу объема цилиндра. v=Pi*R^2*h, сответственно функция выглядит так: Pi*R^2*h-v=0.. |
| Автор: Amphiluke 5.1.2010, 15:35 |
| А объем бака — величина постоянная V = const? Если да, то тут, вроде, никакие циклы не нужны… Одна математика и две формулы на выходе: для R и H, выраженных через V. |
| Автор: Studeht 5.1.2010, 15:40 |
| Объем вводит пользователь.. Циклы нужны, потому что нужно решить именно метод Ньютона. Если его не использовать то там действительно всего 2 формулы, но проблема то именно в методе.. |
| Автор: ~FoX~ 5.1.2010, 16:28 |
| Studeht, При каких значениях она в цикл попадает? |
| Автор: Studeht 5.1.2010, 16:37 | ||||
Вот нашел некоторые ошибки, теперь получается всегда почти 0.. Выложу код и модуль(и на всякий случай прикрепил сам проет)
|
| Автор: ~FoX~ 5.1.2010, 17:31 |
| Studeht, Еще раз....При каких значениях? У меня и первый и второй варианты работают, первый ни в какой цикл не попадает, второй выдает значения сильно отличные от нуля... Не знаю расчитывает он верно или нет, самому считать лениво... |
| Автор: Studeht 5.1.2010, 17:36 |
| Хм.. Странно, но вот втророй вариант например ввожу: сответственно 48; 2,95; 3,5; 0,01. Выдает следующее: 1,50 1,75 0,74 0,88 0,37 0,44 0,18 0,22 0,09 0,11 0,05 0,05 0,02 0,03 0,01 0,01 0,01 0,01 Хотя последней цифрой должен быть ответ(2,4) |
| Автор: Amphiluke 5.1.2010, 18:09 | ||||||||
А интересно, зачем? Вот вы пишите в своем коде:
и больше нигде эта величина не используется… Также и некоторые другие (обратите внимание на hints в отчете компилятора). Получается, решение от объема бака не зависит? O_o Добавлено через 3 минуты и 8 секунд Точнее, V используется здесь:
но вот уже Func нигде не используется, что, впрочем, то же самое. |
| Автор: Studeht 5.1.2010, 18:13 | ||
| Ну как, объем используется в изначальной формуле, вызываемой из модуля.. Добавлено через 48 секунд
|
| Автор: Amphiluke 5.1.2010, 18:18 |
| Да, это верно, но результат, возвращаемый этой ф-цией и присваеваемый в переменную Func не используется нигде. |
| Автор: Studeht 5.1.2010, 18:18 |
| Уже голова болит, целый день сижу.. Сейчас буду смотреть.. Получается чтобы я не вводил, выдает одно и тоже |
| Автор: Amphiluke 5.1.2010, 18:19 |
| Компилятор-то не обманешь. Наверное. Pardon, думал сообщение склеится с моим предыдущим... |
| Автор: Staruha 8.1.2010, 13:52 |
| На мой взгляд наименьшее кол-во металла уйдет(В смысле с учетом отхода.Расход металла всегда будет одинаков) при H=D=2R V=2R*pi*sqr® находим R Конечно ,если все это не ограничивается размером листа |