Tablodan Python için formül yazma

Başlatan fghty, 15 Nisan 2012 - 03:47:12

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

fghty

Bu resimdeki tablodan formül gibi bişey çıkarıp pythonla koda dökmek istiyorum ama. Bunun için nasıl bbir yol izleyebilirim?


alquirel

Öncelikle başlık seçiminizde sorununuzu daha net anlatır ifadeler kullanmanız daha yerinde olacaktır.
Başlığınız bu hâliye çok alakasız duruyor. Çünkü sorununuz bir "formül" üretmek ve bunun için bize sunduğunuz şey "grafik" değil, bir "tablo".

Diğer yandan, açtığınız bu başlık, bir Python problemi üzerinde konuşmaktan çok bir zekâ problemi çözmeye benziyor.
Kaldı ki, her satır için şöyle kabaca artış miktarlarına baktım. Her sıra için ayrı bir düzen var, tek bir formül çıkarmak biraz zor gibi görünüyor.

fghty

Hocam başlık ismini düzelttim. Benim amacım bu tablodan formül veya formüller çıkararak pythonda kod yazarak oyuncunun seviye atlamasi için kaç maç gerektini ve oyuncunun kaç yaşına geleceğini hesaplayan bişey yapmak.

travego0403

Yapmak istediğiniz bir eğri uydurmak herhalde. Bunun için sayısal çözüm yöntemleri falan bilmeniz gerekir. Ara değerler için Inter-polasyon, tablonun dışındaki değerler için de Extra-polasyon falan yapılıyor.

Ama etliye sütlüye karışmadan yapayım derseniz bunun için hazır programlar vardır. Hatta Excelde bu özellik vardı. Google'a danışarak bu işlemin nasıl yapıldığını bulabilirsiniz. Kabaca değerlerin grafiğini çizdirip bu grafiğe bir fonksiyon fit ediyorsunuz. Bizim LibreOffice programına baktım ama bulamadım.

Tabi siz burada bütün verileri içeren tek bir fonksiyon bulmanız zor. Yani yetenek seviyesini ve yaşı gireyim sonucu versin. Bunun yerine her yaş için farklı bir fonksiyon bulabilirsiniz.

Umarım istediğiniz şeyi doğru anlamışımdır. :)
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

fghty

Hocam zaten niyetim tek formül bulmak değil. Pythonda kod yazarken işimi kolaylaştıracak şekilde bi kaç formül gibi şeyler çıkarmaya çalışıyorum. Bu şekilde de kod yazılabilir ama işlem baya uzun sürecek gibi.

Verdiğin  Inter-polasyon ve Extra-polasyon a bi inceleyeyim. :) Bende de open offis var ona da bi bakayım belki dediğin gibi tablo ile ilgili özellikler vardır.

travego0403

Dediğim gibi Inter-polasyon ve Extra-polasyon çok karışık işlemlerdir ve altından kalkamayabilirsiniz. Öğrenci misiniz veya bölümünüz nedir bilmiyorum. Bu yüzden hiç bulaşmayın derim. Hazır programlar ile fonksiyon fit etmek daha kolay. Şimdi Excel ile denedim ve fonksiyon fit edilmesi çok kolay bir şekilde gerçekleştiriliyor. Mesela tablonuzun ilk sütunu için bulduğum fonksiyon şu şekilde, değerleri şöyle aldım ve bu değerlere karşılık gelen fonksiyon
x -- f(x)
1  3,67
2  4,21
3  4,69
4  5,13
5  5,50
6  5,83
7  6,10
8  6,32

Bulduğum fonksiyon ise polinom  f(x) = -0,026*x^2+0,617*x+3,079

Hemen hemen tam değerler veriyor. Biraz daha yakın sonuçlar için biraz daha bakınmak lazım. Örneğin polinomsal bir denklem bu, üstel veya logaritmik bir denklem fit edilebilir veya denklemin derecesi arttırılabilir.
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

fghty

Aslında okuduğum bölümün programlama ile alakası yok ama ben sevdiğim için kendim uğraşıyorum. :)
Hocam genelde doğrusala yakın olan eğrilerde polinomsal denklem daha düzgün sonuç veriyor. Bide bu tablo için arkadaşın biri iç içe sölükle de bi kod yazabilirsin dedi o şekilde de olacak gibi.

