Jakobiyen matrisi ve 3. derece polinom

Başlatan Cemre., 22 Mayıs 2014, 20:16:56

Cemre.

Bir ödevim var ve 3. derece bir polinomun Newton-Rapshon yöntemi uygulayan Pascal dili ile yazılmış bir programla iteratif olarak çözülmesi isteniyor.



Burada bahsedilen jakobiyen matrisi hakkında pek bir bilgi bulamıyorum, nasıl oluşturulacağı konusunda biraz yardımcı olabilir misiniz?

Cemre.

Şu matrisin yazımı konusunda yardımcı olabilecek biri yok mu?

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

Hocam sanırım olay şu kısımdan ibaret,



Ama, 3.derece bir polinom, örneğin kökleri x1=1, x2=2, x3=3 olan, F(x)=a(x-1)(x-2)(x-3) bir polinomdan bahsederken bu matris tam olarak nasıl yazılacak, sanırım matematik özürlüyüm :(

z

Universitede bu matrisle ugrastigimizi hatirlamiyorum.

Verdigim linkten anladigim kadariyla fazla karisik degil.

3 degiskenli uc fonksiyonun var.

Bunlar

f1(x,y,z)
f2(x,y,z)
f3(x,y,z)

3x3 matrisde;

1 satir 1 sutuna @f1/@x
1 satir 2 sutuna @f1/@y
1 satir 3 sutuna @f1/@z

2 satir 1 sutuna @f2/@x
2 satir 2 sutuna @f2/@y
2 satir 3 sutuna @f2/@z

3 satir 1 sutuna @f3/@x
3 satir 2 sutuna @f3/@y
3 satir 3 sutuna @f3/@z

turevlerini yerlestiriyorsun.

Boylece Jacobian matrisi elde ediyorsun.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

Hocam elimizde tek bir fonksiyon varken bunu nasıl 3x3 matrise yazacağız ki

z

2 fonksiyon daha verilmesi lazim.

Diger iki fonksiyonu sifir alsan ne olur?

Bildigimden degil de samata yapiyorum.

Dedigim gibi yazarsan 1 satir 3 sutunlu bir matris olur.

Senin hic mi sinif arkadasin yok? Onlar ne yapmislar bu konuda?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

Hocam ödevi alalı çok olmadı insanlar uğraşmamış bile, pazartesi gününe kadar da ders yok zaten, newton raphson ve jakobiyen diye google'da aratınca da pek bir şey çıkmıyor açıkçası, şaşırdım kaldım..

Tagli

Bu ödev robotik dersi ile mi ilgili? Robot ters kinematiğinin sayısal yöntemlerle çözülmesinde buna benzer bir şeyler vardı. Orada Jacobian, robot ucunun konum ve yöneliminin eklem açılarına göre türevini gösteriyordu. Sayısal çözümde de J'yi sayısal olarak hesaplamak mümkün. Mevcut eklem açılarının biraz eksiği biraz fazlası ile ikişer kez düz (ileri) kinematik çözülüyor ve buradan J hesaplanabiliyor.
Gökçe Tağlıoğlu

Cemre.


Tagli

#10
Mantık aynı aslında. Robotikte iş daha zor çünkü normal Jacobian kullanmayıp, 12x6'lık benzer görev gören bir matrisle işlem yapman gerekiyor. Onun da tersi alınmadığı için yalancı-ters alma işlemi yapılıyor.

Robotikte, elinde bir polinom yok, bir transformasyon matrisi var ve lineer değil. Ama sonuçta bu matrisi kullanarak 6 adet eklem açısı için uç noktanın konum ve yönelimini hesaplayabiliyorsun. Ters kinematik probleminde de, elinde uç noktanın bilgisi var ama bu 6 açı yok. Yani elinde 12 elemanlı bir transformasyon matrisi var ve bunu bir şekilde elde etmeye çalışıyorsun. Elinde olan şey bu matrisin sayısal değeri (yani ulaşmaya çalıştığın uç noktaya denk gelen), ancak bu değerler 6 adet açının çok karmaşık bir fonksiyonu. Yine Newton metodu ile çözülebiliyor. Açılara rastgele bir başlangıç değeri veriyorsun. Buradan J'yi hesaplaman gerek. Nümerik olarak hesaplamak için, her seferinde sadece bir açıyı biraz değiştirerek düz kinematik ile bu transformasyon matrisinin (T diyelim) 12 elemanını elde ediyorsun. Sonra bu 12 elemanın o açıya göre nasıl değiştiğini buluyorsun ki bu da zaten nümerik türev oluyor. Mesela açı_1 0.2 derece değişince 12 elemandan biri olan konumun x koordinatı 15 cm değişmiş. Bu durumda J'de o eleman 15/0.2 oluyor. Tabi buradaki J 12x6 oluyor ve yukarıda bahsettiğim yalancı-ters alma işlemi gerekiyor.

Senin sorunda transformasyon matrisi yerine bir polinom var. J'yi hesaplamak için 3 rastgele x değeri ile başlayıp, her seferinde bunlardan birini biraz değiştirerek polinomun değerini hesaplayacaksın. Mesela x'lerin [10,20,30] ise [11,20,30] için hesaplayacaksın. 3 açı için bunu yaptığında J'nin ilk satırını elde edersin. Ama sorun şu: Arkadaşların da bahsettiği gibi burada J 1x3 olur. 3x3 bir J'nin oluşması için 3 fonksiyon gerekir. Ancak, yukarıda da bahsettiğim gibi, yalancı-ters alma (pseudo inverse) ile kare olmayan bir J ile de işlem yapabilirsin.

Şu dokümanı incele. Ben robotikle ilgili sorunu bundan çalışarak çözmüştüm. Bölüm 3.4'te nümerik yöntemleri anlatmış, senin bakman gereken yer burası. Sonunda örnek C kodu da var (gerçi bana birkaç yeri eksik geldi, ben oradan faydalanarak kendim sıfırdan yazmıştım).
Gökçe Tağlıoğlu

speak48

paskal ne arkadaş
ya c ile yaptır yada matlabla
biz matlabda yapıyorduk

Cemre.

Hocam pascal ortak dersti c ve matlab seçmeli, neyse..
Arkadaş yazdı bugün, matematik kısmını hallettim felan dedi, bakalım o ne düşünmüş.

Tagli

Bu arada, yukarıda J'nin hesaplanması için yazdığım sayısal yönteme aslında senin sorunda gerek yok çünkü elde oldukça sade bir polinom var ve bunun her bir değişkene göre rahatlıkla kısmi türevini alabilirsin. Ama ödevden anladığım kadarıyla, senin hoca J'nin sayısal olarak hesaplanmasını istemiş. Sen yine de bir sor teyit almak için, gerekmiyorsa boşa uğraşma.

Elbette J'nin hesaplanması iterasyonun sadece bir adımı. Ondan sonra formülden yola çıkılarak yapılacak hesap zaten sayısal bir hesap, o ayrı konu.
Gökçe Tağlıoğlu

picusta

Alıntı yapılan: z - 24 Mayıs 2014, 00:15:20
2 fonksiyon daha verilmesi lazim.

Diger iki fonksiyonu sifir alsan ne olur?

Bildigimden değil de samata yapiyorum.

Dedigim gibi yazarsan 1 satir 3 sutunlu bir matris olur.

Senin hic mi sinif arkadasin yok? Onlar ne yapmislar bu konuda?
Z hocam sasirttiniz beni.
Fonksyon'un tek degiskenli oldugunu nasil varsayarsiniz?
Degisken saf reel degil, basbari sizin orada, Z domain'inde.
Yani 2 boyutlu degisken (2 degisken) ve 6 bilinmeyen var.
Bunlar ister reel - hayali, ister euler olarak yazilsin.
3. dereceden polinomun 3 tane Z'de kökü var.
F(Z) =  (Z - Z1)(Z - Z2)(Z - Z3)
örn :
F(x,y) = (x+iy  - (x1+iy1))(x+iy  - (x2+iy2))(x+iy  - (x3+iy3))
...
Buradan devam ederseniz 2 degiskenli 6 bilinmeyenli 3. dereceden polinom çikar.
çözmek için sonrasini bilmiyorum, belki x,y degil euler kullanilmasi gerekir, oradan çözülmesi için "limited development" kullanilmalidir.
Jakobiyenlerle en son ugrastigimdan beri 10 yil geçti. O zamanda da konuya 100% hakim degildim, simdi daha beter.