361

Re: Шлях на математичну вершину

http://yukhym.com/uk/diferentsiyuvannya … tsiya.html

Подякували: 221VOLT, FakiNyan, leofun013

362

Re: Шлях на математичну вершину

FakiNyan написав:

хоч вбийте, ніяк не можу зрозуміти, хто і як додумався, що якшо взяти значення однієї кривої за x, а іншої за y, то вийде коло

Уявіть довгу пружину чи якусь іншу просторову гвинтову криву аналогічної форми. Якщо дивитися на неї рівно верху, побачимо синусоїду*, збоку — косинусоїду*, з торця — коло.

*) або навпаки та ін. — коротше, дві синусоїдні криві, що відрізняються між собою на чверть періода.

Подякували: 221VOLT1

363

Re: Шлях на математичну вершину

коротше кажучи, розібрався я з синусами й косинусами

Також наше пойняв, що таке просте рівняння і параметричне.
Просте рівняння описує всю множину точок, котрі належать колу, це я зара кажу про x2+y2=r2
ну а параметричне має деяку змінну, за котру ми можемо тягати, і таким чином отримати конкретну точку, що належить якійсь кривій, наприклад.

Щодо синусу та косинусу. Чому воно малює коло?
Зараз я розумію, що для малювання замкнутого контуру нам необхідна циклічність, тобто, щоб підставляючи значення, що лінійно зростає, ми могли отримати однаковий результат.
Тобто, за допомогою синуса та косинуса ми не обов'язково можемо отримати коло. Я вірю, що якщо почарувати, то ми зможемо малювати квадрат за допомогою цих функцій.
Але чому ж воно малює саме коло?
Та тому що ці функції повертають правильні значення, необхідні для малювання кола. Якщо синус, чи косинус буде якимось більшим, чи меншим, то ми вже не отримаємо коло.
А як ми отримали такі дивовижні значення, що малюють рівнесеньке коло?
Так ми ж самі синуси з косинусами створили використовуючи коло та прямокутний трикутник. Тобто саме коло вже містить всі необхідні дані, а ми просто взяли потрібні нам дані, та привели їх в такий вигляд, аби можна було малювати коло. Зараз я вірю, що будь-яка форма має свої параметричні функції.
Нажаль, https://www.desmos.com/calculator не малює коло, якщо юзати параметричні функції. Так би я вам показав коло, що хвилюється
y=sin(t)+sin(t*10)/10
x=cos(t)

Я навіть був квадрата зробив, використовуючи ceil(), але там тільки 4 точки показується.

Тепер я хочу розібратись, як люди роблять гладеньку інтерполяцію за допомогою косинусу. Почну з лінійної інтерполяції, а потім буду думати, як би косинуса туди присунути

364

Re: Шлях на математичну вершину

намалював в matplotlib
https://не-дійсний-домен/re8j2/93b558e4db.png

import matplotlib.pyplot as plt
import numpy as np
import math

x = np.arange(0, 10, 0.1)

plt.plot(np.cos(x),np.sin(x)+(np.sin(x*10))/10, 'r', linewidth=2)
plt.axis([-2,2,-2,2])
plt.show()

365

Re: Шлях на математичну вершину

захтів був намалювати отаке коло
https://не-дійсний-домен/re8rU/0a23d053d8.png
тобто оці хвилі повинні бути повернути в центр, ну або від центру, тут всеодно

почав спершу розбиратись, як взагалі повернути якийсь вектор на якийсь градус, наче розібрався
https://не-дійсний-домен/re8qI/6a72ac6c1b.png

[img]https://не-дійсний-домен/re8qI/6a72ac6c1b.png[/img]

тепер думаю, що мені треба повернути сам графік синусу на потрібні градус, тобто для кожного градусу мені треба будувати новий графік, тіпо от так

https://не-дійсний-домен/re8zR/8a6cb47ab9.png
тілько оцих графіків буде стільки, скільки точок в колі, і я буду додавати значення того графіку до точки

366

Re: Шлях на математичну вершину

