Отправляет email-рассылки с помощью сервиса Sendsay

Алгоритмы для всех

  Все выпуски  

Алгоритмы для всех


Рассылка -- ‘Алгоритмы для всех ‘
Выпуск  -- # 114
Отправлен – 2016\11\14

к//си///16\11\14|v|с|3516*047, к//о|3106*36 , ТВ//3515^Гты///^^2016\11\1$

Пушкарёв С.В. Способ деления на ноль. = 2016\11\10,14, 8.6К, 2 ДП, 3 возм. ДП

«На ноль делить можно»
Надпись на бетонном заборе между высотками и садами на ул. Академика Легостаева в г. Королёв


Введение понятия (ПВДП)

При расчете суточной калорийности рациона я использую формулы в эксэлевской таблице. Мне удобно, если удельная калорийность ( килокалория / грамм ) дана не в отдельном поле (столбце, колонке), а как часть значения пОля с названием продукта (вида пищи) : через знак «*» от названия (табл. 1, поле «А»). Значок «
п~» означает «буду считать, что». Т.е., так сказать, «назначенность» данного значения. Связано это с тем, что мне не удалось выяснить точную удельную калорийность растворимого кофея. Возможно, это значение сильно колеблется. И я «назначил» наиболее правдоподобное по результатам поиска значение.

Первая формула (таблица 1, поле «B») извлекает значение удельной калорийности. Вторая формула (поле «E») собирает числа для непосредственного расчета. Расчет происходит в поле «F». Верхняя строка в паре строк , помеченных как ряд 6 , – то, как выглядит САМ бланковый ряд в эксэлевской таблице, нижняя – то, как в нём выглядят ФОРМУЛЫ. Аналогично, ряд 3 – значения и формулы для рабочего ряда.

Табл. 1  Рабочий вид расчета калорийности одной порции некоторого продукта.

 

A

B

C

D

E

F

ряд

 продукт * его удельная калорийность ( килокалория / грамм )

* (вынесенная) удельная калорийность ( килокалория / грамм )

масса продукта

 

калорийность данной порции / данной массы в виде формулы

калорийность данной порции в виде числа

 

 

 

 

 

 

 

6

 *0

*0

0

 

=((0))*0

 *0

6

 *0

 =ПРАВСИМВ(A6;ДЛСТР(A6)-НАЙТИ("*";A6;1)+1)

0

 

 ="=("&"("&C6&")"&D6&")"&B6

 *0

 

 

 

 

 

 

 

3

кофей раств-й п~  *1.6

*1.6

1.8

 

=((1.8))*1.6

2.88

3

кофей раств-й п~  *1.6

 =ПРАВСИМВ(A3;ДЛСТР(A3)-НАЙТИ("*";A3;1)+1)

1.8

 

 ="=("&"("&C3&")"&D3&")"&B3

 =((1.8))*1.6


Некоторые продукты я употребляю стандартными порциями. В частности, растворимый кофей (таблица 1, ряд 3) «принимаю» по 1.8 г ( 9/10 чайной ложки ) (табл. 1, поле «
C»). Мне удобнее, если и эту массу включить в значение при имени продукта. Т.е., из «1.6» («кофей раств-й п~  *1.6») должно получиться «1.6*1.8» («кофей раств-й п~ *1.6*1.8»). Но в бланковом ряду (табл. 1, ряд 6) на месте массы стоИт значение ноль. Т.е., в таких случаях нужно будет его всякий раз вручную исправлять: скажем, на 1. И выглядеть это будет не слишком хорошо: поскольку не будет соответствовать имени пОля («масса продукта»). Решением могло бы стать деление на ноль: я делаю значение вида «1.6*1.8/0» («кофей раств-й п~ *1.6*1.8/0»), далее происходит умножение на 0 ( 1.6*1.8/0 * 0 ), ноль сокращается, и остаётся искомое произведение «1.6*1.8».

