Parabolik eğri oluşturma formülü nedir?

Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba,

Ekli dosyada 200 nokta verisi var. Bu verilerden 1. şekildeki grafik oluşuyor.
Verileri otomatik düzenleyerek yine 200 noktada 2. şekildeki parabolik eğriyi gibi grafiği oluşturmak istiyorum.
Formülü oluşturmak konusunda yardıma ihtiyacım var.
Makro , formül yada bu konuda bilgi olabilir.

Dosya harici linki;
https://we.tl/t-JBG7OHJLSi

Teşekkür ederim.


221669
 

Ekli dosyalar

Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
.

Dosyanız ekte.

.
Bilgi için teşekkür ederim.
Bellki de tam ifade edemedim.
Amacım grafik üzerinde bir eğri değil de grafiği eğri gibi oval şekilde alabilmek.
Verilen değerleri bir formül yada işlem ile değiştirerek, keskin köşeli değilde oval şekilde sinüs gibi
 
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Almak istediğim sonucu tekrar düzenledim.

221672
 
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Merhaba;

Grafikte Türü olarak " Düzgünleştirilmiş Çizgileri Olan Dağılım" seçin.

Birde arka arkaya yenilenen değerleri kaldırın ( bunun için üstadlardan biri kod yaabilir )

21 70
68 65 gibi


olsun arası silsin sonuçta grafik arası aynı değer olduğundan anlam ifade etmez

Grafik istediğiniz gibi çıkar.

Sürekli aynı değerden eğri malesef oluşmaz. 21 den 67 ye kadar 70 var parabol eğrisi oluşmaz
 
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba;
Grafikte Türü olarak " Düzgünleştirilmiş Çizgileri Olan Dağılım" seçin.
Birde arka arkaya yenilenen değerleri kaldırın ( bunun için üstadlardan biri kod yaabilir )
21 70
68 65 gibi
olsun arası silsin sonuçta grafik arası aynı değer olduğundan anlam ifade etmez
Grafik istediğiniz gibi çıkar.
Sürekli aynı değerden eğri malesef oluşmaz. 21 den 67 ye kadar 70 var parabol eğrisi oluşmaz
Tüm değerlerin vermiş olduğum şekilde olması gerekiyor.
200 nokta var ve her noktanın da aynı olsa bile bir değeri var.
200 noktadaki değerleri bir hesaplama ile yeniden hesaplamam lazım ki ikinci şekilde olduğu gibi bir eğim kazandırayım.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Dosyanız ektedir.
Sırasıyla yapılan işlemler:
Grafiğe eğilim çizgisi ekleme (Polinom 6 numara).
Grafik üzerinde denklem görüntüleme.
Eğilim çizgisi etiketini sayı olarak biçimlendirip, ondalık basamak sayısını artırma.
Makro ile denklem metnini formüle dönüştürüp hücreye uygulama.
Yeni oluşan verilerle grafik çizme.
 

Ekli dosyalar

Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba,
Dosyanız ektedir.
Sırasıyla yapılan işlemler:
Grafiğe eğilim çizgisi ekleme (Polinom 6 numara).
Grafik üzerinde denklem görüntüleme.
Eğilim çizgisi etiketini sayı olarak biçimlendirip, ondalık basamak sayısını artırma.
Makro ile denklem metnini formüle dönüştürüp hücreye uygulama.
Yeni oluşan verilerle grafik çizme.
Merhaba,

inceleyip bilgi veririm.
Teşekkür ederim.

Saygılarımla
 
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Merhaba,
Dosyanız ektedir.
Sırasıyla yapılan işlemler:
Grafiğe eğilim çizgisi ekleme (Polinom 6 numara).
Grafik üzerinde denklem görüntüleme.
Eğilim çizgisi etiketini sayı olarak biçimlendirip, ondalık basamak sayısını artırma.
Makro ile denklem metnini formüle dönüştürüp hücreye uygulama.
Yeni oluşan verilerle grafik çizme.
@ÖmerBey, evet istediğim çalışma bu şekilde.

İdris bey ve sizin verdiğiniz bilgilerden anladığım kadarı ile Polinom ile ilgili araştırma yapmam gerekiyor.