https://не-дійсний-домен/re96c/4bbeeecc99.png
https://не-дійсний-домен/re98F/313d65fa7e.png
https://не-дійсний-домен/re99Q/fb7c2fa672.png
https://не-дійсний-домен/re9hA/132b4ac878.png
https://не-дійсний-домен/re9us/ecf1c164a1.png

а як зробити те, шо я задумав?

Подякували: leofun01, 221VOLT2

367 Востаннє редагувалося leofun01 (17.09.2016 13:29:50)

Re: Шлях на математичну вершину

Попробував в gnuplot. Ніби нічого складного.

set parametric
show parametric
set samples 1024
set trange [0:2*pi]
ampl = 0.2
count = 12
width = 3
plot (ampl*sin(count*t)+1)*sin(t), (ampl*sin(count*t)+1)*cos(t) lw width
ampl = 0.1
count = 24
plot (ampl*sin(count*t)+1)*sin(t), (ampl*sin(count*t)+1)*cos(t) lw width

Отримано як було задумано:
https://i.ibb.co/9w8JyBQ/cnt12-amp02.png
https://i.ibb.co/HBQM0cj/cnt24-amp01.png

Подякували: ReAl, FakiNyan, 221VOLT3

368 Востаннє редагувалося FakiNyan (17.09.2016 13:30:35)

Re: Шлях на математичну вершину

оцього я вже не розумію...
але гляньте, шо ще вийшло
https://не-дійсний-домен/receP/86dd1aa89c.png

Подякували: leofun011

369

Re: Шлях на математичну вершину

Фігура Лісажу, але у трохи перекошеній системі координат.

Подякували: leofun01, FakiNyan, 221VOLT3

370 Востаннє редагувалося ReAl (17.09.2016 14:19:17)

Re: Шлях на математичну вершину

FakiNyan написав:

Щодо синусу та косинусу. Чому воно малює коло?

by definition
Синусом та косинусом кута називаються довжини катетів прямокутного трикутника з цим кутом, гіпотенуза якого дорівнює 1.
Тобто один кут-кінець гіпотенузи у початок координат, один катет кладемо на вісь Х, другий кінець гіпотенузи женемо по колу радіуса 1. Катети дадуть синус і косинус, з кожним новим обертом повторюючи картинку. Якщо тепер зробити навпаки, скласти отак синус і косинус (пробігтися парами катетів), то другий кінець гіпотенузи просто вимушений описати коло.
Див другу картинку у статті про тригонометричні функції.

371

Re: Шлях на математичну вершину

ReAl написав:
FakiNyan написав:

Щодо синусу та косинусу. Чому воно малює коло?

by definition
Синусом та косинусом кута називаються довжини катетів прямокутного трикутника з цим кутом, гіпотенуза якого дорівнює 1.
Тобто один кут-кінець гіпотенузи у початок координат, один катет кладемо на вісь Х, другий кінець гіпотенузи женемо по колу радіуса 1. Катети дадуть синус і косинус, з кожним новим обертом повторюючи картинку. Якщо тепер зробити навпаки, скласти отак синус і косинус (пробігтися парами катетів), то другий кінець гіпотенузи просто вимушений описати коло.
Див другу картинку у статті про тригонометричні функції.

ну я  там написав був, що зрозумів це вже

372

Re: Шлях на математичну вершину

FakiNyan написав:

ну я  там написав був, що зрозумів це вже

Ой, це я сьогодні капітально неуважний. Тут відповів на неактуальне запитання, в іншому місці — на інше запитання.

373

Re: Шлях на математичну вершину

ReAl написав:
FakiNyan написав:

ну я  там написав був, що зрозумів це вже

Ой, це я сьогодні капітально неуважний. Тут відповів на неактуальне запитання, в іншому місці — на інше запитання.

нічого страшного, з усіма буває

374 Востаннє редагувалося leofun01 (17.09.2016 22:54:54)

Re: Шлях на математичну вершину

Взяв за основу наведений код.

import matplotlib.pyplot as plt
import numpy as np
import math

t = np.arange(0, 2*math.pi, 0.01)
ampl = 0.2
count = 8
width = 3