cagriemer

Ya denildigi gibi her yetenek seviyesi icin ayri bir egri denklemi bulacaksiniz -ki bence polinom olmasina gerek yok-, ya da bu yuzeyi f(x,y)=z gibi bir fonksiyona oturtturacaksiniz. Ilk dedigimi Calc cok basit sekilde yapar. Ikincisi icin MATLAB'in sftool arac kutusu var. Fakat yazilim ucretli oldugundan okulun lisansi yoksa pek bulasmak istemeyebilirsiniz. GNU Octave'da benzer bir arac kutusu var mi ne yazik ki onu bilemiyorum.

travego0403

Bende programlama okumuyorum. Bu konuştuklarımızın doğrudan programlama ile alakası da yok. Okulda sadece 2 ders almıştım programlama üzerine. Bütün bu konuştuklarımızı bilme nedenim ise yukarıda yaptığımız işleme yakın işlemleri çok sık yapmamızdan kaynaklanıyor. Hemen meraklandırmadan söyleyeyim Fizikçiyim. :)

Fonksiyon fit etme değil ama şöyle işlemleri bir çok laboratuvarda deneylerde yapıyoruz.
Örneğin bir direncin değerini ölçmek istediğinde dirence 1 V gerilim uyguluyorsun devreden geçen akımı ölçüyorsun. 2 V uyguluyorsun devreden geçen akımı ölçüyorsun. Böyle bir kaç değer daha bulduktan sonra bu değerleri milimetrik kağıt dediğimiz yere işaretliyorsun ve bu noktalardan bir doğru geçtiğini görüyorsun. Bu noktaları birleştirdiğinde  elinde bir doğru oluyor. Bundan sonra istediğin gerilim değerine karşılık akımı bilebilirsin. Doğrunun eğimi ise sana direncin değerini verir.(R=V/I) Analitik geometriden de doğrunun denklemini bulabilirsin.(İki noktadan geçen doğru denkleminin bulunması, eğimi bilinen ve eksenlerden birini kesen doğrunun bulunması)
Mesela 1,2,3,4,5 V gerilim değerlerine karşılık akım değerlerini bularak bir grafik çizdin. Sen 1,5 V değerine karşılık gelen akımı bulmak istiyorsun. Gerilim ekseninden bir dikme çıkıyorsun doğruya ve kestiği noktadan da akım eksenine bir dikme iniyorsun. Bu bulduğun nokta istediğin sonuçtur. Burada yaptığın işlemin adı işte Inter-polasyon. Peki 10 V değerine karşılık akım değerini bulmak istediğinde, doğruyu biraz daha uzatıp yukarıda yaptığın işlemi tekrarlaman gerekir. Bu sefer yaptığın işlemin adı ise Extra-polasyon.

İç içe sölükle de ne demek istediğinizi anlamadım. :)
"Matematik bir dildir ve bu dilde şairlere fizikçi denir." Richard Feynman

canosayan

bu daha çok çok değişkenli regresyon analizi. bir parametrenin bağıl parametrelere göre tahmin edilmesi.

excel, openoffice gibi yazılımlar size grafik çizmenize ve parametrik polinomlar elde etmenizde yardımcı olabilir. python bu iş için çok dolaylı kalacaktır.
Chmod bizim işimiz.

fghty

İç içe sözlükten kastım şu şekilde olacak:

seviyeler = {1:{15:3.67, 15.56: 3.91, 16:4.18, 16.56:4.46, 17:4.76, 17.56:5.09, 18:5.43, 18.56:5.80},
2:{15:4.21, bu sekilde devam...}


Yani formül çıkarmak yerine bu şekilde sözlük kullanmak. :)

@travego0403: Bu arada hocam gene Fizik ile programlama arasında bağlantı kurulabilir ama sınıf öğretmenliği ile o iş biraz daha zor oluyor.  :D

@canosayan: Hocam regresyon analizi analizine biraz baktım ama bi türlü kavrayamadım.