B-Spline – MATLAB Ödevi Yaptırma – MATLAB Analizi Yaptırma Fiyatları – MATLAB Örnekleri – Ücretli MATLAB Analizi Yaptırma – MATLAB Analizi Yaptırma Ücretleri
B-Spline
Ancak bu çerçeve içinde, spline fonksiyonlarının oluşturulması için birkaç farklı temel sistem vardır. En popüler olan B-spline tabanlı sistemi kullanıyoruz. Diğer olasılıklar M-spline’lar, I-spline’lar ve kesilmiş güç fonksiyonlarıdır.
İki uç temel fonksiyonunun yanı sıra, her bir temel fonksiyon sıfırdan başlar ve belirli bir düğüm konumunda, sıfıra geri düşmeden ve sağ sınıra kadar orada kalmadan önce bir tepe noktasına yükselir. İlk ve son temel fonksiyonlar, ilk ve son iç düğümden sırasıyla sağ ve sol sınırda bir değerine yükselir, ancak bunun dışında sıfırdır.
Merkezdeki temel fonksiyonlar sadece dört aralıkta pozitiftir, ancak ikinci ve üçüncü baz fonksiyonları sağdaki karşılıklarıyla birlikte sırasıyla iki ve üç aralıkta pozitiftir. Yani, tüm B-spline temel fonksiyonları, en fazla dört bitişik aralıkta pozitiftir. Bu kompakt destek özelliği, bu özelliğe sahip olmayan temel fonksiyonlar için K2 ile değil, sonuç olarak gereken çaba K ile orantılı olduğundan, hesaplama verimliliği için önemlidir.
Bir spline mertebesinin rolü, bir sinüs fonksiyonuna ve onun birinci türevine en iyi uyan, spline fonksiyonları olarak adlandırılan iki, üç ve dördüncü mertebeden spline temel fonksiyonlarının lineer kombinasyonlarını çizdiğimiz gösterilmektedir.
Bu temel sistemleri kuran üç R komutu şunlardır:
base2 = create.bspline.basis(c(0,2*pi), 5, 2)
base3 = create.bspline.basis(c(0,2*pi), 6, 3)
base4 = create.bspline.basis(c(0,2*pi), 7, 4)
(3.5) bağıntısından, her durumda üç iç düğüm kullanarak, spline bazının sırasını her artırdığımızda, temel fonksiyonların sayısını arttırdığımızı hatırlayın.
Sol üst panelde, sinüs işlevine en iyi uyan iki spline işlevi olan bir çokgen sırasını görüyoruz ve türevinin, bir adım işlevinin, sol panelde sinüsün türevine ne kadar zayıf uyduğunu görüyoruz. Panellerde sırayı artırdıkça, hem sinüse hem de türevine uyumun ve bu iki uyumun düzgünlüğünün arttığını görüyoruz.
Bezier and b spline
B-spline Python
Cubic b spline example
B-spline calculator
B-spline code
b-spline example
B-spline WebGL
cubic b-spline interpolation
Genel olarak, düzgün ve doğru türevlere ihtiyacımız varsa, spline’ın sırasını arttırmamız gerekir. Hatırlanması gereken yararlı bir kural, spline temelinin sırasını, kullanılacak en yüksek mertebeden türevden en az iki yüksek olacak şekilde sabitlemektir. Bu kurala göre, kübik spline temeli, türevlerinden herhangi birine bakmanız gerekmediği sürece iyi bir seçimdir.
Bir spline’ın mertebesi varsayılan olarak dörttür, kübik polinom segmentlerine karşılık gelir, ancak aynı düğüm konumlarına sahip ancak altı mertebeden bir temel sistem isteseydik, splinebasis = create.bspline’daki gibi ek bir argüman kullanırdık. Ek olarak, düğüm konumlarını eşit aralıklı olmayan bir şey olarak belirtmek istersek, işlev çağrısında create.bspline.basis(c(0,10) gibi bir komutla dördüncü bir argüman kullanırdık.
Herhangi bir tek spline temel fonksiyonunun yalnızca sınırlı sayıda aralıkta sıfır olmadığına dikkat edin; bu özellik, yalnızca yedinci temel işlevi çizmek için plot (splinebasis[7]) (R’de) komutunu kullanırsanız daha net görülebilir. Daha sonra, bir dereceli dört spline temel fonksiyonunun dört alt aralıkta sıfırdan farklı olduğunu görürsünüz; benzer şekilde, altı sıralı bir spline, altı alt aralıkta sıfırdan farklıdır. Bitiş spline’larının daha az sayıda aralıkta sıfırdan farklı olduğunu ortaya çıkarmak için bu çizim komutunda 7’yi 1 veya 2 olarak değiştirin.
B-spline tabanlı sistem, genellikle yararlı olan bir özelliğe sahiptir: herhangi bir t noktasındaki B-spline temel fonksiyon değerlerinin toplamı bire eşittir. Örneğin, ilk ve son temel fonksiyonların sınırlarda tam olarak bir olduğuna dikkat edin. Bunun nedeni, diğer tüm temel fonksiyonların bu uç noktalarda sıfıra gitmesidir. Ayrıca, her bir temel fonksiyon tek bir noktada zirve yaptığından, herhangi bir temel fonksiyonu çarpan bir katsayının değerinin, o fonksiyonun zirve yaptığı yerin yakınındaki spline fonksiyonunun değerine yaklaşık olarak eşit olduğu sonucu çıkar. Gerçekten de, bu tam olarak sınırlar için geçerlidir.
Spline temel fonksiyonları pek çok açıdan harika olsalar da, tanımlandıkları aralığın başlangıcına veya sonuna yakın verilere oldukça kararsız uyumlar üretme eğilimindedirler. Bunun nedeni, bu bölgelerde onları tanımlayacak verilerimizin bitmesidir, bu nedenle sınırlarda spline fonksiyon değerleri tamamen tek bir katsayı ile belirlenir.
Spline uyumlarının bu sınır kararsızlığı türev tahmini için özellikle ciddi hale gelir ve türevin mertebesi ne kadar yüksek olursa, davranışı iki sınırda o kadar vahşi olur. Ancak, bir Fourier serisi periyodik olduğu için bu sorunu yaşamaz; özünde, sağdaki veriler, soldaki eğriyi tahmin etmeye yardımcı olmak için etkin bir şekilde “sarılır” ve bunun tersi de geçerlidir.
Büyüme verilerini kullanacağımız yöntemlerle uydurmak için bir spline temeli oluşturalım. Düzgün ikinci türevler isteyeceğiz, bu yüzden sıra altı spline kullanacağız. Verilerde boy ölçümü için 1 ile 18 arasında değişen 31 yaş vardır ve bu örnekleme noktalarının her birine bir düğüm atmak istiyoruz. (3.5) bağıntısı, baz fonksiyonunun sayısının 29 + 6 = 35 olduğunu gösterir. Ölçüm yaşları vektör çağında ise, Matlab’da büyüme tabanını kuracak komuttur.
Fourier temelinde olduğu gibi, temel işlevleri dropind argümanını kullanarak bırakarak veya alt simgeleri kullanarak istediğimiz temel işlevleri seçerek bir temel tanımlamak için B-spline temel işlevlerinin alt kümelerini seçebiliriz.
t Aralığı ile İlgili Hesaplamalı Sorunlar
Bu bölümü, çok sayıda spline tabanlı fonksiyon kullanıyorsanız önemli olabilecek bir ipucu ile sonlandırıyoruz. Sonuçların doğruluğunun bir değeri ifade etmek için kullanılan bit sayısı ile sınırlı olduğu bilgisayardaki herhangi bir hesaplamada olduğu gibi, yol boyunca bir miktar doğruluk kaybolabilir. Bu bazen ciddileşebilir. Bir spline, bir dizi fark hesaplanarak oluşturulur.
Bunlar, özellikle farkı alınan değerler birbirine yakın olduğunda yuvarlama hatalarına eğilimlidir. Bundan kaçınmak için, her bir alt aralığın uzunluğu kabaca bire eşit olacak şekilde t’yi yeniden tanımlamanız gerekebilir. Her gözlemde bir düğüm atarsak 23 temel fonksiyon oluşturacağımız Şekil 1.6’da gösterilen yürüyüş verisi örneği için, aslında gösterildiği gibi 0’dan 1’e kadar süreyi 0’dan 20’ye çalıştırmak daha iyi olacaktır. . El yazısı örneği daha da kritiktir ve zaman birimini saniyeden milisaniyeye değiştirerek önemli miktarda yuvarlama hatasından kaçınabiliriz.
Öte yandan, [0,T] aralığı [0,2π]’den çok farklı değilse, Fourier tabanlı fonksiyonları içeren hesaplamalar daha doğru ve kararlı olma eğilimindedir. Örneğin, [0, 365] ile çalışırken hava durumu verilerinin analizlerinde hesaplama sorunlarıyla karşılaştık. Sonuçlar elde edildikten sonra, daha doğal bir aralığa çizim amacıyla yeniden ölçeklendirmek genellikle basit bir meseledir.