Однако ж, как нас учили в школе, «на ноль делить нельзя»... :-( ( Строго говоря, тут имеет значение не то, чему учили в школе, а то, что может или не может делать Excel. ) Но, как гласит народная ( или «анти-народная» ... :-/ ) мудрость, «если нельзя, но очень хочется, то можно»... В моей версии это звучит так: «если нельзя, но очень хочется, то нужно сделать изобретение». - По этой «подсказке» (по слову «изобретение») некоторые читатели могут сразу (или не сразу) догадаться, что речь идёт о разрешении тризовского противоречия (смотрите книги Г.С. Альтшуллера по Теории решения изобретательских задач). Кондраков здесь использует более точный, на мой взгляд, термин «несовместимость» (Кондраков'1995с60). А я -- ещё более точный, на мой же взгляд :-) , термин «несовместность».

И я эту несовместность заменил совместностью.

Для этого ввёл я новое понятие: «линейный ноль» или «одномерный ноль» (термины -- не вполне точны). Оно имеет свой знак: «@» ( и даже не один, - здесь я даю только этот один ). Если попробовать его определить через обычный ноль, то это будет что-то в духе «корень из нуля именно той степени, которую внутри себя имеет этот ноль». Обычный ноль, соответственно, будет = @^
n , где n – натуральное («естественное») число (или даже = @^r , где r – рациональное ( «отношЕнийное» ) число, - теоретические выкладки я делал в апреле этого , - 2016-го - , года и сейчас, - в ноябре, - что-то уже забыл). Т.е., обычный ноль из числа, полагаемого конкретным, превратился в неконкретный член ряда чисел: @^1 ( ~ «линейный ноль» ), @^2 ( ~ «квадратный ноль» ) , @^3 ( ~ «кубический ноль» ) и т.д.

Далее я поставил этот конкретный, - а именно, линейный, - ноль в таблицу и попробовал сделать формулы его обработки. Отчасти мне это удалось. Текущая версия формул правильно обрабатывает случай сочетания значений «... /@» ( «кофей раств-й п~ *1.6*1.8/@» ) в поле «продукт и удельная калорийность» и «@» в поле «масса» ( таблица 2, полЯ «
A» и «C»).

Табл. 2  Корректная работа текущей версии формулы «нейтрализации» деления на «линейный ноль» в значении пОля «
A» вида «* ... /@». Ноль заменяется на девятку, и она сокращается.

A

B

C

D

E

кофей раств-й п~ *1.6*1.8/@

*1.6*1.8/9

@

 

=((9))*1.6*1.8/9

кофей раств-й п~ *1.6*1.8/@

 =ЕСЛИ(ПРАВСИМВ(ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);2)="/@";ЗАМЕНИТЬ(ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);НАЙТИ("@";ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);1);1;9);ЗАМЕНИТЬ(ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);НАЙТИ("@";ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);1);1;0))

@

 

 ="=("&"("&ЕСЛИ(ПРАВСИМВ(ПРАВСИМВ(A4;ДЛСТР(A4)-НАЙТИ("*";A4;1)+1);2)="/@";ЗАМЕНИТЬ(C4;1;1;9);ЗАМЕНИТЬ(C4;1;1;0))&")"&D4&")"&B4


Но исходный простой вид значения , - без «линейного нуля» в знаменателе ( типа «кофей раств-й п~ *1.6» ) она пока не «берёт»: пишет про ошибку ( таблица 3, полЯ «
B» и «E» ) .

Табл. 3  Некорректная работа текущей версии формулы «нейтрализации» деления на ноль на значении пОля «
A» вида «* ... ».

изюм  *2.85

#ЗНАЧ!

@

 

#ЗНАЧ!

изюм  *2.85

 =ЕСЛИ(ПРАВСИМВ(ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);2)="/@";ЗАМЕНИТЬ(ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);НАЙТИ("@";ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);1);1;9);ЗАМЕНИТЬ(ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);НАЙТИ("@";ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);1);1;0))

