Hesaplamayı Programlama Anlayışınızla Hissedin

Yayınlanan: 2021-07-08

Kod yazabilen insanların matematikten daha karmaşık kavramları anlama becerisine sahip olduklarına inanıyorum. Hala matematikle mücadele eden birçok yetenekli programcının olmasının bir nedeni, zor olması değil. Bunun nedeni çoğunlukla bize yanlış şekilde öğretilmiş olmasıdır (birçok başka konu ile birlikte).

Hayatınızda biraz kodlama yaptıysanız – hatta asal sayılar üretmek gibi bazı oyuncak alıştırmaları bile yaptıysanız, matematikte olan benzer şeyleri zaten yapmış olabilirsiniz, ancak hiçbir zaman ilişki kurma şansınız olmadı.

Bu yazının amacı size ne matematik ne de programlama öğretmek değil, bazı noktaları birleştirmenize yardımcı olmaktır.

Birazdan kodlama kısmına geleceğim. Ama ondan önce biraz arka plan vermeme izin verin.

Değişim oranı

Diferansiyel hesap “değişim oranı” hakkında konuşur. Bunun ne anlama geldiğini anlamaya çalışalım.

(x) değişkenindeki bir değişiklik için, bir fonksiyonun değişim oranı, basitçe, fonksiyondaki değişimin x'deki değişime bölümüdür. Gerçek sayılarla görselleştirelim:

2 nokta x=2 ve x=6 ve bir fonksiyon y=f(x) = x² düşünün.

Ayrıca, dx = x eksenindeki bu 2 nokta arasındaki mesafeyi göz önünde bulundurun. Ve dy , bu x değerleri için y değerleri arasındaki mesafedir.

O halde, y'nin x=2'den x=6'ya değişim oranı

Matematik resmi 01

Türev

Şimdi — türev dy/dx, x'teki sonsuz derecede küçük bir değişiklik için y'deki değişim oranıdır. Bu mesafe (6–2=4) sonsuz küçük, hatta yakın bile olmadığı için yukarıdaki denkleme türev diyemeyiz. Şimdilik 0.1 gibi daha küçük bir sayı seçelim.

x = 0 olduğunda, y = x² = 0² = 0.

Pozitif yöne en yakın komşu, x = 0.1. Orada y 0.1² = 0.01 olur.

Yani,

Matematik resmi 02

Bir kez daha deneyelim. 0.1'in pozitif yöne en yakın komşusu, x = 0.2. Böylece y, 0,2² = 0,04 olur. Yani,

Matematik resmi 03

İşlemi birkaç kez daha tekrar edersek, elde ettiğimiz şey şudur:

Matematik resmi 04

Oynamak isterseniz excel dosyası burada.

dx (x eksenindeki 2 bitişik nokta arasındaki kurgusal sonsuz küçük mesafemizdir) bağlamımızda 0,1'dir.

x buna göre artıyor.

y sadece x²'dir.

dy , 2 bitişik y değeri arasındaki mesafedir. Örneğin, x= 0.1 olduğunda, mevcut y (0.01 ) ile sonraki y (0.04) arasındaki mesafe 0.03'tür — yani, x=0.1'de dy 0.03'tür.

dy/dx , dy bölü dx'tir.

dy/dx / x , dy/dx'in x'e bölümüdür.

Şimdi, x arttıkça, son satırın 2'ye yaklaştığına dikkat edin, bunun anlamı — x²'nin x'e göre değişim hızı, x'in iki katına, yani 2x'e yaklaşıyor.

x²'nin x'e göre türevini hatırlıyor musunuz? 2 kere! Bir bağlantı mı buluyorsun?

Kodlama Süresi

Şimdiye kadar tartıştığımız şeyleri kodda deneyelim.

Python'un zaten kurulu olduğunu varsayarsak, terminalde şunu çalıştırın:

pip kurulumu matplotlib

Bundan sonra aşağıdaki Python kodunu çalıştırın:

Burada:

x : 0'dan 9'a kadar olan sayıları içerir.

y : başka bir dizi, her eleman karşılık gelen x elemanının karesidir

dy : Sıfırlarla başlatılan başka bir dizi. Bu diziye y-mesafelerini koyacağız.

