501

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

чому площа трикутника з двома рівними сторонами дорівнює (a*b*sin(кут між сторонами))/2, а не (a*b)/2, де a і b - відомі сторони трикутника.
Адже будь-який трикутник - це половинка прямокутника. І навіть якщо прямокутник, насправді, не прямокутник, а паралелепіпед, то це ж той самий прямокутник, тільки нахилений трошки

502

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

І навіть якщо прямокутник, насправді, не прямокутник, а паралелепіпед, то це ж той самий прямокутник, тільки нахилений трошки

Якщо ми будемо просто нахиляти бічні сторони прямокутника, лишаючи дві інші горизонтальними, то його площа зменшуватиметься, доки «прямокутник» не розпластається в лінію. Щоб зберегти площу, треба не нахиляти його, а відрізати трикутний шматок з одного боку й приставити його до другого.

,_________
|\        |\
| \       | \
|  \      |  \
`---`--------

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

503

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

P.Y. написав:

І навіть якщо прямокутник, насправді, не прямокутник, а паралелепіпед, то це ж той самий прямокутник, тільки нахилений трошки

Якщо ми будемо просто нахиляти бічні сторони прямокутника, лишаючи дві інші горизонтальними, то його площа зменшуватиметься, доки «прямокутник» не розпластається в лінію. Щоб зберегти площу, треба не нахиляти його, а відрізати трикутний шматок з одного боку й приставити його до другого.

,_________
|\        |\
| \       | \
|  \      |  \
`---`--------

всі ті дні я був думав, доводити, чи не доводити ту формулу самотужки. З однієї сторони хтів був переконатись в тому сам, а з іншої, розумів, шо так не мона, бо на доведення всіх формул, що бачив, і ще побачу, життя не вистачить.
Але подумав, шо треба розібратись.
І, якщо часно, я сподівався, шо то все буде якось простіше. І, навіть, думав, шо вже кудись не туди мене занесло, але під кінець все прояснилось.
https://не-дійсний-домен/tE6ln/5bd14bf87d.png

504

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

Дивився вчора відюшку, і там було щось про зачислення в MIT (здається, для вчителів, типу, якщо не вирішив, то не прийнятий).
Так от, сама задачка.

Дано:
    У нас є прямокутний трикутник, з кута 90 градусів тирчить перпендикуляр до гіпотенузи (його назвемо P). Ну і цей перпендикуляр ділить гіпотенузу на дві частини. Менша частина дорівнює 9, а більша 16.

Знайти:
    Довжину перпендикуляру і катетів прямокутного трикутника.

https://не-дійсний-домен/tGBLF/f2d1912390.png

505

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

Шось ізі для зачислення в МІТ.

506 Востаннє редагувалося FakiNyan (30.01.2017 12:33:42)

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

Ну так от, я то дивився вже в годину ночі я самотужки розв'язати навіть не намагався, тому просто глянув рішення.
І там чувак сказав, що ось ці два маленьких прямокутних трикутничка, котрі мають перпендикуляр за спільний катет - споріднені! Чи то нє, вони подібні!
Чувак пояснив, що подібність їхня заключається в тому, що, по суті, в них рівні відношення між катетами та гіпотенузою, тобто, ці два трикутника просто дві версії одного трикутника, просто перша версія менша, а друга версія більша.
Далі він пояснив, як розв'язати ту проблему, і там все було просто https://www.youtube.com/watch?v=cvG77iyFvlU
Але от я не пойняв, звідкіля він взяв, шо ці два трикутничка подібні, бо на вічко того якби і не скажеш, і в школі я такого не вчив, наприклад. Тому я вирішив довести їх спорідненість.
І озьдо, що вийшло

https://не-дійсний-домен/tGBt3/ab4c41fa9a.png

Тут теж нічо складного немає, окрім оцих віднімань дужок.

