| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Логарифмический график |
| Автор: RastaDja 31.1.2011, 15:14 | ||
| Привет all! Может задаю нубский вопрос, но всё же. Есть массив
в массиве значения. Как мне заменить значения массива a, соответственными значениями в логарифмическом масштабе (log10)? Спассибо. |
| Автор: RastaDja 31.1.2011, 16:15 | ||
| Мммм. Долго, долго товарищи. Так как предложений не пришло, успел сам сделать. Вот! Пользуйтесь, кому надо.
|
| Автор: borisbn 31.1.2011, 23:16 |
| спорим, что решение неправильное ? |
| Автор: RastaDja 1.2.2011, 09:30 |
ммм. Почему? |
| Автор: borisbn 1.2.2011, 09:47 | ||
log( x ) - логарифм по основанию e log10( x ) - по основанию 10 и ещё - логарифм числа меньше 1 это нормальные значения, а вот от нуля брать нельзя. Правда сравнивать числа типа double с нулём тоже не желательно, поэтому нужно задаться каким-то эпсилон и сравнивать с ним.
|
| Автор: borisbn 1.2.2011, 10:26 | ||
почти. лучше всё-таки так
|
| Автор: RastaDja 1.2.2011, 10:39 | ||
ладно, спс
а в чем разница? можеш разъяснить? |
| Автор: RastaDja 1.2.2011, 12:06 |
| ладно спс, я уже понял |
| Автор: Фантом 1.2.2011, 15:07 | ||
Еще одна добавка - если в "логарифмируемом" массиве обнаружится нулевое значение, то, вообще говоря, надо не заглушку
вставлять, а сообщение об ошибке выкидывать (или исключение и т.п.). Как вариант - присваивать такому a[i] максимальное по модулю отрицательное значение, возможное для данного типа. |
| Автор: borisbn 1.2.2011, 16:04 | ||
Фантом, т.к. использую ipp, то делаю так
получается быстрее, чем в цикле проверять > epsilon |
| Автор: RastaDja 1.2.2011, 17:41 | ||
но я рисую график по этому массиву, а 0.0 это значение Y. |
| Автор: Фантом 1.2.2011, 17:45 |
Тогда надо выкидывать ошибку или просто не отрисовывать эту точку. Ведь значение логарифма, равное 0 - это не что-то нестандартное, а у Вас получается, что одно и то же число используется и как обычное значение, и как признак ошибки. |
| Автор: RastaDja 2.2.2011, 16:43 | ||
во первых: мне не нужны никакие признаки ошибки во вторых: я этот массив формирую на лету, тоесть, я рисую график просто, а если у меня флаг установлен в FlgLogarifm = true, на лету создаю массив логарифм. масштаба и рисую его Спс за помощь |