dydx : Sıfırlarla başlatılan başka bir dizi. Her noktanın dy/dx değerini içerecektir.

dx : Oldukça açık — adım boyutudur. SIZE arttıkça azalan 2 ardışık sayı arasındaki mesafe. BOYUT = 10 ise, dx = 1. BOYUT = 100 ise, dx = 0.1.

İlk olarak, her nokta için dy türetiyoruz. Sonra ondan dydx'i hesaplıyoruz.

Dikkat edin:

Matematik resmi 05

Burada ilk ve son değerleri atlıyoruz. x'in ilk değeri, sıfır bölme hatası üretecek olan 0'dır. Ve dy'nin son değerine sahip olmadığımız için dy/dx'in son değerini hesaplayamayız - çünkü burada sahip olmadığımız son kullanılabilir y değerinin yanında gerekir.

Her şey yolunda giderse, bu grafiği alacaksınız:

matematik grafiği

Senaryodan ne anlıyorsun

Gördüğünüz gibi, grafik 2'ye yaklaşıyor. SIZE değerini artırın (dx'in alt ayarı anlamına gelir) ve grafiğin 2'ye nasıl daha hızlı yaklaştığını görün.

İkinci Türev

Buraya kadar geldiğinize göre, size herhangi bir mertebenin türevi için sezgiyi verecek olan ikinci türevi gerçekleştirmek için sadece birkaç adım kaldı.

Hatırladığınız gibi, ikinci türev, birinci türevin x'e göre değişim oranıdır. Basitçe söylemek gerekirse - ikinci türevdeki dy/dx, birinci türevdeki y gibidir.

Yukarıdaki kodda aşağıdaki değişiklikleri yapalım:

2 dizi daha bildirin:

d2ydx2 : İkinci türevi temsil edecek olan:

Matematik resmi 06

Distance_dydx: 2 bitişik nokta arasındaki dy/dx değeri arasındaki mesafeyi temsil etmek için

İşte ikinci türev için tam kod:

For döngüsünde dydx'i hesapladıktan sonra ikinci türevi hesaplamak için başka bir döngü çalıştırıyoruz. Akıllıca bir kodlamayla, aynı döngüde ikinci türevi hesaplayabiliriz (bir alıştırma olarak deneyin) - ancak netlik için onları burada ayrı tuttum.

Ayrıca şuna dikkat edin:

Matematik resmi 07

Birinci türevde yaptığımız gibi burada da bazı değerleri atlıyoruz. Sondan ikinci değer, hesaplayamadığımız son "birinci türev" değerini gerektireceğinden (yukarıda açıklandığı gibi bunun için gerekli y değerine sahip olmadığımız için) son 2 değer atlanmıştır. 3. türev durumunda son 3 değeri çıkarmamız gerektiği anlamına mı geliyor?🤔 - bu sizin bulmanız için.

İşte çıktı grafiği:

Matematik grafiği 02

Burada ne görüyoruz?

Liseden bildiğiniz gibi:

Matematik resmi 08

Şimdi, yukarıdaki koddan da görebileceğiniz gibi, ikinci türev çoğunlukla sabit kalıyor ve SIZE'ı artırmaya devam ederseniz - 2'ye yaklaşıyor!

Değişim oranı neden önemlidir?

Merak ediyor olabilirsiniz:

— Neden tüm bu nahoş dertlerden geçiyoruz? Değişim oranından veya türevden hangi yararlı bilgileri alıyoruz?

— Neden herhangi bir miktar için değişim oranı ile gidemiyoruz? Neden sadece sonsuz derecede küçük? Daha büyük değerlere göre değişim oranından bulunamayan, sonsuz küçüklükteki değişim oranından hangi bilgileri elde ederiz?

- Bu son derece küçük şey bir hack gibi mi görünüyor? Yukarıda bazı küçük sayılarla çalıştık - ama kesinlikle sonsuz derecede küçük değil.

Devam etmeme izin versem, bu makalenin uzunluğunu görerek uzaklaşırdın ve bu kadar ileri gitmezdin. Belki başka bir gün bu soruları ele alırız 😀.