Вже на (180-(ϴ+90)+90) я почав тупити, але якось пойняв, шо якщо ми віднімаємо від 180 суму ϴ+90, а потім додаємо 90, то це те ж саме, що й 180-ϴ. Але на 180-[180-ϴ] я конкретно завис.
Я ж не знаю, скільком дорівнює оте ϴ, одже 180-ϴ має залишатись (180-ϴ), але якщо подивитись на трикутник, то ми бачимо, що α==β, і обидва трикутничка мають кут в 90 градусів, одже, тут вже очевидно, що φ, котру я намалював невірно, дорівнює ϴ.

І тут до мене дійшло. що якщо (180-ϴ), по суті, ділить 180 на дві частини, перша частина дорівнює ось цьому (180-ϴ), тому що ϴ ми не знаємо, а друга частина має дорівнювати ϴ, і якщо ми віднімемо від 180 ось це ϴ, то вийде 180-ϴ, але якщо віднімемо від 180 ось те (180-ϴ), то залишиться ϴ.

От так і вийшло, що φ дорівнює ϴ.

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

507

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

p/9 = 16/p -> p = 12
Ну а далі теорема піфагора - перший катет 15 другий 20
Але щось воно дуже просто, мабуть першу пропорцію треба довести

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

508

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

0x9111A написав:

p/9 = 16/p -> p = 12
Ну а далі теорема піфагора - перший катет 15 другий 20
Але щось воно дуже просто, мабуть першу пропорцію треба довести

ну може то автор відео шось вигадав, чи то не для зачислення в МІТ, а просто щось пов'язане з мітом було

509

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

Трошки розібрався. Там ключова штука у скалярному добутку.
Робиться воно так:
спочатку малюємо згладжений градієнт від 0 до 1 і знову до 0 по x та y, і перемножаємо їх, тоді у нас виходить ось таке
https://не-дійсний-домен/vZb4v/b68f29a97b.png
Після цього беремо якийсь одиничний вектор, та множимо x полотна на x градієнта, і додаємо це до добутка y полотна і y градієнта, і множимо результат на те, що намальовано вище, і отримаємо таке
https://не-дійсний-домен/vZbwb/735067f787.png
ось тут градієнт тицяє кудись вправо і вниз, і  я ще нормалізував значення, аби 0 був сірим кольором, а 1 білим, а -1 чорним

але от далі вже йде фінал, котрого я так і не допер. Там треба якось поєднати купу ось таких зображень, чи то треба брати лише частину цих зображень, тут я не знаю.
Я спробував тупо накидати купку ось цих зображень і подивитись, що з того вийде, але вийшло щось не дуже
https://не-дійсний-домен/vZbEy/67e3f3acfb.png
Стаття, по котрій я то роблю

І озьдо код на пітоні

import sys
import random
import math
from PyQt4.QtGui import *
from PyQt4.QtCore import pyqtSlot