@

 

 ="=("&"("&ЕСЛИ(ПРАВСИМВ(ПРАВСИМВ(A5;ДЛСТР(A5)-НАЙТИ("*";A5;1)+1);2)="/@";ЗАМЕНИТЬ(C5;1;1;9);ЗАМЕНИТЬ(C5;1;1;0))&")"&D5&")"&B5


С учётом того, что доводка формул требует изрядной траты времени, а из-за громоздкости формулы проблематично её использование в таблице
Excel’я Mobile на карманном компьютере (объёмная таблица требует долгого выполнения операции сохранения), я остановил смену версий.

P.S. Приведённая в таблицах 2 и 3 версия формулы -- от 2016\8\31. Порывшись в выкладках, я обнаружил, что версия от 2016\4\23 вполне справляется со случаем из таблицы 2 : таблица 4. Зачем же я тогда её переделывал? :-/ Забыл... :-( 

Таблица 4. Версия формул от 2016\4\23.

изюм  *2.81

*2.81

@

 

=((0))*2.81

изюм  *2.81

 =ЕСЛИ(((НАЙТИ("@";ПРАВСИМВ(A9;ДЛСТР(A9)-НАЙТИ("*";A9;1)+1)&"@";1)<ДЛСТР(ПРАВСИМВ(A9;ДЛСТР(A9)-НАЙТИ("*";A9;1)+1)&"@"))+0)*(C9="@")+0;ПОДСТАВИТЬ(ПРАВСИМВ(A9;ДЛСТР(A9)-НАЙТИ("*";A9;1)+1);"@";1);ПРАВСИМВ(A9;ДЛСТР(A9)-НАЙТИ("*";A9;1)+1))

@

 

 ="=("&"("&(((НАЙТИ("@";A9&"@";1)<ДЛСТР(A9&"@"))+0)*(C9="@")+0)&")"&D9&")"&B9



Явное описание моего/-их изделия/-й

Тип описания : заявка на двусторонний патент (ДП), а с момента публикации -- сам двусторонний патент ( Пушкарев"Двусторонние_ )
Тип изделия : устройство
Название и/или описание изделия :
Назначение изделия : обеспечить возможность деления там, где требуется деление на ноль
Прототип : неотличённая знаком от обычного нуля пустота ( отсутствие какого-либо количества-в-буквальном-смысле ) в конкретной степени
Сходство : конкретная степень
Отличие : введён особый знак
ПорА появления изделия : апрель 2016-го года

Тип описания : заявка на двусторонний патент (ДП), а с момента публикации -- сам двусторонний патент ( Пушкарев"Двусторонние_ )
Тип изделия : способ
Название и/или описание изделия : способ деления на ноль
Назначение изделия : обеспечить возможность деления там, где требуется деление на ноль
Примечание: Тут, похоже, проблема с понятиями: как видно из высшего текста, ноль-в-обычном-понимании ОСТАЁТСЯ «не-делителем», а «линейный ноль» (и его степени) ИЗНАЧАЛЬНО может быть делителем.
Прототип : 1. запрет деления на ноль 2. деление на очень малую величину
Сходство : с 1. : ноль-в-обычном-понимании остаётся не-делителем; со 2. : возможность деления
Отличие : от 1. : возможность деления ; от 2. : как делитель использован некоторый вариант пустоты ( -- отсутствия какого-либо количества-в-буквальном-смысле ) : линейный ноль в конкретной степени
ПорА появления изделия : апрель 2016-го года

Список источников

Кондраков И.М. От фантазии к изобретению. Кн. для учащихся. - М.: Просвещение: Владос, 1995. - 205 с.

Пушкарев С.В. Двусторонние патенты. = 2008\10\26..9\6\7,9\10\7..8, 20.2К (ДПы)  // Решеведение, в.3, 2009\10\8 // http://old.subscribe.ru/archive/science.natural.rve/200910/08175548.html

г. Королёв, 2016\11\10,14  



В избранное