Yardımcı grafik kullanmadan denklemi oluşturabilirmiyiz.
Denklemdeki ondalıklı sayılar, yardımcı grafikteki polinom hesabı nedeni ile sanırım girilen verilere göre değişiyor.
C sütununu oluşturmak için kullanılan formülü benim vba içinden oluşturmam gerekiyor.
Bu değişimi vba hesaplama ile oluşturabilir miyiz.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Asri Hocam,
Şimdi gördüm. İstediğiniz grafik 4. derece polinomiyal fonksiyon. y=ax3+bx2+cx+d şeklinde. Şimdi çıkmak zorundayım. Gelir gelmez size örneklerini göndereceğim.
Saygılarımla
 
Katılım
21 Aralık 2016
Mesajlar
726
Excel Vers. ve Dili
Office 365 TR
@ÖmerBey, evet istediğim çalışma bu şekilde.

İdris bey ve sizin verdiğiniz bilgilerden anladığım kadarı ile Polinom ile ilgili araştırma yapmam gerekiyor.

Yardımcı grafik kullanmadan denklemi oluşturabilirmiyiz.
Denklemdeki ondalıklı sayılar, yardımcı grafikteki polinom hesabı nedeni ile sanırım girilen verilere göre değişiyor.
C sütununu oluşturmak için kullanılan formülü benim vba içinden oluşturmam gerekiyor.
Bu değişimi vba hesaplama ile oluşturabilir miyiz.
Selamlar,

Yardımcı grafik kullanmadan denklemi oluşturabilirmiyiz..
Evet oluşturabilirsiniz...

Formül :
=İNDİS(DOT(bilinen_y;bilinen_x;{katsayı.1; katsayı.2;…..;katsayı.n-1});katsayı_no)

Not :
Formülde diziyi ben [katsayı.1;katsayı.2....katsayı.n-1} olarak yazdım. Aslında Dizi 1 den polinom derecesine kadar olan dizidir.
Yani 6. derece polinom için {1;2;3;4;5;6} şeklindedir....

Hassasiyet açısından 6. derece polinomu öneriyorum... 6.. derece için formülü açıklarsam

x değerleri A2:A13
y değerleri B2:B13 de olsun...

6. derece polinom genel denklemi
y = ax⁶ + bx⁵ + cx⁴ + dx³+ ex² + fx + g
şeklindedir.
Burada 1. katsayı : a, 2. katsayı : b,......6. katsayı : f ve 7. katsayı : g

bilinen_y : B2:B13
bilinen_x : A2:A13 olduğuna göre

a katsayısı için : =İNDİS(DOT($B$2:$B$13;$A$2:$A$13^{1;2;3;4;5;6});1)
b katsayısı için : =İNDİS(DOT($B$2:$B$13;$A$2:$A$13^{1;2;3;4;5;6});2)
c katsayısı için : =İNDİS(DOT($B$2:$B$13;$A$2:$A$13^{1;2;3;4;5;6});3)
....
g katsayısı için : =İNDİS(DOT($B$2:$B$13;$A$2:$A$13^{1;2;3;4;5;6});7)

şeklindedir.

Örnek dokuman ekliyorum...

 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Asri Hocam,
İdris Serdar hocanın dosyasını kullanarak çözüm oluşturdum.
(Sabah telaştan 4. dereceden deyip 3. derece fonksiyon yazmışım)
Saygılarımla
 

Ekli dosyalar

Katılım
21 Aralık 2016
Mesajlar
726
Excel Vers. ve Dili
Office 365 TR
Düzeltme :

Bir önceki mesajımda
=İNDİS(DOT(bilinen_y;bilinen_x;{katsayı.1; katsayı.2;…..;katsayı.n-1});katsayı_no)
yazdığım genel formül

=İNDİS(DOT(bilinen_y;bilinen_x^{katsayı.1; katsayı.2;…..;katsayı.n-1});katsayı_no)

şeklinde olacaktır. Lütfen düzeltmeyi dikkate alınız....
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
ÖmerBey, evet istediğim çalışma bu şekilde.

İdris bey ve sizin verdiğiniz bilgilerden anladığım kadarı ile Polinom ile ilgili araştırma yapmam gerekiyor.

Yardımcı grafik kullanmadan denklemi oluşturabilirmiyiz.
Denklemdeki ondalıklı sayılar, yardımcı grafikteki polinom hesabı nedeni ile sanırım girilen verilere göre değişiyor.
C sütununu oluşturmak için kullanılan formülü benim vba içinden oluşturmam gerekiyor.
Bu değişimi vba hesaplama ile oluşturabilir miyiz.
Doğruyu söylemek gerekirse bunu yapmayı başaramadığım (Matematik bilgim yetmediği) için grafiğin denklemini kullanmıştım.
Sayın 52779'un verdiği bilgilerle dosyanızı yeniden oluşturdum.
İnceleyiniz...
Kullanılan kodlar:
Kod:
Sub Kod()
Dim x As Variant, y As Variant, k As Variant, us As Variant, yeni As Variant
Dim der As Byte, b As Byte
Dim a As Integer

