Как стать автором
Обновить
54
-3

Пользователь

Отправить сообщение

Why x^0 = 1 visually

Время на прочтение3 мин
Количество просмотров1.1K

The traditional definition for the operation of exponentiation to a natural power (or a positive integer) had introduced approximately as follows:

Exponentiation is an arithmetic operation originally defined as the result of multiple multiplications a number by itself.

But the more precise formulation is still different:

Raising a number X to an integer power N is an arithmetic operation defined as the result of multiple [N by mod times] multiplications or divisions one by number X.

Let's figure it out under the cut! >>
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Почему x^0 = 1 наглядно

Время на прочтение3 мин
Количество просмотров51K

Традиционное определение для операции возведения в натуральную степень (или целую положительную) вводится примерно следующим образом:

Возведе́ние в сте́пень — арифметическая операция, первоначально определяемая как результат многократного умножения числа на себя.

Но более точная формулировка всё же другая:

Возведение числа X в целочисленную степень N — арифметическая операция, определяемая как результат многократного [N по модулю раз] умножения либо деления единицы на число X.

Разбираемся под катом! >>
Всего голосов 74: ↑65 и ↓9+56
Комментарии123

GEOMETRY OF SOUND

Время на прочтение5 мин
Количество просмотров1.2K

Surprisingly, there are strict mathematical methods that literally allow to hear visual geometric forms and, conversely, to see the beauty of musical harmonies...

[Read on Russian]

Read more...
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

ГЕОМЕТРИЯ ЗВУКА

Время на прочтение5 мин
Количество просмотров10K

Удивительно, но существуют строгие математические методы, которые в буквальном смысле позволяют услышать визуальные геометрические формы и наоборот узреть красоту музыкальных гармоний...

[Читать на английском]

Читать дальше...
Всего голосов 34: ↑34 и ↓0+34
Комментарии64

Загадки быстрого преобразования Фурье

Время на прочтение10 мин
Количество просмотров12K

• Метод фазово-амплитудной интерполяции (ФАИ)

• Точное определение частоты, амплитуды и фазы гармоник сигнала

• Выявление резонансов

Алгоритм быстрого преобразования Фурье (БПФ) - важный инструмент для анализа и обработки сигналов различной природы.

Он позволяет реконструировать амплитудный и фазовый спектры сигнала в частотной области представления по его амплитудным отсчётам во временной, при этом метод вычислительно оптимизированный при скромном расходе памяти.

Хотя в процессе преобразования никакая информация о сигнале не утрачивается (вычисления обратимы до округлений) алгоритму присущи некоторые особенности, которые затрудняют высокоточный анализ и тонкую обработку результатов в дальнейшем.

В статье представлен действенный способ преодоления таких "неудобных" особенностей алгоритма.

Читать на английском

Читать на русском
Всего голосов 14: ↑13 и ↓1+12
Комментарии94

Riddles of the fast Fourier transform

Время на прочтение10 мин
Количество просмотров1.5K

• The method of phase-magnitude interpolation (PMI)

• Accurate measure of frequency, magnitude and phase of signal harmonics

• Detection of resonances

The Fast Fourier Transform (FFT) algorithm is an important tool for analyzing and processing signals of various nature.

It allows to reconstruct magnitude and phase spectrum of a signal into the frequency domain by magnitude sample into the time domain, while the method is computationally optimized with modest memory consumption.

Although there is not losing of any information about the signal during the conversion process (calculations are reversible up to rounding), the algorithm has some peculiarities, which hinder high-precision analysis and fine processing of results further.

The article presents an effective way to overcome such "inconvenient" features of the algorithm.

Read in Russian

Read in English
Рейтинг0
Комментарии0

Эстетика XAML: конвертеры значений [WPF]

Время на прочтение6 мин
Количество просмотров4.7K

В статье представлены обобщённые подходы применения конвертеров значений при написании XAML-кода.

>> Читать на английском

Читать на русском
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

typeof(T) vs. TypeOf⟨T⟩

Время на прочтение12 мин
Количество просмотров21K
Иногда рефлексивные вызовы дороги в терминах производительности и не могут быть опущены.

В этой статье представлены паттерны, позволяющие существенно повысить производительность множественных рефлексивных вызовов посредством техники виртуализации (кэширования) результатов.

image
Читать дальше →
Всего голосов 17: ↑12 и ↓5+7
Комментарии229

Правостороннее присваивание и другие необычные приёмы программирования в C#

Время на прочтение7 мин
Количество просмотров28K
В этой статье будут рассмотрены с нового ракурса такие привычные и фундаментальные вещи, как присваивание и передача параметров в методы.

Вероятно, предлагаемые решения поначалу покажутся несколько странными и надуманными, но прелесть их раскроется чуть позже, когда станет видна вся картина целиком.

Будет много нового и интересного, возможно, даже полезного. А после прочтения каждый сам сможет решить, стоит ли ему применять описанные техники в дальнейшей повседневной практике.

За дело!

image
Читать дальше →
Всего голосов 45: ↑39 и ↓6+33
Комментарии369

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Время на прочтение4 мин
Количество просмотров12K
В языке C# с давних времён есть оператор 'is' назначение которого довольно ясное

if (p is Point) Console.WriteLine("p is Point");
else Console.WriteLine("p is not Point or null");

Кроме того его можно использовать для проверок на null

if (p is object) Console.WriteLine("p is not null");
if (p is null) Console.WriteLine("p is null");

В C# 7 анонсирована новая возможность pattern-matching

if (GetPoint() is Point p) Console.WriteLine($"X={p.X} Y={p.Y}");
else Console.WriteLine("It is not Point.");

if (GetPoint() is var p) Console.WriteLine($"X={p.X} Y={p.Y}");
else Console.WriteLine("It is not Point.");