plt.plot(
    (ampl * np.cos(count * t) + 1) * np.cos(t),
    (ampl * np.cos(count * t) + 1) * np.sin(t),
    'r', linewidth = width)
plt.axis([-2,2,-2,2])
plt.show()

Виглядає нормально.

Подякували: ReAl1

375

Re: Шлях на математичну вершину

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

plt.plot(np.sin(t)+(np.sin(t*10)/10)*np.cos(t), np.cos(t)+(np.sin(t*10)/10)*np.cos(t),'r', linewidth = width)

і в мене вийшло ось це
https://не-дійсний-домен/rfgC0/65743c5d18.png

Подякували: leofun011

376 Востаннє редагувалося FakiNyan (18.09.2016 12:05:25)

Re: Шлях на математичну вершину

тоді я подумав - може потрібно до синусу додавати синус, а до косинусу косинус, і не множити на косинус, типу так

plt.plot(np.sin(t)+(np.sin(t*10)/10), np.cos(t)+(np.cos(t*10)/10),'r', linewidth = width)

і в мене вийшло це
https://не-дійсний-домен/rfgGv/b7e9c3333a.png
і я зрозумів, чому воно так - тому що маленький і частий синус додається до маленького і частого косинусу, і ми отримуємо маленькі і часті круги
upd: от тут мені ще незрозуміло, чому воно виглядає саме так, а не так, як я хтів зробити

Подякували: leofun011

377

Re: Шлях на математичну вершину

я так розумію, по ідеї там повинні бути саме кільця, але щось відразає ту частину, котра всередині великого кільця

378 Востаннє редагувалося FakiNyan (25.09.2016 20:25:50)

Re: Шлях на математичну вершину

в деякому сенці я був правий від самого початку  8)
https://не-дійсний-домен/rnwGc/bf21b2b71b.png

import numpy as np
import matplotlib.pyplot as plt
import math

x = np.arange(0,math.pi*2,0.01)

plt.plot(np.cos(x)+np.cos(x*20)/60, np.sin(x)+np.sin(x*20)/60)

plt.show()
Подякували: leofun011

379 Востаннє редагувалося leofun01 (26.09.2016 02:38:16)

Re: Шлях на математичну вершину

Параметричне рівняння кола (в координатах xOy) має вигляд:
x = r * cos(t);
y = r * sin(t);
t ∈ [c; c + 2 * π];
r, c ∈ ℝ.

де r - радіус кола, а c визначає, з якого кута починається (і закінчується) малювання кола.

Якщо потрібно намалювати "хвилі по колу", щоб вони були напрямлені до/від центру кола, то треба змінювати радіус кола під час малювання.
Значить в рівняннях потрібно r замінити на (r + ampl * cos(a)), де ampl - амплітуда коливань (висота хвиль), а a - кут, який дає кількість коливань (кількість хвиль).
Амплітуда - це просто число, яке ми визначаємо, як захочемо.
З кутом трохи складніше. Якщо cos(a) має давати кількість хвиль, то кут (a) має змінюватись, і єдиний параметр, який змінюється в рівняннях - t. Значить a має бути залежним від t, і найпростіше встановити лінійну залежність
a = count * t
де count ∈ ℝ, але якщо count не буде цілим числом, то хвильки на кінцях не зійдуться (або зійдуться не гладко). Тому краще буде count ∈ ℕ і це буде кількість хвиль на колі.
От і получились рівняння:
x = (r + ampl * cos(count * t)) * cos(t);
y = (r + ampl * cos(count * t)) * sin(t);
t ∈ [c; c + 2 * π];
r, c, ampl ∈ ℝ;
count ∈ ℕ.

В моїх прикладах радіус = 1, c = 0, x і y можна міняти місцями, а для коливань радіуса можна використовувати будь-яку періодичну функцію (не тільки cos).

Подякували: 221VOLT, FakiNyan2

380

Re: Шлях на математичну вершину

капець, про зміну радіусу я взагалі не подумав, думав лише - як нам тре змінити оригінальний синус з косинусом, аби разом це давало потрібну форму

Подякували: leofun011