class Example(QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.gx=1
        self.gy=0
        self.lbl=QLabel()
        self.tlb = None
        self.image = QImage(512, 512, QImage.Format_RGB32)
        self.hbox = QHBoxLayout()
        self.pixmap = QPixmap()
        self.length = 1
        self.initUI()
        
    def mousePressEvent(self, QMouseEvent):
        px = QMouseEvent.pos().x()
        py = QMouseEvent.pos().y()

        size = self.frameSize()

        self.gx = px-size.width()/2
        self.gy = py-size.height()/2

        h = (self.gx**2+self.gy**2)**0.5

        self.gx/=h
        self.gy/=h

        #self.gx*=self.length
        #self.gy*=self.length

        self.fillImage()

    def wheelEvent(self,event):
        self.length+=(event.delta()*0.001)
        print(self.length)


    def initUI(self):    
        self.hbox = QHBoxLayout(self)
        self.pixmap = QPixmap()
        self.move(300, 200)
        self.setWindowTitle('Red Rock')
        
        self.addedWidget = None

        self.fillImage()

        self.setLayout(self.hbox)
        
        self.show()  

    def fillImage(self):

        step = 128

        for x in range(0, 512, step):
            for y in range(0, 512, step):

                rn = random.randrange(0, 360)
                self.gx = math.cos(math.radians(rn))
                self.gy = math.sin(math.radians(rn))

                for x1 in range(0, step):

                    t = -1+(x1/step)*2
                    color =  (1 - (3 - 2*abs(t))*t**2) 

                    for y1 in range(0, step):

                        t1 = -1+(y1/step)*2
                        color1 = (1 - (3 - 2*abs(t1))*t1**2)
                        result = (255/2)+(color * color1 * (t*self.gx+t1*self.gy) )*(255/2)

                        self.image.setPixel(x+x1, y+y1, qRgb(result, result, result))
                
        
        self.pixmap = self.pixmap.fromImage(self.image)

        if self.lbl == None:
            self.lbl = QLabel(self)
        else:
            self.lbl.setPixmap(self.pixmap)

        if self.addedWidget == None:
            self.hbox.addWidget(self.lbl)
            self.addedWidget = True

        '''if self.tlb==None:
            self.tlb = QLabel(str(self.gx)+" : "+str(self.gy), self)
            self.tlb.move(12,3)
        else:
            self.tlb.setText(str(self.gx)+" : "+str(self.gy))
        '''
        self.repaint()
        self.update()


def main():
    
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()    

510

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

Зустрічайте надлюдину... ФакіНяна.
https://replace.org.ua/extensions/om_images/img/593541c57c333/4977d1c225204baabff64539f5bd7aa0.png

Прихований текст
import sys
import random
import time
import math
from PyQt4.QtGui import *
from PyQt4.QtCore import pyqtSlot

class Example(QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.gx=1
        self.gy=0
        self.lbl=QLabel()
        self.tlb = None
        self.image = QImage(512, 512, QImage.Format_RGB32)
        self.hbox = QHBoxLayout()
        self.pixmap = QPixmap()
        self.length = 1
        self.initUI()
        
    def mousePressEvent(self, QMouseEvent):
        px = QMouseEvent.pos().x()
        py = QMouseEvent.pos().y()

        size = self.frameSize()

        self.gx = px-size.width()/2
        self.gy = py-size.height()/2

        h = (self.gx**2+self.gy**2)**0.5

        self.gx/=h
        self.gy/=h

        self.fillImage()

    def wheelEvent(self,event):
        self.length+=(event.delta()*0.001)
        print(self.length)


    def initUI(self):    
        self.hbox = QHBoxLayout(self)
        self.pixmap = QPixmap()
        self.move(300, 200)
        self.setWindowTitle('Red Rock')
        
        self.addedWidget = None

        self.fillImage()

        self.setLayout(self.hbox)
        
        self.show()  

    def fillImage(self):

        arr = []

        random.seed(2)
        for x in range(17):
            arr.append([])
            for y in range(17):
                arr[x].append(random.choice([[1,1], [1,-1], [-1, 1], [-1, -1]]))

        indexX=0
        indexY=0

        stepX = math.floor(512/16)
        stepY = math.floor(512/16)

        for x in range(0, 512, stepX):

            indexY=0

            for y in range(0, 512, stepY):

                tLeft = arr[indexX][indexY]
                tRight = arr[(indexX+1)][indexY]
                bLeft = arr[indexX][(indexY+1)]
                bRight = arr[(indexX+1)][(indexY+1)]

                print("tLeft x: {0} y: {1},  tRight x: {2}, y: {3}, bLeft x: {4} y: {5}, bRight x: {6} y: {7}".format(tLeft[0], tLeft[1], tRight[0], tRight[1], bLeft[0], bLeft[1], bRight[0], bRight[1]))

                for x1 in range(0, stepX):
                    t = (x1/stepX)
                    tSmooth =  6*t**5-15*t**4+10*t**3# (3 - 2*abs(t))*t**2

                    for y1 in range(0, stepY):

                        t1 = (y1/stepY)
                        t1Smooth = 6*t1**5-15*t1**4+10*t1**3#(3 - 2*abs(t1))*t1**2

                        topLeft = t * tLeft[0] + t1 * tLeft[1]
                        topRight = (-1+t) * tRight[0] + t1 * tRight[1]

                        botLeft = t * bLeft[0] + (-1+t1) * bLeft[1]
                        botRight = (-1+t) * bRight[0] + (-1+t1) * bRight[1]

                        vertLeft = topLeft*(1-t1Smooth) + botLeft*t1Smooth
                        vertRight = topRight*(1-t1Smooth) + botRight*t1Smooth

                        finalColor = vertLeft*(1-tSmooth) + vertRight*tSmooth

                        finalColor = (finalColor+1)*0.5

                        finalColor *= 255
                        
                        self.image.setPixel(x+x1, y+y1, qRgb(finalColor, finalColor, finalColor))

                indexY+=1
            print("", end="\n")
            indexX+=1
                
        
        self.pixmap = self.pixmap.fromImage(self.image)

        if self.lbl == None:
            self.lbl = QLabel(self)
        else:
            self.lbl.setPixmap(self.pixmap)

        if self.addedWidget == None:
            self.hbox.addWidget(self.lbl)
            self.addedWidget = True

        self.repaint()
        self.update()


def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()    

511

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

трошки додав функціоналу, тепер, коли ви клікаєте на віконце, воно додає до поточної картинки такий самий шум, тільки частота менша в 2 рази. В результаті виходе от таке
https://replace.org.ua/extensions/om_images/img/593541b02b94e/d9562322637947318135db1ca3bc3ee9.png
але це ніщо в порівнянні з тим, що ви можете отримати змінюючи логіку додавання шумів з різною частотою, як вам ось таке?
https://replace.org.ua/extensions/om_images/img/593541b02b94e/1c5c3e458d574689ba2d09c3c3352c56.png

Подякували: 0x9111A, ReAl, /KIT\3

512

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

код
import sys
import random
import time
import math
from PyQt4.QtGui import *
from PyQt4.QtCore import pyqtSlot

class Example(QWidget):

    def __init__(self):
        super(Example, self).__init__()
        self.freq = 256
        self.gx=1
        self.gy=0
        self.lbl=QLabel()
        self.tlb = None
        self.image = QImage(512, 512, QImage.Format_RGB32)
        self.hbox = QHBoxLayout()
        self.pixmap = QPixmap()
        self.length = 1
        self.initUI()
        
    def mousePressEvent(self, QMouseEvent):
        px = QMouseEvent.pos().x()
        py = QMouseEvent.pos().y()

        size = self.frameSize()

        self.gx = px-size.width()/2
        self.gy = py-size.height()/2

        h = (self.gx**2+self.gy**2)**0.5

        self.gx/=h
        self.gy/=h

        self.freq=math.floor(self.freq/2.0)
        if self.freq < 1.0:
            self.freq=1
        self.fillImage(True)

    def wheelEvent(self,event):
        self.length+=(event.delta()*0.001)
        print(self.length)


    def initUI(self):    
        self.hbox = QHBoxLayout(self)
        self.pixmap = QPixmap()
        self.move(300, 200)
        self.setWindowTitle('Red Rock')
        
        self.addedWidget = None

        self.fillImage(False)

        self.setLayout(self.hbox)
        
        self.show()  

    def fillImage(self, multiply):

        arr = []

        random.seed(2)
        for x in range(self.freq+1):
            arr.append([])
            for y in range(self.freq+1):
                arr[x].append(random.choice([[1,1], [1,-1], [-1, 1], [-1, -1]]))

        indexX=0
        indexY=0

        stepX = math.floor(512/self.freq)
        stepY = math.floor(512/self.freq)

        for x in range(0, 512, stepX):

            indexY=0

            for y in range(0, 512, stepY):

                tLeft = arr[indexX][indexY]
                tRight = arr[(indexX+1)][indexY]
                bLeft = arr[indexX][(indexY+1)]
                bRight = arr[(indexX+1)][(indexY+1)]

                #print("tLeft x: {0} y: {1},  tRight x: {2}, y: {3}, bLeft x: {4} y: {5}, bRight x: {6} y: {7}".format(tLeft[0], tLeft[1], tRight[0], tRight[1], bLeft[0], bLeft[1], bRight[0], bRight[1]))

                for x1 in range(0, stepX):
                    t = (x1/stepX)
                    tSmooth =  6*t**5-15*t**4+10*t**3# (3 - 2*abs(t))*t**2

                    for y1 in range(0, stepY):

                        t1 = (y1/stepY)
                        t1Smooth = 6*t1**5-15*t1**4+10*t1**3#(3 - 2*abs(t1))*t1**2

                        topLeft = t * tLeft[0] + t1 * tLeft[1]
                        topRight = (-1+t) * tRight[0] + t1 * tRight[1]

                        botLeft = t * bLeft[0] + (-1+t1) * bLeft[1]
                        botRight = (-1+t) * bRight[0] + (-1+t1) * bRight[1]

                        vertLeft = topLeft*(1-t1Smooth) + botLeft*t1Smooth
                        vertRight = topRight*(1-t1Smooth) + botRight*t1Smooth

                        finalColor = vertLeft*(1-tSmooth) + vertRight*tSmooth

                        finalColor = (finalColor+1)*0.5

                        red =0
                        green =0
                        blue =0

                        if multiply is True:
                            c = self.image.pixel(x+x1, y+y1)
                            color = qRed(c)/255.0
                            if finalColor>color:
                                finalColor = (finalColor+color)/2.5
                            else:
                                if finalColor<color:
                                    finalColor=(finalColor+color)/1.5

                        finalColor *= 255
                        
                        self.image.setPixel(x+x1, y+y1, qRgb(finalColor, finalColor, finalColor))

                indexY+=1
            #print("", end="\n")
            indexX+=1
                
        
        self.pixmap = self.pixmap.fromImage(self.image)

        if self.lbl == None:
            self.lbl = QLabel(self)
        else:
            self.lbl.setPixmap(self.pixmap)

        if self.addedWidget == None:
            self.hbox.addWidget(self.lbl)
            self.addedWidget = True

        self.repaint()
        self.update()


def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()    
Подякували: 0x9111A1

513

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

замутив те саме в юніті, і додав ще 1 вимір. А потім рухав вздовж осі Z і зберігав кожен кадр, вийшла анімація
https://www.youtube.com/watch?v=5cJ6mhnE7mA

514

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

Слава Україні!
https://replace.org.ua/extensions/om_images/img/5952bf6d3cdfa/unknown.png

515

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

Хмм, фігня вище більше відноситься до алгоритмів.

В мене тут таке питання.
Якщо уявити коло, і розгорнути його, то довжина має бути ж

2*радіус*Пі

І ми ж так само можемо розгорнути квадрат, і довжина тої лінії буде

сторона квадрата * 4

І з цього ж, як я думав, можна вивести формулу площі кола.

(2*радіус*Пі / 4)^2

Але реальна формула площі кола не схожа ні на це, ні на те, що показує wolfram alpha після спрощення
https://cdn.discordapp.com/attachments/333936584481177600/399944016554098688/unknown.png

Що я роблю не так?

516

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

Наївне припущення, що площі фігур співвідносяться пропорційно до квадратів їхніх лінійних розмірів :)
Це так, якщо фігури подібні. Але квадрат ніяк не подібний до круга.
Якщо я правильно зрозумів, що ви намагаєтеся робити, то проблема в тому, що у квадрата немає радіуса - тобто він є, але не постійний, а змінюється від a/2 до a*sqrt(2)/2 (a - сторона). І все, що можна з цього сказати - що площа кола буде визначатися певним середнім радіусом. Яким саме - біс його зна, але точно площа кола з довжиною, що дорівнює периметру квадрату буде знаходитися в межах від a^2 до 2a^2. Якщо обчислите за шкільною формулою, то це буде (4/Pi) a^2. Що це за середнє, що між 1 і 2 воно дає 4/Pi - біс його знає; якщо маєте час і натхнення, можете або порозводити ці матемасофії, або погуглити, хтось до вас це точно робив. Квадратурники - народ впертий.

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

517 Востаннє редагувалося ReAl (08.01.2018 20:20:06)

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

Ні, все не так :)

