Kazanimlar:
- Fiziksel bir hesabı yapay zekaya NumPy/SciPy koduna çevirtip kodu kendisi çalıştırarak sözlü tahmine değil deterministik çıktıya güvenebilme
- Sayısal bir kodu cevabı bilinen basit bir durumla test edip yakınsamasını kontrol ederek güvenilirliğini doğrulayabilme
- Değişken birimlerini koda yansıtıp sonucun birim ve mertebesini fiziksel olarak sağlayabilme
Fizikte çoğu problem elle çözülemez: bir integralin analitik (formülle, kesin) çözümü yoktur, bir denklem sisteminin kökü kapalı biçimde bulunamaz, ya da bir hesabın binlerce kez tekrarlanması gerekir. İşte burada sayısal yöntemler devreye girer: kesin formül yerine, bilgisayarın adım adım yaklaşık ama kontrollü doğrulukta hesap yapması. Bu ünitede, yapay zekayı (YZ) sayısal fizik hesapları için bir kod ortağı olarak nasıl kullanacağınızı, ürettiği kodu nasıl doğrulayacağınızı ve hangi tuzaklara düşmemeniz gerektiğini öğreneceksiniz. Fizikçinin standart araçları burada Python dili ve NumPy (sayısal diziler ve hızlı matematik kütüphanesi) ile SciPy (bilimsel hesaplama kütüphanesi; integral, kök bulma, optimizasyon içerir) olacaktır.
Neden YZ + Python, neden elle değil?
Elle sayısal hesap yapmak hem yavaş hem hataya açıktır. YZ, sizin fiziksel kurgunuzu birkaç saniyede çalışan bir Python koduna çevirebilir. Ama burada altın kural şudur: YZ kodu yazar, siz kodu çalıştırır ve sonucu fizikle doğrularsınız. YZ'nin "bu kod şunu verir" demesi bir tahmindir; kodu gerçekten çalıştırıp çıktıyı görmek ise deterministik bir gerçektir. Bir LLM, yazdığı kodun çıktısını kafadan "hesaplayıp" yanlış bir sayı söyleyebilir; oysa aynı kod çalıştırıldığında doğru sonucu verir. Bu yüzden asla YZ'nin sözlü olarak verdiği sayısal sonuca güvenmeyin — kodu çalıştırın.
Temel sayısal görevler ve YZ'nin rolü
Görev
Yöntem/araç
Fiziksel doğrulama
Belirli integral
scipy.integrate.quad
Sınır durumları, boyut analizi
Denklem kökü
scipy.optimize.brentq
Kökü yerine koyup sıfır mı diye bakma
Lineer denklem sistemi
numpy.linalg.solve
Çözümü sisteme geri koyma
Türev (sayısal)
Merkezi fark ya da numpy.gradient
Analitik türevle karşılaştırma
Toplu vektör hesabı
NumPy dizileri
Birim ve mertebe kontrolü
YZ bu araçların hangisinin uygun olduğunu önermede ve sözdizimini (kodun yazım kurallarını) doğru kurmada çok iyidir. Ama hangi yöntemin fiziksel olarak anlamlı olduğuna ve sonucun doğruluğuna siz karar verirsiniz.
Adım adım: doğrulanabilir bir sayısal hesap
1. Problemi ve birimleri netleştir. Örneğin: "0'dan sonsuza kadar e^(−x²) integralini hesapla; sonuç √π/2 ≈ 0,8862 olmalı." Beklenen sonucu (varsa) baştan yazmak, doğrulamayı kolaylaştırır.
2. YZ'den kodu iste, ama çıktıyı sen çalıştır. Kod bloğunu kopyalayıp kendi ortamınızda (Jupyter, Colab, yerel Python) çalıştırın.
3. Bilinen bir durumla test et. Kodu, cevabını zaten bildiğiniz basit bir durumla deneyin. Örneğin bir integral kodunu, ∫₀¹ x dx = 0,5 gibi elle bildiğiniz bir örnekle test edin. Kod bunu doğru veriyorsa güveniniz artar.
4. Yakınsama (convergence) kontrolü yap. Sayısal yöntemlerde adım sayısını artırınca sonuç sabit bir değere yaklaşmalıdır. Yaklaşmıyorsa yöntem uygun değildir.
5. Birim ve mertebeyi kontrol et. Sayısal sonucu her zaman fiziksel birim ve mertebeyle sağlayın.
İpucu: YZ'den kod isterken "sonucu bilinen bir analitik değerle karşılaştıran bir test satırı da ekle" deyin. Böylece kod hem hesabı yapar hem de kendini bilinen bir durumda sınar. Bu, hataları anında görünür kılar.
Üç mini vaka
Vaka 1 — Yanlış sözlü sonuç. Bir öğrenci, YZ'ye bir integral kodu yazdırdı ve YZ "bu kod yaklaşık 1,77 verir" dedi. Öğrenci kodu çalıştırdı: gerçek çıktı 0,886 idi. YZ, kodun çıktısını kafadan tahmin ederken hata yapmıştı; kod ise doğruydu. Ders: koda güven, sözlü tahmine güvenme.
Vaka 2 — Sayısal kararsızlık. Bir araştırmacı, YZ'nin yazdığı bir kök bulma koduyla bir denklemin kökünü aradı. Kod bir kök verdi ama araştırmacı kökü denkleme geri koyunca sonuç sıfır değil, oldukça büyük bir sayı çıktı. Sorun, başlangıç aralığının kökü içermemesiydi; YZ uygun aralığı varsaymıştı. Araştırmacı aralığı fiziksel bilgiyle düzeltti ve doğru kökü buldu.
Vaka 3 — Doğrulama kazandırdı. Bir mühendis, bir kirişin yük altındaki eğilmesini sayısal olarak hesaplayan bir kod istedi. Kod çalıştı ama sonuç mertebe olarak metrelerce eğilme gösteriyordu — bir çelik kiriş için imkânsız. Mühendis birimleri inceledi: YZ, elastik modülü GPa yerine Pa olarak almış gibi davranmış, bir 10⁹ çarpanını kaçırmıştı. Birim düzeltmesiyle sonuç milimetre mertebesine indi ve makul oldu.
Dört kopyalanabilir şablon
1) Doğrulama satırı içeren sayısal hesap:
Şu fiziksel hesabı yapan bir Python (NumPy/SciPy) kodu yaz: [problem].Tüm değişkenleri SI biriminde ve yorum satırıyla birimini belirterek tanımla.Kodun sonuna, sonucu bilinen bir analitik/basit değerle karşılaştıranbir kontrol satırı (assert veya print) ekle. Kodu ben çalıştıracağım;sen çıktıyı tahmin etme, yalnızca kodu ve beklenen mertebeyi yaz.
2) Yöntem seçimi danışması:
Şu problemi sayısal olarak çözmek istiyorum: [problem].Hangi SciPy/NumPy fonksiyonu uygun ve NEDEN? 2 alternatif yöntem öner,her birinin doğruluk ve kararlılık açısından artı/eksisini yaz.Fiziksel olarak hangi durumda hangisi tercih edilmeli, belirt.
3) Yakınsama kontrolü:
Aşağıdaki sayısal hesabın adım sayısını (ör. N=10, 100, 1000)artırarak sonucun nasıl yakınsadığını gösteren bir Python kodu yaz.Sonuçları bir tabloda yazdır. Yakınsama olmuyorsa bunun fiziksel/sayısalnedenini bir cümleyle açıkla. Kod: [buraya]
4) Birim denetimi:
Aşağıdaki kodda her değişkenin SI birimini yorum olarak ekle veson sonucun biriminin beklenen birimle (ör. metre, joule) tutarlıolup olmadığını denetle. Tutarsızlık varsa hangi satırda olduğunu göster.Kod: [buraya]
Zayıf prompt / Güçlü prompt
Zayıf: "Bu integralin sonucunu söyle: ∫₀^∞ x²·e^(−x) dx"
Sonuç: YZ kafadan bir sayı verir (belki doğru, belki yanlış); çalıştırılabilir, doğrulanabilir hiçbir şey yok.
Güçlü: "∫₀^∞ x²·e^(−x) dx integralini scipy.integrate.quad ile hesaplayan bir Python kodu yaz. Sonucu, bu integralin analitik değeri olan 2! = 2 ile karşılaştıran bir assert satırı ekle. Kodu ben çalıştıracağım."
Sonuç: Çalıştırılabilir kod, yerleşik doğrulama (analitik değerle karşılaştırma) ve güvenilir sonuç.
Sık yapılan hatalar
- YZ'nin sözlü sayısal sonucuna güvenmek. LLM kodun çıktısını kafadan yanlış tahmin edebilir. Daima kodu çalıştırın.
- Bilinen durumla test etmemek. Cevabını bildiğiniz basit bir örnekle sınamayan kod, gizli hata taşıyabilir.
- Yakınsamayı kontrol etmemek. Tek bir adım sayısıyla yetinmek, sonucun sayısal olarak güvenilir olup olmadığını gizler.
- Birimleri koda yansıtmamak. Değişkenlerin birimini yorumla belirtmemek, sessiz 10ⁿ hatalarına davet çıkarır.
- Kütüphane sürümü/varsayımlarını görmezden gelmek. YZ bazen var olmayan bir fonksiyon adı ya da eski bir sözdizimi üretebilir; çalıştırınca fark edilir.
Dikkat: Sayısal bir sonucu bir yayına, ödeve ya da tasarıma koymadan önce, kodu bağımsız bir bilinen durumla test edin ve sonucu birim/mertebe olarak sağlayın. Çalışan bir kod bile yanlış fiziği hesaplıyor olabilir; kodun çalışması, fiziğin doğru olduğu anlamına gelmez.
Özetle
Yapay zeka, fiziksel hesapları Python koduna çevirmede güçlü bir ortaktır; ama sözlü olarak verdiği sayılar birer tahmindir, gerçek değildir. Güvenli iş akışı nettir: problemi birimleriyle tanımla, YZ'ye kodu yazdır ama çıktıyı sen çalıştır, kodu bilinen bir durumla test et, yakınsamayı ve birimi kontrol et. Deterministik olan, çalıştırılan koddur; LLM değildir. Bir sonraki ünitede bu sayısal temeli, zamanla değişen fiziksel sistemlerin simülasyonuna taşıyacağız.
Uygulama görevi
Analitik çözümünü bildiğiniz bir fizik hesabı seçin (örneğin serbest düşen bir cismin belirli bir süredeki hızı ya da basit bir belirli integral). YZ'ye 1. şablonla bir Python kodu yazdırın; kodu kendiniz çalıştırın. Sonucu bildiğiniz analitik değerle karşılaştırın. Ardından adım sayısını veya bir parametreyi değiştirerek sonucun nasıl davrandığını gözlemleyin. 5-6 cümleyle not edin: kodun çıktısı sözlü tahminle uyuştu mu, bir birim/mertebe sorunu çıktı mı?
Kontrol listesi
- [ ] Problemi ve tüm değişkenlerin birimini netleştirdim.
- [ ] YZ'nin yazdığı kodu kendim çalıştırdım, sözlü sonuca güvenmedim.
- [ ] Kodu cevabını bildiğim basit bir durumla test ettim.
- [ ] Yakınsama ya da parametre duyarlılığını kontrol ettim.
- [ ] Sonucun birim ve mertebesini fiziksel olarak sağladım.
- [ ] Kullandığım kütüphane fonksiyonlarının gerçek ve güncel olduğunu doğruladım.