C#'ta Sinüs Dalgası Çizme Programı

WhoWalksAlone

Kilopat
Katılım
13 Ocak 2014
Mesajlar
146
Çözümler
2
Yer
İstanbul
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar,

Bilgisayar mühendisliği öğrencisiyim ve bu tür bir ödevim var. Dille alakalı olarak bir kısıtlama bulunmuyor ama ben en kolay C#'ta yapılabileceğini düşündüğüm için C# kullanarak kodlamaya karar verdim programımı. Açıkçası daha önce çok fazla bu tür bir program yazdığım söylenemez. Hatta hiç yazmadım desem yeridir. Neyse konuya geçeyim direk.
Bana girdiğim parametrelere uygun bir şekilde sinüs fonksiyonunun grafiğini çizdiren bir program lazım şuanda. İnternetten araştırma yaptım ancak neredeyse hiçbir şey bulamadım. Konuyla ilgili bilgisi olan ya da yol gösterebilecek birileri varsa sevinirim. Yani en azından hangi kütüphaneleri kullanacağımı ya da nasıl bir mantıkla gerekli kütüphaneleri kullanacağımı söyleseniz bir şekilde yapabileceğimi düşünüyorum ancak bu kadarlık bilgiyi bile şuanda bulamadım internetten.

Bilgili olanlar yardımcı olurlarsa çok sevinirim. Herkese şimdiden teşekkür ediyorum.

Ek Bilgi:
Ödevim tam olarak bu değil arkadaşlar. Ben sinüs fonksiyonunun grafiğini çizdirebilirsem eğer daha sonra Fourier Dönüşümü yardımıyla karesel dalgalar elde etmeye çalışacağım. Ödevi veren hocamız daha önce kendisinin Visual Basic dilinde yazdığı programı gösterdi ve çok kolay olduğunu söyledi. C#'ta daha kolaydır umuduyla başladım çalışmaya ve araştırmaya ancak hala elimde bir şey yok.
 
Dostum gösterdiğin yol için teşekkür ederim ama Oxyplot denen şeyle alakalı en ufak bir fikrim bile yok. Kaldı ki biraz göz attım ancak hiçbir şey anlayamadım desem yeridir. Bana yardımcı olabilir misin bu konuyla alakalı olarak?
Yani şöyle diyeyim.
Şimdi ben Oxyplot'un sitesi üzerinden getting started dökümanlarını falan okuyarak uygulayarak öğrenmeye başladım. İşime kesin yarayacağını düşünüyorsan devam edeceğim. Daha önce WPF deneyimim falan hiç olmadı. Hatta C# deneyimim bile çok az.
Kesin bir bilgi verebilirsen bana ona göre bir yol izleyeceğim. Ancak şunu da belirtmeliyim ki elimdeki en iyi yol bu gibi görünüyor şuanda.
Tekrar teşekkür ediyorum yardımın ve cevabın için.
 
Gerçekten çok iyi olur.
Toplam sembolünün alt değeri n=1, üst değeri ise +sonsuz. İçeride ise (4V/nπ)*sin(nwt)
Fonksiyonumuz bu şekilde.
Burada V dediğim şey elde edeceğimiz karesel dalganın genliği oluyor. Biz belirliyoruz. N ise tek tek artıyor. Yani harmonik değerimiz. 1, 3, 5, 7 şeklinde bizim gireceğimiz sınır değere kadar gidiyor. t zaten zaman. Onu kafamıza göre belirleyecekmişiz.
 
(4V/nπ)*sin(nwt) yerine (4V/nπ)*sin(nπt) diyecektiniz diye düşünüyorum.
Kodlara burdan ulaşabilirsiniz. Oxyplot referanslarını eklemeniz gerekiyor. Çalıştıramazsanız geri dönüş yapın.

Kod:
        public PlotModel Model { get; private set; }

        public MainViewModel()
        {
            PlotModel çizim = new PlotModel()
            {
                Title = "Başlık",
                Subtitle = "Alt Başlık",
                PlotAreaBackground = OxyColors.White
            };

            //çizim.Series.Add(new FunctionSeries(Math.Sin, -10, 10, 0.1, "sin(x)"));
            çizim.Series.Add(new FunctionSeries(Fonksiyon, -10, 10, 0.1, "Kare Fonksiyon"));

            this.Model = çizim;
        }

        double Fonksiyon(double t)
        {
            double pi = Math.PI;
            double V = 1;
            double fonk = 0;

            for (int i = 0; i < 100000; i++)
            {
                int n = 2 * i + 1;
                fonk += 4 * V / (n * pi) * Math.Sin(n * pi * t);
            }

            return fonk;
        }

upload_2015-10-24_17-1-26.png


Bu da kitaptan Kare Fonksiyonu fourier ile nasıl fourier serisine dönüştürülür. Koddaki ikinci fonksiyon kitaptaki fonksiyonu yazdırıyor.

upload_2015-10-24_17-14-12.png


Bu tip işlemleri kod yazmadan gerçekleştirmek için Mathematica programını öneririm.
 
(4V/nπ)*sin(nwt) yerine (4V/nπ)*sin(nπt) diyecektiniz diye düşünüyorum.
Şu yukarıda belirttiğinz yerde π koyduğunuz yani benim w koyarak yanlış dediğimi düşündüğünüz yerdeki w omegayı yani açısal hızı gösteriyordu. Yani orada 2πF olacaktı. Şuanda bu mühim değil ama. Projenizi çalıştırmayı denemekteyim ancak bir türlü çalıştıramıyorum. Aynı şekilde zaten OxyPlot'un örnek uygulamalarını çalıştırmakta da sıkıntı yaşamıştım. Sırayla projeye eklemem gereken Nuget referanslarını söyleyebilir misiniz?
Bu arada gerçekten şuanda minnettarım size.
 
w olabileceğini düşündüm ama yazınızda bilgi vermediğiniz için π demek istediniz zannettim. Sonuçta değişen bir şey yok. 2F sabiti ile çarpım yaparsınız ya da çarpımdan π'yi çıkartıp w'yi eklersiniz.

Nuget komutu:
Install-Package OxyPlot.Wpf -Pre
 
Uyarı! Bu konu 8 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Yeni konular

Geri
Yukarı