От візьмемо квадрат, надріжемо по діагоналях і розгорнемо периметр у пряму лінію.
Буде чотири таких копички висотою a/2, де a — сторона квадрата.
Якщо тепер взяти за їх вершиники і потягти у якийсь бік до краю паралельно основі, то трикутничи зіллються в один прямокутний трикутник з основою 4*a і другою стороною-висотою a/2.
Площа Sквадрата = (4*a * a/2) / 2= a2

Тепер розкатаємо круг, основа 2πr, додамо сторону-висоту r, щоб отримати трикутника
Площа Sкруга = (2πr * r) / 2= πr2

Подякували: koala, leofun01, FakiNyan, sensei4

518

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

p.s. Отой прямокутний трикутник зі сторонами 2πr і r легко отримати як limn→∞ від послідовності вписаних у коло (описаних навколо нього) правильних n-кутників, з якими зробили такі самі фокуси, як ото з квадратом.

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

519 Востаннє редагувалося FakiNyan (08.01.2018 21:53:04)

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

koala написав:

Наївне припущення, що площі фігур співвідносяться пропорційно до квадратів їхніх лінійних розмірів :)
Це так, якщо фігури подібні. Але квадрат ніяк не подібний до круга.
Якщо я правильно зрозумів, що ви намагаєтеся робити, то проблема в тому, що у квадрата немає радіуса - тобто він є, але не постійний, а змінюється від a/2 до a*sqrt(2)/2 (a - сторона). І все, що можна з цього сказати - що площа кола буде визначатися певним середнім радіусом. Яким саме - біс його зна, але точно площа кола з довжиною, що дорівнює периметру квадрату буде знаходитися в межах від a^2 до 2a^2. Якщо обчислите за шкільною формулою, то це буде (4/Pi) a^2. Що це за середнє, що між 1 і 2 воно дає 4/Pi - біс його знає; якщо маєте час і натхнення, можете або порозводити ці матемасофії, або погуглити, хтось до вас це точно робив. Квадратурники - народ впертий.

а що то за a*sqrt(2)/2 ?
ви ж маєте на увазі половину діагоналі квадрата? бо я тут щось таке рахую, і не сходиться
https://cdn.discordapp.com/attachments/333936584481177600/400012701046276099/unknown.png

520

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

ReAl написав:

Ні, все не так :)

От візьмемо квадрат, надріжемо по діагоналях і розгорнемо периметр у пряму лінію.
Буде чотири таких копички висотою a/2, де a — сторона квадрата.
Якщо тепер взяти за їх вершиники і потягти у якийсь бік до краю паралельно основі, то трикутничи зіллються в один прямокутний трикутник з основою 4*a і другою стороною-висотою a/2.
Площа Sквадрата = (4*a * a/2) / 2= a2

Тепер розкатаємо круг, основа 2πr, додамо сторону-висоту r, щоб отримати трикутника
Площа Sкруга = (2πr * r) / 2= πr2

зовсім не зрозумів, як то мона порізати по діагоналях, і отримати чотири копички по a/2