http://lovestih.ru/wp-content/uploads/2011/07/formula-lubvi.jpg
Как говорится, любовь на уровне первоклассника. Но совсем уж опустились двоечники или недоучки, пошедшие прямой дорожкой не в науку, а в бизнес. Вот полюбуйтесь хотя бы на это:
Ну, куда годится такая формула? Даже гиганты символьной математики Maple или Mathcad, такое безобразие не берут!
ФОРМУЛА ЛЮБВИ 1
Лишь в 18 веке пришло понимание того, что пора уже дарить женщинам более сложные формулы — с элементарными функциями и другими прибамбасами. Такими, например, как полярные координаты. Первой кривой, отдаленно напоминающей сердце, была кардиоида.
В системе Maple любой желающий может проверить верность уравнения, скопировав следующие команды:
plot(1-cos(t-(1/2)*Pi), t = 0 .. 2*Pi, color = red, coords = polar, thickness = 5);
ФОРМУЛА ЛЮБВИ 2
Чтобы поправить положение, некий ловкий математик чуточку усложнил формулу кардиоиды и получил нечто более человеческое:
В системе Maple:
plot((1-sin(t))*(1/2+(1/7)*tanh(50*sin(t))*abs(sin(2*t)))/(1+(.5*sin(t)-1)^2), t = -Pi .. Pi, color = red, coords = polar, thickness = 5);
И вот тут началась гонка! Математики словно с цепи сорвались и стали соревноваться друг с другом: кто же найдет формулу, описывающую самое красивое сердце! Эту захватывающую гонку можно понаблюдать, если в Яндексе набрать ключевые слова “Формула любви” и просмотреть 22 тысячи рисунка. Для верности можно и погуглить. Итак, я буду излагать упомянутую гонку по возрастающей качества графиков.
ФОРМУЛА ЛЮБВИ 3
with(plots): F := plot(sqrt((sin(t)^4+cos(t)^2)*(1+sqrt(1-sin(t)^4-cos(t)^2)))/(sin(t)^4+cos(t)^2), t = 0 .. Pi, color = red, coords = polar, thickness = 5): G := plot(sqrt(-(sin(t)^4+cos(t)^2)*(-1+sqrt(1-sin(t)^4-cos(t)^2)))/(sin(t)^4+cos(t)^2), t = Pi .. 2*Pi, color = red, coords = polar, thickness = 5): display({F, G});
Ну не чудеса? Наверное, любимая девушка doctor’а долго прыгала от счастья и больше не ходила к нему на прием в связи с выздоровлением.
ФОРМУЛА ЛЮБВИ 4
Какой-то странный парень с высоким математическим образованием догадался возвести синус в седьмую степень и умножить его на экспоненту. И все это – в полярных координатах. Симметрию обеспечил двумя интервалами угла t. Единственное, что он явно ляпнул – это перед синусом поставил коэффициент аж 5. Цифры на осях координат оказались солидными. Поэтому я без разрешения автора уменьшил этот коэффициент аж в 50 раз! Ну, чтобы размеры сердца не зашкаливали:
Программа простенькая:
with(plots): F := plot(.1*sin(t)^7*exp(abs(2*t)), t = -Pi .. -(1/2)*Pi, color = red, coords = polar, thickness = 5): G := plot(.1*sin(t)^7*exp(abs(2*t)), t = (1/2)*Pi .. Pi, color = red, coords = polar, thickness = 5): display({F, G});
ФОРМУЛА ЛЮБВИ 5
А вот, наконец, один шибко сообразительный догадался в параметрической форме покорить свою подружку. Сердечко ладненьким получилось:
plot({[(0.1e-2*(-t^2+40*t+1200))*sin((1/180)*t*Pi), (0.1e-2*(-t^2+40*t+1200))*cos((1/180)*t*Pi), t = 0 .. 60], [-(0.1e-2*(-t^2+40*t+1200))*sin((1/180)*t*Pi), (0.1e-2*(-t^2+40*t+1200))*cos((1/180)*t*Pi), t = 0 .. 60]}, color = red, thickness = 5);
ФОРМУЛА ЛЮБВИ 6
Следующее решение некий программист сам сделал в системе Maple и получил такой график сердечка:
Я всего-то взял, да и списал его решение. А программа такой оказалась:
modf := proc (x, y) options operator, arrow; frac(x/y)*y end proc; magic1 := proc (x) options operator, arrow; abs(modf(abs(x+1), 2)-1) end proc; magic2 := proc (x) options operator, arrow; 3*magic1((x-(1/2)*Pi)/Pi)-3/2 end proc; magic3 := proc (x) options operator, arrow; x^3-x^2 end proc; plot(6+magic3(magic2(x)), x = -Pi .. Pi, ords = polar, thickness = 5);
ФОРМУЛА ЛЮБВИ 7
Поэтому появилось дико вычурное изображение:
Если уж говорить честно, то нижняя часть выглядит еще ничего: точки перегиба имеет. А вот верхняя часть такова, что одним сердце покажется лимоном, другим — чем-то еще. Прям не знаю – прорыв ли сделали программисты, или же взрыв оригинальности. Но пойдем дальше.
ФОРМУЛА ЛЮБВИ 8
А вот это уже как-то трогает! Тем более, что в полярных координатах. Как же подбираются такие интересные комбинации синусов, косинусов, корней квадратных?
Формы, надо сказать, довольно насыщенные. Вы не находите? Если согласны, то попробуйте сами построить, полюбоваться:
plot(sin(t)*abs(cos(t))^(1/2)/(sin(t)+7/5)-2*sin(t)+2, t = -Pi .. Pi, color = red, coords = polar, thickness = 5);
ФОРМУЛА ЛЮБВИ 9
Ну, а этот математик наверняка в молодости ходил на дискотеки, слушал попсу, увлекался тату, пирсингом и тусовками. Поэтому и форма сердца оказалась в виде последнего писка моды:
В копилку Ваших программ:
plot([(3/2)*cos(t)^3, sin(t)+(2/3)*cos(2*t), t = 0 .. 2*Pi], thickness = 5);
Получилось прям не сердце, а открытый фужер для шампанского.
ФОРМУЛА ЛЮБВИ 10
Тоже из серии крылатых сердец. Но совсем иные параметрические формулы!
Прграмма:
plot([sin(t)*cos(t)*ln(abs(t)), sqrt(abs(t))*cos(t), t = -1 .. 1], color = red, thickness = 5);
ФОРМУЛА ЛЮБВИ 11
Здесь любитель тригонометрии поленился ввести в параметрические формулы хотя бы простенькие коэффициенты. Потому и выглядит сердце, как общипанная курица.
plot([cos(t), sin(t)+abs(cos(t))^(1/2), t = 0 .. 2*Pi], thickness = 5);
ФОРМУЛА ЛЮБВИ 12
Подобную общипанную курицу дает неявная математическая зависимость. Опять математик поленился коэффициентиками поиграть. Эх, молодежь!
with(plots): implicitplot(x^2+((x^2)^(1/3)-y)^2 = 1, x = -3 .. 3, y = -3 .. 3, numpoints = 120000, thickness = 5);
Тем не менее, это дело умудрились разрекламировать на тысячах футболках! Вот как надо заниматься бизнесом на скучной математике!
ФОРМУЛА ЛЮБВИ 13
Однако нашелся-таки добросовеснное светило, которое коэффициентиками поиграло. И добилось при этом заметного улучшения предыдущего графика:
with(plots): implicitplot(x^2+2*((3/5)*(x^2)^(1/3)-y)^2 = 1, x = -3 .. 3, y = -3 .. 3, numpoints = 120000, thickness = 5);
ФОРМУЛА ЛЮБВИ 14
Но мокрая курица просто так не сдается! Она так и лезет из-под пера аппроксиматора:
plot({3/4*abs(x)^(2/3)+(1-x^2)^(1/2), ¾*abs(x)^(2/3)-(1-x^2)^(1/2)}, x = -1.1 .. 1.1, numpoints = 5200, color = red, thickness = 5);
ФОРМУЛА ЛЮБВИ 15
Ну, а сейчас пойдут настоящие шедевры! Это, конечно, на мой взгляд. Но посудите уж сами. Первый шедевр тригонометрический, довольно сложный, параметрический:
Форма и вправду классическая! Не находите:
plot([16*sin(t)^3, 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t), t = 0 .. 2*Pi], color = red, thickness = 5);
ФОРМУЛА ЛЮБВИ 16
Второй шедевр – предел простоты. Сердце компонуется из полуокружностей и повернутого набок косинуса. Высший пилотаж стилизации!
plot({-arccos(abs(x)-1), sqrt(1-(abs(x)-1)^2)}, x = -2.2 .. 2.2, numpoints = 3200, color = red, thickness = 5);
И правильно сделали, что такую вещь превртили в ходящую рекламу!
ФОРМУЛА ЛЮБВИ 17
Третий шедевр принадлежит мне. История появления формулы такова. Мой внук Андрюша заметил, что правая часть контура сердца напоминает часть цифры 2 без нижней черты. Что тогда мы с ним сделали? Очень просто: рассмотрели тысячи различных шрифтов и составили как бы обобщенный классический контур половины сердечка. Зафиксировали этот контур на миллиметровке в крупном масштабе, сняли с рисунка 22 координаты контура и при помощи специальной нашей программы сумели аппроксимировать простым уравнением. Получилось так:
with(plots): implicitplot((1.2*y-abs(x)^(1/2))^2+x^2 = 1, x = -3 .. 3, y = -3 .. 3, numpoints = 120000, thickness = 5);
Когда писал эту статью, обнаружил, что некие люди взяли мою формулу, чуть-чуть изменили один коэффициентик и, спустя три недели после моей публикации, выдали ее за свою . Убедитесь сами:
http://fitriizzati.wordpress.com/2011/04/24/heartpower/
Источник: www.liveinternet.ru
Уравнения [ править | править код ]
- В прямоугольных координатах[1] : ( x 2 + y 2 + 2 a x ) 2 − 4 a 2 ( x 2 + y 2 ) = 0 +y^</2><2>+2ax)^</2><2>-4a^</2><2>(x^</2><2>+y^</2><2>),=,0></2>
- В прямоугольных координатах (параметрическая запись): x = 2 a cos t − a cos 2 t y = 2 a sin t − a sin 2 t
- В полярных координатах[2][1] : r = 2 a ( 1 − cos φ )
Свойства [ править | править код ]
- Кардиоида является частным случаем улитки Паскаля
- Кардиоида является частным случаем синусоидальной спирали
- Кардиоида — алгебраическая кривая четвёртого порядка.
- Кардиоида имеет один касп.
- Длина дуги одного витка кардиоиды, заданной формулой в полярных координатах
r = 2 a ( 1 − cos φ ) равна: L = 2 ∫ 0 π r ( φ ) 2 + ( r ′ ( φ ) ) 2 d φ = ⋯ = 8 a ∫ 0 π 1 2 ( 1 − cos φ ) d φ = 8 a ∫ 0 π sin ( φ 2 ) d φ = 16 a ^+(r'(varphi ))^</2><2>>>;dvarphi =cdots =8aint _</2></0><0>^<2>>(1-cos varphi )>>;dvarphi =8aint _</2></1></0><0>^sin(< frac <2>>)dvarphi =16a>
- Площадь фигуры, ограниченной кардиоидой, заданной формулой в полярных координатах
r = 2 a ( 1 − cos φ ) равна: S = 2 ⋅ 1 2 ∫ 0 π ( r ( φ ) ) 2 d φ = ∫ 0 π 4 a 2 ( 1 − cos φ ) 2 d φ = ⋯ = 4 a 2 ⋅ 3 2 π = 6 π a 2 </1></2><2>>int _</2></0><0>^<(r(varphi ))^<2>>;dvarphi =int _</2></0><0>^<4a^<2>(1-cos varphi )^</2><2>>;dvarphi =cdots =4a^</2> <2>>pi =6pi a^</2><2>>.
Радиус кривизны любой линии:
ρ ( φ ) = [ r ( φ ) 2 + r ˙ ( φ ) 2 ] 3 / 2 r ( φ ) 2 + 2 r ˙ ( φ ) 2 − r ( φ ) r ¨ ( φ ) . </2><2>+>(varphi )^</2><2> ight]^<3>><2>+2>(varphi )^</2><2>-r(varphi )>(varphi )>> .>
Что даёт для кардиоиды заданной уравнением в полярных координатах:
</2> <2>>,> ρ ( φ ) = ⋯ = [ 16 a 2 sin 2 φ 2 ] 3 2 24 a 2 sin 2 φ 2 = 8 3 a sin φ 2 . <2>sin ^</2> <2>>]^</3></2><2>>><24a^</2><2>sin ^</2> <2>> .>
Обобщение [ править | править код ]
- Кардиоида есть Синусоидальная спираль при n = 1 2 </1>
</2><2>>>; Кардиоида есть Улитка Паскаля при a = ℓ .
История [ править | править код ]
Кардиоида впервые встречается в трудах французского учёного Луи Карре (Louis Carrè, 1705 г.). Название кривой дал в 1741 году Джованни Сальвемини ди Кастиллоне (он упоминается также как Johann Francesco Melchiore Salvemini Castillon).
«Спрямление», то есть вычисление длины кривой, выполнил Ла Ир (Philippe de La Hire), который открыл кривую независимо, в 1708 году. Также независимо описал кардиоиду голландский математик Й. Коерсма (J. Koersma, 1741 год). В дальнейшем к кривой проявляли интерес многие видные математики XVIII—XIX веков.
Уильямс Джей, «Герои Ниоткуда»
Вероятно, пост следовало назвать «Как нарисовать анимированное сердечко ко дню Святого Валентина, используя математику не по назначению». Я отверг это название в пользу более поэтичного: как-никак, надвигается замечательный романтический праздник, который мы, айтишники и прочие нёрды, должны встретить во всеоружии. Я сразу покажу вам результат, а под хабракатом будет много букв о том, как я этого результата достиг.
Дисклеймер
Я осознаю, что красивое мигающее сердечко можно сделать и без малейшего знания математики. Но разве это интересно?
Шаг 1. Параметризуем сердечко.
Для начала нам нужен математический объект, хотя бы отдалённо напоминающий сердечко. К счастью, для меня этот шаг был тривиален: ещё пару лет назад я обнаружил замечательную формулу как раз для такого случая (из эстетических соображений график на рисунке растянут по горизонтали, на самом деле он должен умещаться между -1 и 1).
Формула была обнаружена из следующий соображений: возьмём обыкновенную окружность и представим, что она состоит из желе, будучи при этом жёстко прикреплена к оси ординат. Теперь «подуем» на неё снизу: прибавим к координате игрек некую функцию w(x) = w(x(t)), равную нулю при x=0, монотонно возрастающую при x>0 и чётную по x. После такого «дуновения» половинки окружности сместятся вверх, образуя «выпуклости» сердечка, а благодаря жёсткому креплению к оси Y образуется нижний «хвостик» и верхняя «вмятинка». В данном случае w(x(t)) = |x| 1/2 = |cos(t)| 1/2 . Можете самостоятельно попробовать другую «функцию дуновения» и посмотреть, что из этого выйдет.
Шаг 2. От параметрического задания к неявной функции.
Шаг 3. От неявной функции к функции двух переменных. Функция цвета.
Имея на руках f(x,y), мы наконец можем осуществить свою мечту: нарисовать красивую цветную картинку. Для этого нам понадобится ещё одна функция: функция цвета. Она должна принимать вещественный аргумент r и возвращать целое значение от 0 до 255. Также желательно, чтобы она была монотонна на каждой полуоси и имела максимум в точке нуль. В качестве такой функции можно взять, например, эту:
Шаг 4. Добавляем параметр, создаём анимацию.
Теперь заменим магическое число 100 параметром k. Новая функция цвета выглядит так:
Пусть k — это некоторая функция времени. Тогда для каждой точки изображения в каждый момент времени мы можем вычислить её цвет (что и является, по сути, математическим определением анимации). Сначала я хотел взять что-нибудь типа k(t) = 80(sin(t)+1). Потом, однако, я понял, что при большом количестве кадров гифка будет весить более 640 килобайт. С другой стороны, при малом количестве кадров нет смысла заморачиваться с аналитическим заданием k(t). В итоге, чтобы добиться пульсирования сердца, я последовательно присвоил k значения 80, 90, 100, 110, 120, 110, 100, 90, а затем изображения, сгенерированные для этих значений, объединил в циклический GIF. В общем-то, всё.
Дубликаты не найдены
С лекции по анатомии, например.
Поясняю: в норме у человека пульс меняется. Всегда. ЧСС меняется +- несколько ударов в минуту за каждые несколько секунд — поставьте себе постоянный измеритель и поймёте, о чём я. Всего 2 недели назад мерил в течение 2 суток, потому, поверьте, я знаю, о чём я говорю.
“></2></0>
Источник: fifafaq.ru
Пусть математика сложит сердца
Один и один — получается два. Все одиноки — здесь ты, а там я. Люди всегда одиноки вдвойне сами с собою наедине. Если б их что-то сблизить могло, сразу б из двух получилось одно.
Пусть математика сложит сердца — чтобы проделать нам путь до конца.
Уильямс Джей, «Герои Ниоткуда»
Вероятно, пост следовало назвать «Как нарисовать анимированное сердечко ко дню Святого Валентина, используя математику не по назначению». Я отверг это название в пользу более поэтичного: как-никак, надвигается замечательный романтический праздник, который мы, айтишники и прочие нёрды, должны встретить во всеоружии. Я сразу покажу вам результат, а под хабракатом будет много букв о том, как я этого результата достиг.
Дисклеймер
Я осознаю, что красивое мигающее сердечко можно сделать и без малейшего знания математики. Но разве это интересно?
Шаг 1. Параметризуем сердечко
Для начала нам нужен математический объект, хотя бы отдалённо напоминающий сердечко. К счастью, для меня этот шаг был тривиален: ещё пару лет назад я обнаружил замечательную формулу как раз для такого случая (из эстетических соображений график на рисунке растянут по горизонтали, на самом деле он должен умещаться между -1 и 1).
Формула была обнаружена из следующий соображений: возьмём обыкновенную окружность (x = cos(t); y = sin(t)) и представим, что она состоит из желе, будучи при этом жёстко прикреплена к оси ординат.
Теперь «подуем» на неё снизу: прибавим к координате игрек некую функцию w(x) = w(x(t)), равную нулю при x=0, монотонно возрастающую при x>0 и чётную по x. После такого «дуновения» половинки окружности сместятся вверх, образуя «выпуклости» сердечка, а благодаря жёсткому креплению к оси Y образуется нижний «хвостик» и верхняя «вмятинка».
В данном случае w(x(t)) = |x|1/2 = |cos(t)|1/2. Можете самостоятельно попробовать другую «функцию дуновения» и посмотреть, что из этого выйдет.
Шаг 2. От параметрического задания к неявной функции
Шаг 3. От неявной функции к функции двух переменных. Функция цвета
Имея на руках f(x,y), мы наконец можем осуществить свою мечту: нарисовать красивую цветную картинку. Для этого нам понадобится ещё одна функция: функция цвета. Она должна принимать вещественный аргумент r и возвращать целое значение от 0 до 255.
Также желательно, чтобы она была монотонна на каждой полуоси и имела максимум в точке нуль.
В качестве такой функции можно взять, например, эту: c(r) = max([255 — 100*|r|], 0) Здесь 100 — «магическое число», позднее мы его в полном соответствии с «хорошим стилем программирования» заменим параметром. Теперь для каждой точки (x,y) мы можем задать цвет как rgb(c(f(x,y)), 0, 0).
Те точки, которые раньше принадлежали непосредственно графику «сердечка», стали ярко-красными (обратите внимание на неподвижный светлый контур на гифке). По мере удаления от графика цвет будет тускнеть, пока на некотором расстоянии от него не станет чёрным.
Шаг 4. Добавляем параметр, создаём анимацию
Теперь заменим магическое число 100 параметром k. Новая функция цвета выглядит так: c(r, k) = max([255 — k*|r|], 0) Пусть k — это некоторая функция времени. Тогда для каждой точки изображения в каждый момент времени мы можем вычислить её цвет (что и является, по сути, математическим определением анимации). Сначала я хотел взять что-нибудь типа k(t) = 80(sin(t)+1).
Потом, однако, я понял, что при большом количестве кадров гифка будет весить более 640 килобайт. С другой стороны, при малом количестве кадров нет смысла заморачиваться с аналитическим заданием k(t).
В итоге, чтобы добиться пульсирования сердца, я последовательно присвоил k значения 80, 90, 100, 110, 120, 110, 100, 90, а затем изображения, сгенерированные для этих значений, объединил в циклический GIF. В общем-то, всё.
Заключение
К сожалению, мне не удалось устроить сюрприз своей девушке: она коварно подкралась ко мне сзади как раз тогда, когда я генерировал кадры для анимации. Тем не менее, ей понравилось.
Художники, дизайнеры и прочие товарищи с обострённым чувством прекрасного наверняка скажут, что сердечко могло бы быть и покрасивее. Отчасти я с ними соглашусь: картинка не лишена недостатков.
Однако её истинная красота — в математической строгости. Моя девушка это оценила. А вы?
- математика
- день святого валентина
Источник: https://habr.com/post/169219/
С днём всех влюблённых или как подарить сердце в libreoffice calc | информатика в экономике и управлении
На эту статью меня подтолкнул интерес дочери к возможности описать изображение сердца формулами. Это не новая тема, она уже довольно «широко освещена» в интернете. Но простых и грамотных мануалов как сделать простое изображение сердца, к сожалению, я не нашёл.
Либо в них использована алгебраическая форма с уравнениями шестого порядка, либо полярная система координат, а ни то ни друге не очень удобно для быстрого графического изображения функции в программах типа Calc или Excel.
Так как, я думаю, это может оказаться интересным не только ей, я выкладываю небольшие соображения по этой части сюда, стараясь не очень сильно углубляться в математику, хотя как вы понимаете, совсем без неё тут не обойтись.
Впрочем, базового школьного курса должно быть достаточно, чтобы понимать что происходит.
Построить её в LibreOffice Calc можно при помощи сетчатой диаграммы линии. Например, мы можем сделать столбец с углами от 0,017 до 6,283 радиана, и подставить это значение ссылкой вместо φ в формулу. Если вам сложно понимать радианы, можно использовать знакомые градусы от 1 до 360, но тогда вам нужно будет позаботиться о переводе их в радианы, когда вы будете записывать формулу.
Константа a в уравнении — это радиус окружности, поэтому мы его можем приравнять к единице, или другими словами, в данном примере опустить. Формулы для таблицы будут выглядеть так: =2*(1+COS(A1)) — для входящих углов в радианах =2*(1+COS(RADIANS(A1))) — для входящих углов в градусах.
Затем нам нужно выделить результирующий столбец (углы не нужно указывать в диаграмме, они заданы будут автоматически) и создать сетчатую диаграмму «только линии». Ось в сетчатых диаграммах в LibreOffice повернута вертикально, поэтому нам нужно развернуть диаграмму на 90 градусов против часовой стрелки.
Выйдите из редактора диаграмм, нажмите на неё правой кнопкой мыши и выберите в контекстном меню «Положение и размер». На вкладке «Вращение» в поле «Угол поворота» поставьте значение 270 (360-90=270). Теперь у нас есть классическая кардиоида:
Как видите, в электронных таблицах типа Calc и Excel, построение линий в полярных координатах выглядит не очень эстетично для наших целей, да и делается это достаточно муторно, хотя такой способ тоже приемлем.
Кроме того, если мы будем делать более сложные линии (например спирали), то нам придётся действительно изгаляться, чтобы добиться нужного результата. Поэтому, дальше я буду описывать только прямоугольную (Декартову) систему координат.
Алгебраическая форма записи кардиоиды в прямоугольных координатах:
Это тоже не очень красиво, кроме того, приведение алгебраических выражений к корням выше второй степени (в этом примере четвёртой) не всегда нам даёт простую и удобную для записи форму. Именно поэтому, часто используют параметрическую форму уравнения. Для кардиоиды параметрическая форма в прямоугольных координатах будет выглядеть следующим образом:
Поэтому таблица будет выглядеть так: в первом столбце у нас будут цифры от 0 до 6,28 (=2*3,14), я сделал с шагом 0,1, во второй столбец мы помещаем формулу =2*SIN(A1)-SIN(2*A1), а в третий =2*COS(A1)-COS(2*A1) и протягиваем их до конца столбца. Диаграмму будем строить на двух последних столбцах.
Выделяем их, и вызвав мастер диаграмм, выбираем диаграмму XY (разброс) «Только линии». Легенда нам тут не нужна, поэтому на четвёртом шаге можно снять галочку «Показать легенду». После нажатия в мастере «Готово», щелкаем по линии правой кнопкой мыши и выбираем «Формат рядов данных…».
На вкладке «Линии» в разделе «Цвет» выбираем желаемый цвет, я выбрал «Красный 3». После этого можно выйти из мастера диаграмм. Чтобы придать диаграмме правильные очертания её нужно немного уменьшить по горизонтали. Вот, что в итоге у меня получилось.
Форма кардиоиды встречается не редко, самыми известными вещами, наверное, являются микрофоны и антенны с кардиоидной направленностью. Такая форма позволяет увеличить помехоустойчивость и сохранить достаточно большой угол для работы. В природе форму кардиоиды можно увидеть в отраженном свете от предметов напоминающих вогнутые зеркала (например, кольцо).
Изображение взято с сайта mathematische-basteleien.de
Ещё одна классическая и хорошо известная кривая, при помощи которой можно изобразить сердце, — это спираль Архимеда. Спираль Архимеда была описана, как вы понимаете, Архимедом в III веке до н.э., хотя достаточно точное её воспроизведение было и раньше. Формула спирали в прямоугольных координатах в параметрическом виде выглядит следующим образом:
Спираль, это естественно только один виток, поэтому для наших целей нам нужно будет взять две спирали: одну, закрученную по часовой стрелке, и второю, её близняшку, закрученную против часовой.
В первую ячейку второго столбца введём формулу для x: =A1*COS(A1), в первую ячейку третьего столбца введём формулу для y: =A1*SIN(A1), протянем их до конца множества. Теперь нам осталось только сделать график для нашей кривой.
Выделяем второй и третий столбец и запускаем мастер диаграмм, выбираем диаграмму XY(разброс), убираем легенду и перекрашиваем линию, то есть, шаги те же, что и для предыдущего графика. В центре мы получили маленькое красивое сердечко с подвеской:
Кроме сердечек спираль Архимеда используют для вычерчивания спиральных пружин, улиткообразных корпусов центробежных насосов, профилей кулачков в кулачковых механизмах.
Так как я обещал в начале статьи особо не занудствовать математическими терминами и выводами, то скажем просто: Эвольвента окружности, в данном контексте, представляет обобщённую форму спирали Архимеда :).
Если вам интересны трансцендентальные кривые и их свойства, я рекомендую обратиться к книге А. А. Совелова “Плоские кривые. Систематика, свойства, применения”, а тут я постараюсь продолжить повествование ненавязчиво и без лишних углублений в математику.
Параметрическая форма в прямоугольных координатах для эвольвенты окружности выглядит следующим образом:
В этой формуле у нас появилось 2 новых параметра: R и h.
Не тяжело догадаться, что при h < 0 и h = -R (например, R=1, h=-1) мы получим уравнение спирали Архимеда с иксами в обратном порядке для того случая, который был представлен выше.
«Играя» этими двумя параметрами, мы можем изменять вид линии, от абсолютного круга, до различных спиралей. Для нас же, наверное, будет интересен случай когда R = 1, а h = 0. То есть уравнение примет вид
Если вы читали статью с самого начала, то для вас не будет сложностью построить диаграмму. Множество, на котором я предлагаю строить ее с заданными параметрами: от -10,9 до 10,9. Итоговый вид её будет следующий:
Если менять параметры R и h, нижние «хвостики» у спиралей будут менять своё положение от пересечения, до образования разрыва между ними, поэтому найдя понравившуюся вам форму, придётся немного подкорректировать диапазон множества на котором она построена. Оставляю эту задачу вам.Эвольвента окружности часто используется при проектировании зубчатых колёс, также эвольвенту можно получить при сматывании нити с цилиндрической поверхности.
Вообще, спирали очень интересная тема, и не только с точки зрения геометрии, но и потому, что они постоянно встречаются в природе, примерами могут быть цветок подсолнуха, сосновая шишка и многое другое.
Это изображение сердца было предложено H. Dascanio в 2003 году. К сожалению, самые ранние источники указывают, что это была личная переписка, и более подробная информация появления этого сердца останется, наверное, загадкой. Формула, предложенная Dascanio, выглядит вот так:
В этой формуле есть натуральный логарифм и модуль числа. В записи LibreOffice Calc эти формулы буду выглядеть для x =SIN(A2)*COS(A2)*LN(ABS(A2)) и для y =(ABS(A2)(1/3))*(COS(A2)0,5). Диапазон значений параметра t должен быть от -1 до 1. При построении этого сердца есть один нюанс, хотя в общем, достаточным шагом будет 0,05, приблизительно с -0,2 и до 0,2 приближаясь к нулю нужно шаг уменьшать, создавая тем самым лучшее разрешение графика на этом интервале (в прилагаемом файле есть пример). В остальном это сердце строится как и предыдущие. Изображение, которое мы должны получить, выглядит так:
Ещё одним примером приближенного изображения сердца может быть найденное мной на просторах интернета (к своему сожалению, не могу вспомнить источник, если вы знаете, сообщите, пожалуйста) форма, достаточно близкая к сердцу, но немного вытянутая по вертикали. Его формула выглядит следующим образом
Строить его нужно на диапазоне от -π до π с шагом 0,01. Сердце получается немного продолговатым, но достаточно приемлемым по форме, если сравнивать с предыдущим вариантом:
Маленькое замечание, так как в этой диаграмме точки по x стоят у нас достаточно часто, то мы можем отсортировать их по иксам. В этом случае мы получим закрашенное сердечко:
Эта формула сердца была предложена Georg-Johann, одним из редактором Wikipedia, в июле 2009 года. Насколько я понял, оно было создано путем интерполяции.
На мой взгляд, из всего что я видел, подготавливаясь к этой статье, этот вариант является самым правильным и знакомым. Хотя, как говорится в поговорке: «на вкус и цвет все фломастеры разные».
Формула в параметрическом виде для полярных координат этого сердца выглядит следующим образом:
В LibreOffice Calc мы его строим так же, как и предыдущие, только диапазон будет от 0 до π, шаг я предлагаю сделать 0,1. Во втором столбце для координаты х вводим формулу =16*SIN(A1)3, а в третий столбец для y =13*COS(A1)-5*COS(2*A1)-2*COS(3*A1)-COS(4*A1). После чего выделяем второй и третий столбец и, как и в предыдущих случаях, строим диаграмму.
Кажется, я сумел сдержать свое обещание — не занудствовать. Я пишу эту статью накануне 14 февраля, дня, который многие называют днем влюблённых, и хотел бы добавить пару слов.
И простое изображение сердца, и формула, рисующая его на графике, никогда не заменит вашу любовь к близкому, так же как химическая формула никогда не заменит нам воду. Используйте их для того, чтобы порадовать и удивить любимого человека.
Но в настоящей формуле любви должно обязательно присутствовать уважение и понимание, причем с обеих сторон и, наверное, в первую очередь, с вашей. Но эти два параметра относятся уже к алгебре нечетких чисел, а значит выходят далеко за рамки этой статьи.
Приятного всем праздника и несгораемой любви в ваших сердцах.
“,”author”:”ÐвÑоÑ: tagezi”,”date_published”:”2015-02-12T00:00:00.000Z”,”lead_image_url”:”https://lh5.googleusercontent.com/proxy/K-laivJtCzwcF2V0s-7tE7l3qOUQm3gNSR0JfuJDukFy0dpTdOI5VrVDkQA8dvrjxUlx6tCajrZOOAHdHPBTjCr9wJfSyTl7ELosD8o1gD45Mmubgtrjc5HDuC6c3FuBCMtP=w1200-h630-p-k-no-nu”,”dek”:null,”next_page_url”:null,”url”:”https://infineconomics.blogspot.com/2015/02/formula-of-heart.html”,”domain”:”infineconomics.blogspot.com”,”excerpt”:”Ðа ÑÑÑ ÑÑаÑÑÑ Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð´ÑолкнÑл инÑеÑÐµÑ Ð´Ð¾ÑеÑи к возможноÑÑи опиÑаÑÑ Ð¸Ð·Ð¾Ð±Ñажение ÑеÑдÑа ÑоÑмÑлами. ÐÑо не Ð½Ð¾Ð²Ð°Ñ Ñема, она Ñже доволÑно «ÑиÑок…”,”word_count”:1661,”direction”:”ltr”,”total_pages”:1,”rendered_pages”:1}
Источник: https://infineconomics.blogspot.com/2015/02/formula-of-heart.html
Источник: wikicardiolog.ru
Пусть математика сложит сердца
Один и один — получается два. Все одиноки — здесь ты, а там я. Люди всегда одиноки вдвойне сами с собою наедине. Если б их что-то сблизить могло, сразу б из двух получилось одно.
Пусть математика сложит сердца — чтобы проделать нам путь до конца.
Уильямс Джей, «Герои Ниоткуда»
Вероятно, пост следовало назвать «Как нарисовать анимированное сердечко ко дню Святого Валентина, используя математику не по назначению». Я отверг это название в пользу более поэтичного: как-никак, надвигается замечательный романтический праздник, который мы, айтишники и прочие нёрды, должны встретить во всеоружии. Я сразу покажу вам результат, а под хабракатом будет много букв о том, как я этого результата достиг.
Дисклеймер
Я осознаю, что красивое мигающее сердечко можно сделать и без малейшего знания математики. Но разве это интересно?
Шаг 1. Параметризуем сердечко
Для начала нам нужен математический объект, хотя бы отдалённо напоминающий сердечко. К счастью, для меня этот шаг был тривиален: ещё пару лет назад я обнаружил замечательную формулу как раз для такого случая (из эстетических соображений график на рисунке растянут по горизонтали, на самом деле он должен умещаться между -1 и 1).
Формула была обнаружена из следующий соображений: возьмём обыкновенную окружность (x = cos(t); y = sin(t)) и представим, что она состоит из желе, будучи при этом жёстко прикреплена к оси ординат.
Теперь «подуем» на неё снизу: прибавим к координате игрек некую функцию w(x) = w(x(t)), равную нулю при x=0, монотонно возрастающую при x>0 и чётную по x. После такого «дуновения» половинки окружности сместятся вверх, образуя «выпуклости» сердечка, а благодаря жёсткому креплению к оси Y образуется нижний «хвостик» и верхняя «вмятинка».
В данном случае w(x(t)) = |x|1/2 = |cos(t)|1/2. Можете самостоятельно попробовать другую «функцию дуновения» и посмотреть, что из этого выйдет.
Шаг 2. От параметрического задания к неявной функции
Шаг 3. От неявной функции к функции двух переменных. Функция цвета
Имея на руках f(x,y), мы наконец можем осуществить свою мечту: нарисовать красивую цветную картинку. Для этого нам понадобится ещё одна функция: функция цвета. Она должна принимать вещественный аргумент r и возвращать целое значение от 0 до 255.
Также желательно, чтобы она была монотонна на каждой полуоси и имела максимум в точке нуль.
В качестве такой функции можно взять, например, эту: c(r) = max([255 — 100*|r|], 0) Здесь 100 — «магическое число», позднее мы его в полном соответствии с «хорошим стилем программирования» заменим параметром. Теперь для каждой точки (x,y) мы можем задать цвет как rgb(c(f(x,y)), 0, 0).
Те точки, которые раньше принадлежали непосредственно графику «сердечка», стали ярко-красными (обратите внимание на неподвижный светлый контур на гифке). По мере удаления от графика цвет будет тускнеть, пока на некотором расстоянии от него не станет чёрным.
Шаг 4. Добавляем параметр, создаём анимацию
Теперь заменим магическое число 100 параметром k. Новая функция цвета выглядит так: c(r, k) = max([255 — k*|r|], 0) Пусть k — это некоторая функция времени. Тогда для каждой точки изображения в каждый момент времени мы можем вычислить её цвет (что и является, по сути, математическим определением анимации). Сначала я хотел взять что-нибудь типа k(t) = 80(sin(t)+1).
Потом, однако, я понял, что при большом количестве кадров гифка будет весить более 640 килобайт. С другой стороны, при малом количестве кадров нет смысла заморачиваться с аналитическим заданием k(t).
В итоге, чтобы добиться пульсирования сердца, я последовательно присвоил k значения 80, 90, 100, 110, 120, 110, 100, 90, а затем изображения, сгенерированные для этих значений, объединил в циклический GIF. В общем-то, всё.
Заключение
К сожалению, мне не удалось устроить сюрприз своей девушке: она коварно подкралась ко мне сзади как раз тогда, когда я генерировал кадры для анимации. Тем не менее, ей понравилось.
Художники, дизайнеры и прочие товарищи с обострённым чувством прекрасного наверняка скажут, что сердечко могло бы быть и покрасивее. Отчасти я с ними соглашусь: картинка не лишена недостатков.
Однако её истинная красота — в математической строгости. Моя девушка это оценила. А вы?
- математика
- день святого валентина
Хабы:
Источник: https://habr.com/post/169219/
С днём всех влюблённых или как подарить сердце в libreoffice calc | информатика в экономике и управлении
На эту статью меня подтолкнул интерес дочери к возможности описать изображение сердца формулами. Это не новая тема, она уже довольно «широко освещена» в интернете. Но простых и грамотных мануалов как сделать простое изображение сердца, к сожалению, я не нашёл.
Либо в них использована алгебраическая форма с уравнениями шестого порядка, либо полярная система координат, а ни то ни друге не очень удобно для быстрого графического изображения функции в программах типа Calc или Excel.
Так как, я думаю, это может оказаться интересным не только ей, я выкладываю небольшие соображения по этой части сюда, стараясь не очень сильно углубляться в математику, хотя как вы понимаете, совсем без неё тут не обойтись.
Впрочем, базового школьного курса должно быть достаточно, чтобы понимать что происходит.
Построить её в LibreOffice Calc можно при помощи сетчатой диаграммы линии. Например, мы можем сделать столбец с углами от 0,017 до 6,283 радиана, и подставить это значение ссылкой вместо φ в формулу. Если вам сложно понимать радианы, можно использовать знакомые градусы от 1 до 360, но тогда вам нужно будет позаботиться о переводе их в радианы, когда вы будете записывать формулу.
Константа a в уравнении — это радиус окружности, поэтому мы его можем приравнять к единице, или другими словами, в данном примере опустить. Формулы для таблицы будут выглядеть так: =2*(1+COS(A1)) — для входящих углов в радианах =2*(1+COS(RADIANS(A1))) — для входящих углов в градусах.
Затем нам нужно выделить результирующий столбец (углы не нужно указывать в диаграмме, они заданы будут автоматически) и создать сетчатую диаграмму «только линии». Ось в сетчатых диаграммах в LibreOffice повернута вертикально, поэтому нам нужно развернуть диаграмму на 90 градусов против часовой стрелки.
Выйдите из редактора диаграмм, нажмите на неё правой кнопкой мыши и выберите в контекстном меню «Положение и размер». На вкладке «Вращение» в поле «Угол поворота» поставьте значение 270 (360-90=270). Теперь у нас есть классическая кардиоида:
Как видите, в электронных таблицах типа Calc и Excel, построение линий в полярных координатах выглядит не очень эстетично для наших целей, да и делается это достаточно муторно, хотя такой способ тоже приемлем.
Кроме того, если мы будем делать более сложные линии (например спирали), то нам придётся действительно изгаляться, чтобы добиться нужного результата. Поэтому, дальше я буду описывать только прямоугольную (Декартову) систему координат.
Алгебраическая форма записи кардиоиды в прямоугольных координатах:
Это тоже не очень красиво, кроме того, приведение алгебраических выражений к корням выше второй степени (в этом примере четвёртой) не всегда нам даёт простую и удобную для записи форму. Именно поэтому, часто используют параметрическую форму уравнения. Для кардиоиды параметрическая форма в прямоугольных координатах будет выглядеть следующим образом:
Поэтому таблица будет выглядеть так: в первом столбце у нас будут цифры от 0 до 6,28 (=2*3,14), я сделал с шагом 0,1, во второй столбец мы помещаем формулу =2*SIN(A1)-SIN(2*A1), а в третий =2*COS(A1)-COS(2*A1) и протягиваем их до конца столбца. Диаграмму будем строить на двух последних столбцах.
Выделяем их, и вызвав мастер диаграмм, выбираем диаграмму XY (разброс) «Только линии». Легенда нам тут не нужна, поэтому на четвёртом шаге можно снять галочку «Показать легенду». После нажатия в мастере «Готово», щелкаем по линии правой кнопкой мыши и выбираем «Формат рядов данных…».
На вкладке «Линии» в разделе «Цвет» выбираем желаемый цвет, я выбрал «Красный 3». После этого можно выйти из мастера диаграмм. Чтобы придать диаграмме правильные очертания её нужно немного уменьшить по горизонтали. Вот, что в итоге у меня получилось.
Форма кардиоиды встречается не редко, самыми известными вещами, наверное, являются микрофоны и антенны с кардиоидной направленностью. Такая форма позволяет увеличить помехоустойчивость и сохранить достаточно большой угол для работы. В природе форму кардиоиды можно увидеть в отраженном свете от предметов напоминающих вогнутые зеркала (например, кольцо).
Изображение взято с сайта mathematische-basteleien.de
Ещё одна классическая и хорошо известная кривая, при помощи которой можно изобразить сердце, — это спираль Архимеда. Спираль Архимеда была описана, как вы понимаете, Архимедом в III веке до н.э., хотя достаточно точное её воспроизведение было и раньше. Формула спирали в прямоугольных координатах в параметрическом виде выглядит следующим образом:
Спираль, это естественно только один виток, поэтому для наших целей нам нужно будет взять две спирали: одну, закрученную по часовой стрелке, и второю, её близняшку, закрученную против часовой.
В первую ячейку второго столбца введём формулу для x: =A1*COS(A1), в первую ячейку третьего столбца введём формулу для y: =A1*SIN(A1), протянем их до конца множества. Теперь нам осталось только сделать график для нашей кривой.
Выделяем второй и третий столбец и запускаем мастер диаграмм, выбираем диаграмму XY(разброс), убираем легенду и перекрашиваем линию, то есть, шаги те же, что и для предыдущего графика. В центре мы получили маленькое красивое сердечко с подвеской:
Кроме сердечек спираль Архимеда используют для вычерчивания спиральных пружин, улиткообразных корпусов центробежных насосов, профилей кулачков в кулачковых механизмах.
Так как я обещал в начале статьи особо не занудствовать математическими терминами и выводами, то скажем просто: Эвольвента окружности, в данном контексте, представляет обобщённую форму спирали Архимеда :).
Если вам интересны трансцендентальные кривые и их свойства, я рекомендую обратиться к книге А. А. Совелова “Плоские кривые. Систематика, свойства, применения”, а тут я постараюсь продолжить повествование ненавязчиво и без лишних углублений в математику.
Параметрическая форма в прямоугольных координатах для эвольвенты окружности выглядит следующим образом:
В этой формуле у нас появилось 2 новых параметра: R и h.
Не тяжело догадаться, что при h < 0 и h = -R (например, R=1, h=-1) мы получим уравнение спирали Архимеда с иксами в обратном порядке для того случая, который был представлен выше.
«Играя» этими двумя параметрами, мы можем изменять вид линии, от абсолютного круга, до различных спиралей. Для нас же, наверное, будет интересен случай когда R = 1, а h = 0. То есть уравнение примет вид
Если вы читали статью с самого начала, то для вас не будет сложностью построить диаграмму. Множество, на котором я предлагаю строить ее с заданными параметрами: от -10,9 до 10,9. Итоговый вид её будет следующий:
Если менять параметры R и h, нижние «хвостики» у спиралей будут менять своё положение от пересечения, до образования разрыва между ними, поэтому найдя понравившуюся вам форму, придётся немного подкорректировать диапазон множества на котором она построена. Оставляю эту задачу вам.Эвольвента окружности часто используется при проектировании зубчатых колёс, также эвольвенту можно получить при сматывании нити с цилиндрической поверхности.
Вообще, спирали очень интересная тема, и не только с точки зрения геометрии, но и потому, что они постоянно встречаются в природе, примерами могут быть цветок подсолнуха, сосновая шишка и многое другое.
Это изображение сердца было предложено H. Dascanio в 2003 году. К сожалению, самые ранние источники указывают, что это была личная переписка, и более подробная информация появления этого сердца останется, наверное, загадкой. Формула, предложенная Dascanio, выглядит вот так:
В этой формуле есть натуральный логарифм и модуль числа. В записи LibreOffice Calc эти формулы буду выглядеть для x =SIN(A2)*COS(A2)*LN(ABS(A2)) и для y =(ABS(A2)(1/3))*(COS(A2)0,5). Диапазон значений параметра t должен быть от -1 до 1. При построении этого сердца есть один нюанс, хотя в общем, достаточным шагом будет 0,05, приблизительно с -0,2 и до 0,2 приближаясь к нулю нужно шаг уменьшать, создавая тем самым лучшее разрешение графика на этом интервале (в прилагаемом файле есть пример). В остальном это сердце строится как и предыдущие. Изображение, которое мы должны получить, выглядит так:
Ещё одним примером приближенного изображения сердца может быть найденное мной на просторах интернета (к своему сожалению, не могу вспомнить источник, если вы знаете, сообщите, пожалуйста) форма, достаточно близкая к сердцу, но немного вытянутая по вертикали. Его формула выглядит следующим образом
Строить его нужно на диапазоне от -π до π с шагом 0,01. Сердце получается немного продолговатым, но достаточно приемлемым по форме, если сравнивать с предыдущим вариантом:
Маленькое замечание, так как в этой диаграмме точки по x стоят у нас достаточно часто, то мы можем отсортировать их по иксам. В этом случае мы получим закрашенное сердечко:
Эта формула сердца была предложена Georg-Johann, одним из редактором Wikipedia, в июле 2009 года. Насколько я понял, оно было создано путем интерполяции.
На мой взгляд, из всего что я видел, подготавливаясь к этой статье, этот вариант является самым правильным и знакомым. Хотя, как говорится в поговорке: «на вкус и цвет все фломастеры разные».
Формула в параметрическом виде для полярных координат этого сердца выглядит следующим образом:
В LibreOffice Calc мы его строим так же, как и предыдущие, только диапазон будет от 0 до π, шаг я предлагаю сделать 0,1. Во втором столбце для координаты х вводим формулу =16*SIN(A1)3, а в третий столбец для y =13*COS(A1)-5*COS(2*A1)-2*COS(3*A1)-COS(4*A1). После чего выделяем второй и третий столбец и, как и в предыдущих случаях, строим диаграмму.
Кажется, я сумел сдержать свое обещание — не занудствовать. Я пишу эту статью накануне 14 февраля, дня, который многие называют днем влюблённых, и хотел бы добавить пару слов.
И простое изображение сердца, и формула, рисующая его на графике, никогда не заменит вашу любовь к близкому, так же как химическая формула никогда не заменит нам воду. Используйте их для того, чтобы порадовать и удивить любимого человека.
Но в настоящей формуле любви должно обязательно присутствовать уважение и понимание, причем с обеих сторон и, наверное, в первую очередь, с вашей. Но эти два параметра относятся уже к алгебре нечетких чисел, а значит выходят далеко за рамки этой статьи.
Приятного всем праздника и несгораемой любви в ваших сердцах.
“,”author”:”ÐвÑоÑ: tagezi”,”date_published”:”2015-02-12T00:00:00.000Z”,”lead_image_url”:”https://lh5.googleusercontent.com/proxy/K-laivJtCzwcF2V0s-7tE7l3qOUQm3gNSR0JfuJDukFy0dpTdOI5VrVDkQA8dvrjxUlx6tCajrZOOAHdHPBTjCr9wJfSyTl7ELosD8o1gD45Mmubgtrjc5HDuC6c3FuBCMtP=w1200-h630-p-k-no-nu”,”dek”:null,”next_page_url”:null,”url”:”https://infineconomics.blogspot.com/2015/02/formula-of-heart.html”,”domain”:”infineconomics.blogspot.com”,”excerpt”:”Ðа ÑÑÑ ÑÑаÑÑÑ Ð¼ÐµÐ½Ñ Ð¿Ð¾Ð´ÑолкнÑл инÑеÑÐµÑ Ð´Ð¾ÑеÑи к возможноÑÑи опиÑаÑÑ Ð¸Ð·Ð¾Ð±Ñажение ÑеÑдÑа ÑоÑмÑлами. ÐÑо не Ð½Ð¾Ð²Ð°Ñ Ñема, она Ñже доволÑно «ÑиÑок…”,”word_count”:1661,”direction”:”ltr”,”total_pages”:1,”rendered_pages”:1}
Источник: https://infineconomics.blogspot.com/2015/02/formula-of-heart.html
Источник: ososudahj.ru