Python algoritma oluşturma

Başlatan muhammet467, 29 Mayıs 2014 - 19:27:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

muhammet467

Merhaba arkadaslar aranızda yeniyim. Hocamız python dilinde yazılımış bi kodun algoritmasını istedi.
def splinex(xi,a,b,c,d,x):
    i=0
    while x>xi[i]:
        i=i+1
        i=i-1
        xd=x-xi[i]
    return a[i]+xd*(b[i]+xd*(c[i]+xd*d[i]))



kod bu . Bunu programda yazıyorum calıstırıyorum ekrana hiç bir değer vermiyor . Nasıl calıstığı hakkında bilginiz var mı ? Hatam nedir ? Yardımcı olursanız cok sevinirm.

siberoloji

Bu bir polinom fonksiyonudur.
Ancak algoritmayı kurmanız için ekrana bir şey gelmesi gerekmiyor, hem zaten gelmez. Çünkü xi,a,b,c,d,x değerleri daha fonksiyona verilmemiş.
Sadece while kontrol işlevini algoritma ile göstereceksiniz sanırım.

muhammet467

aynen ekrana hiçbir şey gelmiyor. print xi veya baska bir değer yazdıgım zaman da invalid syntax diyor. Bunun algoritmasını oluştururken dışardan sayı almıyoruz sadece karsılastırma yapısı var . Cok kısır bi algoritma olmaz mı sizce de ?

siberoloji

Çok basit bir şey zaten. Kendiniz değer verseniz de matrislerle yapılıyor zannedersem.

muhammet467

Bu dil hakkında cok bilgim yok. Daha bugun ogrendim :D Siberoloji kardes bi deneme yaptım ama doğru mu cok emin değilim. Algoritması belirgin hatlara sahip değil. Bi kontrol eder misin  doğru mu değil mi diye ?

[eklenti yönetici tarafından silindi]

siberoloji

#5
def splinex(xi,a,b,c,d,x):
    i=0
    print ("i eşittir= ", i)
    while x>xi:
        i=i+1
        print("i eşittir=",i)
        i=i-1
        print ("i eşittir= ",i)
        xd=x-xi
        print ("xd x ile xi nin i ninci elemanı farkıdır. xd eşittir= ",xd)
    return a+xd*(b+xd*(c+xd*d))

Aralara print koymak bazen iyi gelir.

muhammet467

invalid syntax hatası veriyor .  :(

siberoloji

#7
Anladım. Pythonda print nasıl yazılıyordu ben de tam hatırlamıyorumda.
Yalnız şu konuda tereddür ettim. Bu while döngüsünde while ifadesinin hemen altındaki i=i+1 ifadesi çalışıp tekrar while doğru mu yanlış mı diye mi bakıyordu yoksa alttaki i=i-1 ifadesinden mi devam ediyordu. Böyleyse saçma olur döngü döner durur.



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Mayıs 2014 - 22:41:35

print komutlarını düzeltmeye çalıştım.

muhammet467

bencede ortada sacma bi döngü var kitaptaki örnek bu şekilde şaştım kaldım napıcam diye.

[eklenti yönetici tarafından silindi]

siberoloji

#9
Hocam şunu baştan göstersene yahu :)
Şimdi oldu işte
          >   while şartı x in değeri xi matrisinin i ninci elemanından büyük mü?          hayır--------------i yi bir artır.       /Evet-------------->i yi bir azalt x ile xi farkı xd
         | -------<---------------------------------------------------------------------------------------------------------------------------|

[eklenti yönetici tarafından silindi]

muhammet467

:D hehe cok sağol ya . simdi net seklini cizdim onu atıyorum.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 29 Mayıs 2014 - 23:01:38

hayırda mı i yi artırıyoruz ?

[eklenti yönetici tarafından silindi]

siberoloji

i=i+1 kutucuğunun çıkışını aşağıya değil tekrar x>xi kutucuğuna döndürmelisiniz.
Sadece hayır durumunda i=i-1 e gidecek.
while döngüsü x>xi olduğu sürece  i yi bir arttırıp dönmeli.

muhammet467

valla tam olarak anlamadım . cok uğrastın sağolasın .cok tesekkür ediyorum. x büyüktür xi den önce bi koşul daha mı koymak gerekir ? çizsen süper olur .

siberoloji

Kolay gelsin.

[eklenti yönetici tarafından silindi]

muhammet467

tam olarak bu galiba .

[eklenti yönetici tarafından silindi]

siberoloji


muhammet467

Cok sağol . Başka fikri olan varsa ve soylerlerse cok memnun kalırım  .

bytan

Umut en büyük kötülüktür; işkenceyi uzatır. - F.N.


Bir şey ne ise odur, bu kadar. Öyleyse, iki şey arasında bağdaşıklık varsa, bu aralarında iletişim kuruyorlar demek değildir.
"... kavrayışını bilgi ile derinleştir ..."
PF @ ST