Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

MATLAB yardım / Newton-Gregory İlerleme Polinomu


SeaGle

Öne çıkan mesajlar

Selam,

Genel makine laboratuarı dersi kapsamında, bir pompanın karakteristik eğrisinden belirli aralıklarla x-y değerleri alarak bu pompanın karakteristik eğrisini tekrar çıkarmam gerekiyor. Sonra çıkan eğriyi ilk eğri ile karşılaştırıp ne kadar doğru bi polinom olduğunu analiz edicem falan.


Bu grafiği elde edeceğim polinomu da Newton-Gregory ilerleme polinomunu kullanarak elde edeceğim, ve 10. dereceden olacak.


Şimdi,

pompanın bize verilen karakteristik eğrisi bu;


http://dl.dropbox.com/u/18366514/deney/tarama0003.jpg





Karakteristik eğriden aldığım x-y değerleri ve bu grafiğe ait ileri fark tablosu da bu;


http://dl.dropbox.com/u/18366514/deney/tarama0002.jpg




Newton-Gregory ilerleme polinomu bu;

http://dl.dropbox.com/u/18366514/deney/tarama0004.jpg

Ve yerine koymaya kalktığımda 10. dereceden bir denklem için elde ettiğim denklemin ilk hali şu;


http://dl.dropbox.com/u/18366514/deney/tarama0001.jpg




Bunları niye anlattım, MAKİNE OKUMAYIN LAN sdfgh

Şaka şaka,

şimdi,

öncelikle ilerleme polinomunda s ile gösterdiğim şey benim polinomum için şu;

s = (x-30)/30

Şimdi ben bunu ilk admlarda yazıyorum da gördüğünüz gibi 10. adımda s(s-1)(s-2).. şeklinde 10 kez yerine koymak çok zor oluyor (x-30)/30 değerini, üstüne payda da faktoriyel ile artıyor falan, abuk durumlar çıkıyor. Microsoft mathematics'de yapmayı denedim, sürekli hata yapıyorum bi yerde yazarken, kafa dağılıyor bi adımdan sonra.


Şimdi,

Sizden istediğim,

s=(x-30)/30 diye bi s parametresi atayacağım matlabde. Sonra bu ilerleme polinomunu işte s ye bağlı yazıcam. Sonra bana matlab onun grafiğini x-y şeklinde versin istiyorum. Hatta f(x) şeklinde sonuç polinomunu da verse süper olur.


Var mı bu konuda yardımcı olacak?

Matlab bilgim 0 bu arada sgdsdfhgsfdgsdggsdg, işimiz yeni yeni düşmeye başldı. Aslında bunu el ile falan çıkarmam lazım da 10. dereceden denklem mi yazılır abi el ile..

Bi yardım eli uzatana dürüm çalışır sdf
Link to comment
Sosyal ağlarda paylaş

ya datalarını excelden okut mydata = xlsread('filename') ya da matris yaz

mydata = [ x1 y1 dely1 del2y1 ...
x2 y2 del2y1 ...
.
.
.
0 0 0 ... 0];

seklinde birazdan nie son column ı sıfır yaptıgımızı soyliycem

bu baya okuz bi method olcak bi de cok daha guzel sekillerde yazılabilir..

simdi
k=0;
while mydata(1,k+1) %en son column a gelince dursun 0 0 0 0 olan column ı kullanmasın die (bundan cok emin degilim gotumden uydurdum son column eklemeden de oluyodur belki =))
k=k+1;
s=(mydata(1,k) - 30)/30;
yp(mydata(1,k)) = mydata(2,k)+ s * mydata (3,k) / 2 + s*(s-1)*mydata(4,k)/(2*3) ..... ;
end

plot(yp);
xlabel('x')
ylabel('yp')


! faktoriyel islemi yapmıyo ona ayrı bi function yazıp cagırabilirsin usenmem diyosan