Вопрос, что произойдёт в обоих случаях, если метод вернёт 'null'? Вы уверены?
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии291

Фотографируем объекты в C#: хроника и сопоставление снимков, реконструкция состояния по снимку

Время на прочтение4 мин
Количество просмотров6.1K
При разработке приложений часто встречается следующий сценарий: имеется некоторый набор данных доступных для просмотра и редактирования, например, это могут быть бизнес-сущности или настройки приложения. В момент, когда пользователь решает что-либо отредактировать, ему обычно становится доступна специальная форма с нужными полями ввода-вывода и другими элементами управления. Если он вносит какие-либо корректировки в данные, то при обработке формы хорошим тоном является запрос-подтверждение перед окончательным применением внесённых правок. В случае согласия пользователя данные обновляются в источнике и на интерфейсе, а при отмене используются старые значения.

Данная задача включает две подзадачи:

1) когда пользователь уходит с формы редактирования, необходимо понимать, действительно ли он произвёл изменения, чтобы не задавать вопрос на подтверждение впустую и не перезаписывать идентичные данные;

2) если редактированию подвергается непосредственно исходная сущность, а не её копия, то в случае отмены необходимо сохранять возможность отката к исходным значениям.

В статье мы рассмотрим обобщённый и очень лаконичный [размером в несколько строк кода!] подход к решению подобного рода задач, основанный на использовании библиотеки Replication Framework.

image
Читать дальше →
Всего голосов 10: ↑9 и ↓1+8
Комментарии21

Обобщённое копирование связных графов объектов в C# и нюансы их сериализации

Время на прочтение7 мин
Количество просмотров6.2K
Задачи по копированию отдельных объектов и связных графов часто встречаются в программировании. Методов их решения существует несколько в зависимости от исходных условий и требований. Цель статьи — рассмотреть ключевые разновидности решений, обозначить область применения, выделить преимущества и недостатки.

image
Читать дальше →
Всего голосов 14: ↑8 и ↓6+2
Комментарии0

Replication Framework • глубинное копирование и обобщённое сравнение связных графов объектов

Время на прочтение12 мин
Количество просмотров5.3K
Приветствую, читатель!

Хочу познакомить тебя с молодой, но многообещающей библиотекой Replication Framework для платформы .NET (возможно, при наличии достаточного интереса к теме в дальнейшем будет также реализована Java-версия). Библиотека является портабельной (portable) и может быть использована в любом проекте под Microsoft .NET или Mono.

Назначение библиотеки — глубинное копирование любых объектов и сколь угодно сложных графов, их обобщённое сравнение, сериализация и десериализаци без искажений, трекинг мутаций и манипулирование состоянием.

image
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии9

Фишки XAML-разработчика: условный конвертер

Время на прочтение4 мин
Количество просмотров6.3K
Switch Converter заслуживает особенного внимания. Простой и удобный он обладает поразительной универсальностью. На его основе легко построить множество распространённых типов конвертеров без декларирования новых классов и не только… Не верится — добро пожаловать!
image
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии0

Фишки XAML-разработчика: композитные конвертеры

Время на прочтение3 мин
Количество просмотров6.2K
Статья будет посвящена простому, но эффективному паттерну — Composite Converter [составной конвертер].
image
Читать дальше →
Всего голосов 11: ↑8 и ↓3+5
Комментарии0

Фишки XAML-разработчика: встраиваемые конвертеры

Время на прочтение4 мин
Количество просмотров8.2K
Разберём интересный и нестандартный сценарий использования конвертеров — Inline Converter.
image
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии6

Фишки XAML-разработчика: динамический Grid

Время на прочтение6 мин
Количество просмотров18K
В статье рассмотрим несколько полезных усовершенствований для контрола Grid.
image
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии11

Циклические срезы, сдвиги и вращения коллекций

Время на прочтение7 мин
Количество просмотров8.1K
Одна из типовых задач при работе с коллекциями и массивами — выборка n элементов, начиная с i-того индекса, или же, как вариант, выборка элементов с i-того по j-й индекс. На языке C# с использованием методов-расширений библиотеки Linq решается она очень просто:

var selectedItems = items.Skip(i).Take(n).ToArray();
var selectedItems = items.Skip(i).Take(j - i).ToArray();

Для строк предусмотрен специальный метод Substing:

var target = source.Substing(i, n);
var target = source.Substing(i, j - i);
var target = source.Substing(i); // from i to end

Часто начинающие разработчики изобретают свои велосипеды для подобных целей из-за недостающих знаний, поэтому на собеседованиях технические интервьюверы иногда задают вопросы по этой теме. В некоторых языках программирования также существует родственная и весьма интересная концепция срезов (slices), детальное пояснение которой с примерами следует далее.

image
Читать дальше →
Всего голосов 16: ↑7 и ↓9-2
Комментарии69

Аудиокодек своими руками — это просто

Время на прочтение5 мин
Количество просмотров33K
актуальная редакция статьи на сайте Makeloft

Думаю, что для многих людей аудиокомпрессия с потерями напоминает магический чёрный ящик, где удивительно сложным образом с применением математической алхимии ужимаются данные за счёт утраты избыточной информации, плохоразличимой или неслышимой ухом человека, и, как следствие, некоторого снижения качества записи. Однако сразу оценить существенность таких потерь и понять их суть не очень-то просто. Но сегодня мы постараемся выяснить, в чём же там дело и благодаря чему вообще возможен подобный процесс сжатия данных в десятки раз

Пора снять завесу, отворить дверцу и воочию взглянуть на таинственный алгоритм будоражащий умы и сердца, добро пожаловать на сеанс с разоблачением!


Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии28
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность