реклама на сайте
подробности

 
 
> Подсчитать число декад логарифмической величины, Задачка по математике
Sergey_Aleksandr...
сообщение Jul 31 2012, 11:31
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Всем привет. Есть некоторый диапазон (частот) от 7 кГц до 2 МГц [7*10^3, 2*10^6]. В логарифмическом масштабе выглядит так
Прикрепленное изображение

Никак не придумаю, как аналитически сосчитать число отсчётов логарифмической шкалы, укладывающихся в диапазоне. По-простому число вертикальных линий пересекающих отрезок на графике. В конкретном случае 23. Вроде-бы задача школьная, но что-то никик не получается смекнуть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
ViKo
сообщение Jul 31 2012, 11:41
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Sergey_Aleksandrovi4 @ Jul 31 2012, 14:31) *
По-простому число вертикальных линий пересекающих отрезок на графике. В конкретном случае 23.

И поделить на десять. Линии идут не через 10, а через 1.

А еще: lg(2000000/7000). Получается несколько иная цифра. Чудо. sm.gif
Go to the top of the page
 
+Quote Post
V_G
сообщение Jul 31 2012, 11:44
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Число декад - это разность десятичных логарифмов минимума и максимума. Умножить его на число отсчетов внутри декады. Все.
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Jul 31 2012, 11:55
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



На самом деле число этих самых линий нужно найти. Просто-напросто не знаю как они обзываются. "Декада" знаю, "октава" - знаю sm.gif
Интервал [7 кГц, 2 МГц]. В логарифмическом масштабе (в кГц): 7, 8, 9, 10, 20, 30, 40, 50, .... 800, 900, 1000, 2000. Итого 23 точки, включая границы диапазона.
Уже десятичные логарифмы так и эдак крутил, аналитически получить не смог. Нужно для написания ПО. Можно конечно в циклах считать порядок величины и пробегать по всему диапазону, но хочется аналитичкси, по-красивее sm.gif
Цитата(V_G @ Jul 31 2012, 15:44) *
Число декад - это разность десятичных логарифмов минимума и максимума. Умножить его на число отсчетов внутри декады. Все.

Это первым делом в голову пришло. 9 * (lg(Fmax) - lg(Fmin)) + 1 = 9 * (lg(Fmax/Fmin) + 1. Для приведённого выше диапазона 7'000..2'000'000 выходит ~23,1. Похоже на правду. Но, например, 8'000..1'000'000 (должна быть 21 точка), по формуле выходит ~19,9. Поэтому эту тему и создал smile3046.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 31 2012, 12:24
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Sergey_Aleksandrovi4 @ Jul 31 2012, 14:55) *
"Декада" знаю, "октава" - знаю sm.gif

Это будет называться типа "десятые доли декады". Ну, так умножьте результат логарифма на 10.
Нет, не будет! Потому и цифры не совпадают.

На рисунке линии идут неравномерно (и в линейном масштабе неравномерно, и в логарифмическом). Если вам нужно именно это, то, наверное, только циклами можно посчитать.
Go to the top of the page
 
+Quote Post
V_G
сообщение Jul 31 2012, 12:32
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Sergey_Aleksandrovi4 @ Jul 31 2012, 21:55) *
Но, например, 8'000..1'000'000 (должна быть 21 точка), по формуле выходит ~19,9. Поэтому эту тему и создал

Пока не понял сермяжной необходимости точного подсчета линий. Границы (минимум и максимум) должны задаваться круглыми числами (т.е. степенями десятки), иначе график будет плохочитаемым. Или это не для графиков?
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Jul 31 2012, 12:46
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Цитата(V_G @ Jul 31 2012, 16:32) *
Пока не понял сермяжной необходимости точного подсчета линий. Границы (минимум и максимум) должны задаваться круглыми числами (т.е. степенями десятки), иначе график будет плохочитаемым. Или это не для графиков?

Нет, не для графиков. Выше писал, что для написания ПО. Будет некий "ползунок" с фиксированным числом степеней свободы (искомое числ точек интервала). Каждое его деление будет соответствовать точке внутри диапазона частот в логарифмическом масштабе. Немного сумбурно описал, жара наверное влияет)
Go to the top of the page
 
+Quote Post
xemul
сообщение Jul 31 2012, 12:56
Сообщение #8



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Sergey_Aleksandrovi4 @ Jul 31 2012, 15:55) *
Интервал [7 кГц, 2 МГц]. В логарифмическом масштабе (в кГц): 7, 8, 9, 10, 20, 30, 40, 50, .... 800, 900, 1000, 2000. Итого 23 точки, включая границы диапазона.