der = Application.InputBox("Kaçıncı derece olsun?" & vbLf & "1-16 arası sayı girebilirsiniz", "Derece gir", 6, , , , , 1)
If der = False Then
    Exit Sub
ElseIf der < 1 Then
    der = 1
ElseIf der > 16 Then
    der = 16
End If

ReDim us(1 To der)
For a = LBound(us) To UBound(us)
    us(a) = a
Next

x = Range("A1:A200") 'X değerleri aralığı
y = Range("B1:B200") 'Y değerleri aralığı
ReDim yeni(1 To UBound(x))

ReDim k(1 To der + 1)
For a = LBound(k) To UBound(k)
    k(a) = Application.Index(Application.LinEst(y, Application.Power(x, us)), a)
Next

For a = LBound(yeni) To UBound(yeni)
    For b = LBound(k) To UBound(k)
        yeni(a) = yeni(a) + k(b) * x(a, 1) ^ (UBound(k) - b)
    Next
Next

Range("C1:C200") = Application.Transpose(yeni)
End Sub
 

Ekli dosyalar

Son düzenleme:
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Arkadaşlar yardımlar için teşekkür ederim.
Tüm çözümleri inceleyeceğim.

Saygılarımla.
 

ibrahimpeng

Altın Üye
Katılım
23 Nisan 2020
Mesajlar
40
Excel Vers. ve Dili
2003-2007 dili Türkçe
Altın Üyelik Bitiş Tarihi
27-04-2035
sayın Asri : bence pivot tablo kullanmalısınız..sonrada grafige dönüştürebilir siniz...saygılarımla ibrahimpeng
 
Katılım
24 Nisan 2005
Mesajlar
3,672
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Uzun bir aradan sonra, Chatgpt ile biraz boğuşarak :)
istediğim sonucu alabildim.
Amacım .linest gibi herhangi bir fonksiyon kullanmadan keskin kenarlı eğrileri yumuşatmaktı.

Kod:
Sub radus_curve_egri()
    Dim ws As Worksheet
    Dim i As Long, j As Long
    Dim windowSize As Long
    Dim weightSum As Double, weightedSum As Double
    Dim dataRange As Range
    Dim totalRows As Long
   
    ' Çalışma sayfasını ayarla
    Set ws = ThisWorkbook.Sheets("Sayfa1") ' Sayfa adını kendi sayfanızla değiştirin
   
    ' Y sütunundaki değerleri alalım (örnek: B sütunu)
    Set dataRange = ws.Range("B1:B200") ' B sütununda 200 veri olduğunu varsayıyoruz
    totalRows = dataRange.Rows.Count ' Veri sayısını al
   
    ' Hareketli ortalama penceresi (örneğin, 5)
    windowSize = Cells(2, "G").Value
   
   
    ' İlk ve son noktaları sabit sıfır yapalım
    dataRange.Cells(1, 1).Value = 0 ' Başlangıç noktası (X=0, Y=0)
    dataRange.Cells(totalRows, 1).Value = 0 ' Bitiş noktası (X=200, Y=0)
   
    ' Ağırlıklı ortalama ile yumuşatma işlemi, sadece aradaki değerler için uygulanacak
    For i = windowSize + 1 To totalRows - windowSize - 1
        weightedSum = 0
        weightSum = 0
       
        ' Pencerenin hem öncesi hem sonrası için ağırlıklı ortalama uygula
        For j = 1 To windowSize
            weightedSum = weightedSum + (dataRange.Cells(i - j, 1).Value * j)
            weightedSum = weightedSum + (dataRange.Cells(i + j, 1).Value * j)
            weightSum = weightSum + (j * 2)
        Next j
       
        ' Ortadaki değeri ekle (merkezdeki ağırlık 1)
        weightedSum = weightedSum + dataRange.Cells(i, 1).Value
        weightSum = weightSum + 1
       
        ' Yeni değeri ağırlıklı ortalama ile hesapla
        dataRange.Cells(i, 1).Value = weightedSum / weightSum
    Next i
   
 
End Sub
 
Üst