falan filan..
Link to comment
Sosyal ağlarda paylaş

tamam zaten mydata(1,k) dedigin sey mydata matrisinde 1,1 noktasındaki degerdir while a soktugum icin k olarak yazıyorum ki tekrar tekrar girsin girerken otomatik yapsın tek tek ben elle yapmayım die

orn ilk girdi k=1

mydata(1,1) i kullanıyo yani datasetindeki ilk rowdaki x bu x le s hesaplıyo sora o s i bi alttaki islemde kullanıyo..

tekrar giriyo k=2

mydata(1,2) i kullanıyo yani ikinci rowdaki x ile s hesaplıyo bu sefer..



daha genel anlatmak gerekirse

x=[ 1 2
3 4] diye bi matis tanımladın

x(1,1) = 1
x(2,2) = 4
x(1,2) = 2
matrisadı(row,column) olarak matrisin her hangi bi elemanını cagırabilirsin

kitap olarak ben Numerical Methods for ChE with MATLAB applications ve matlab ın helpini kullanıyorum daha once kodlama yaptıysan matlab help i hersey icin cok cok yeterli ama kodlama gecmisin hic yoksa biraz sıkıntılı olabilir
Link to comment
Sosyal ağlarda paylaş

adım geçmiş.

senin istediğin şu resimdeki (deney/tarama0001.jpg) fonksiyonu çözmek mi ?

ya da şöyle sorayım, newton-gregory polinomunu yazmak istiyorsun, o kadar mı ?

yapacağın çok basit.

deltaY matrisi yapıyorsun bir tane,

deltaY(1,1) = 16
deltaY(2,1) = -6

...
deltaY(1,11)= 4

şeklinde gidecek.

bir de fonksiyon yazıyorsun

(fonksiyon syntaxini hatırlamadım düzeltirsin
[step] = myfunc(deltaY,X,level)
step = 1;
for i = 1 : level
step = step * (x-30)/30 / i * deltaY(i,x/30);
end

sonra ana kodun şöyle olacak

%% input x
yp = y0;
for i = 1 : 11
yp = yp + myfunc(deltaY,x,i);
end

verilen x icin yp yi elde ettin böylece.
Link to comment
Sosyal ağlarda paylaş

Fizban çok sağol, ama temel bilgim olmadığı için değişken tanımlama falan gerekiyor sanırım deltaY falan, x vs. Onları yapamadım, baydım ben de, pascal'da yazdım bişey:


Program newtongreg;
Var
delta:array[-100..100] of INTEGER;
x:INTEGER;
s:REAL;
yo:INTEGER;
yp:REAL;
n:integer;
yg:REAL;
Begin
yp:=39;
For n:=0 to 10 do begin;
Writeln('delta ',n,' ?');
Readln(delta[n]);
end;
Writeln('x de§erini giriniz');
Readln(x);
s:=(x-30)/30;
yg:=1;
For n:=0 to 9 do begin;
If delta[n]=0 then begin
yg:=yg+0;
end
else begin
yg:=(yg*(s-n)*delta[n+1])/(delta[n]*(n+1));
yp:=yp+yg;end
end;
Writeln(yp:3:3);
Readln;
End.



Belirli bir aralığa kadar tolerans dahilinde sonuçlar veriyor ama bi yerden sonra sapma çok fazla. Korelasyon katsayısı falan filan, bakmam lazım bi ara.


Bu arada şu 2 kitabı aldım,

http://www.dr.com.tr/Product.aspx?pid=0000000188952&mid=0000000199994
http://www.dr.com.tr/Product.aspx?pid=0000000178388&mid=0000000189056

matlab yardırıcam bugünden itibaren. Yardımcı olabilecek bi hoca da var "öğrenmek isteyen varsa yardımcı olurum vs" diyor paso, bakalım.
Link to comment
Sosyal ağlarda paylaş

  • 4 hafta sonra ...
×
×
  • Yeni Oluştur...