На моих пальцах получилось 25 (если 10 точек на декаду).
Цитата
9 * (lg(Fmax) - lg(Fmin)) + 1 = 9 * (lg(Fmax/Fmin) + 1. Для приведённого выше диапазона 7'000..2'000'000 выходит ~23,1.

int(10*log10(2000000/7000))+1 = 25
Цитата
Похоже на правду. Но, например, 8'000..1'000'000 (должна быть 21 точка), по формуле выходит ~19,9.

int(10*log10(1000000/8000))+1 = 21

В общем виде, естесно
int(N*log10(Fmax/Fmin))+1, N - число точек на декаду
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 31 2012, 13:12
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(xemul @ Jul 31 2012, 15:56) *
На моих пальцах получилось 25 (если 10 точек на декаду).
...
В общем виде, естесно
int(N*log10(Fmax/Fmin))+1, N - число точек на декаду

Это не те точки. Это точки, если декаду разбить на равномерные 10 отрезков. Т.е. график был бы, как тетрадь в клетку.
Go to the top of the page
 
+Quote Post
xemul
сообщение Jul 31 2012, 13:33
Сообщение #10



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(ViKo @ Jul 31 2012, 17:12) *
Это не те точки. Это точки, если декаду разбить на равномерные 10 отрезков. Т.е. график был бы, как тетрадь в клетку.

Угу, плохо у меня с устным счётом. Для исходной задачи: int(9*log10(Fmax/Fmin))+1
Или совсем общо:
int(N*logM(Fmax/Fmin))+1, M - основание логарифма, N - число точек на одну степень основания

"Здесь не играть, здесь рыбу заворачивали..."
Go to the top of the page
 
+Quote Post
Sergey_Aleksandr...
сообщение Jul 31 2012, 13:39
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 168
Регистрация: 8-10-08
Из: РФ Смоленск
Пользователь №: 40 764



Цитата(xemul @ Jul 31 2012, 17:33) *
Для исходной задачи: int(9*log10(Fmax/Fmin))+1

Не-не, в сообщении №4 я уже показал, что эта формула даёт неверный результат. Видимо, ViKo был прав, аналитически вычислить не выйдет. Сделал через циклы: неказисто с виду, но работает как часы.
Go to the top of the page
 
+Quote Post
ae_
сообщение Jul 31 2012, 14:59
Сообщение #12


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Цитата(Sergey_Aleksandrovi4 @ Jul 31 2012, 22:39) *
...аналитически вычислить не выйдет.

Представим Fmin и Fmax в виде:
Fmin = A*10^X; Fmax = B*10^Y; где A,B - старшая цифра (1...9), X,Y - количество нулей (целое число).
Тогда число декад = 9*(Y-X)+B-A+1
Пример на Питоне2.7
Код
fmin=input("Enter Fmin: ")
fmax=input("Enter Fmax: ")

if fmax<fmin:
    fmin,fmax=fmax,fmin

x=len(str(fmin))-1
y=len(str(fmax))-1
a=int(fmin/pow(10,x))
b=int(fmax/pow(10,y))
z=9*(y-x)+b-a+1
print z
Go to the top of the page
 
+Quote Post
i-mir
сообщение Aug 1 2012, 07:48
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 17-06-10
Из: Киев
Пользователь №: 57 986



Немного раскрою предыдущий пост.

Друзья - давайте решать такие задачки как в школе, а не как в аспирантуре.
Ну зачем вы вычисляете логарифмы ? Здесь у нас "палочки", значит считаем
именно палочки, а не степени чисел.
Итак, из рисунка видно, что расстояние между 10^1 и 10^2, а также между
другими целыми степенями - есть 9 палочек. А циферки в числах 7 и 2 (как у автора)
- это количество дополнительных палочек в чистом виде.

Если мы наше 1е число (меньшее) представим как А1*10^n1,
а второе число (большее) как А2*10^n2, тогда общее количество палочек между ними
есть: (A2+n2*9)-(А1+n1*9)+1 или: (2+6*9)-(7+3*9)+1 = 23.

Единичка в формуле добавилась т.к. цифры четко стоят на палочках (здесь нужно
более четкое понимание задания, может у ТС будут и другие исходные данные).
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 18:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016