Matlab - Kubna metoda

poruka: 3
|
čitano: 2.378
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
11 godina
neaktivan
offline
Matlab - Kubna metoda

Poštovane kolegee,

 

Radim seminarski rad iz Metoda optimizacija - tema Kubna metoda. Teorijski dio sam napisao, zapeo na implementaciji algoritma pa ako mi možete pomoći. 
Kad se pozove funkcija javlja grešku da mi se ne podudaraju matrice (5.linija koda) Y i F, na slikama se bolje vidi. Pokušao sam sa točkama ali i tu je javljalo grešku. 

Unaprijed hvala na pomoći !!!


Poziv funkcije:


fun=inline('x^2')

dfun=inline('2*x')

 [x,fx,n]=kubna('fun','dfun',0,2,0.00001)

 

______________________________________________

 

Funkcija(m-file) kubna:

function [x,fx,n] = kubna (fun,dfun,x1,x2,tol)

X=[x1;x2];

Y=[[1;1] X X.^2 X.^3 [0;0] [1;1] 2*X 3*X.^2];

F=[feval(inline(fun),X); feval(inline(dfun),X)];

abcd=Y\F;

b=abcd(2);

c=abcd(3);

d=abcd(4);

D=sqrt(4*c*c-12*b*d);

xa=(-2*c-D)/6/d;

xb=(-2*c+D)/6/d;

if feval(fun,xa) < feval(fun,xb)

   x=xa;

else

   x=xb;

end

fx=feval(fun,x);

n=0;

while abs([1 x x^2 x^3]*abcd-fx)>tol

   if feval (fun,xa) < feval(fun,xb)

     X(2)=x;

   else

     X(1)=x;

   end

Y=[[1;1] X X.^2 X.^3

   [0;0] [1;1] 2*X 3*X^2];   

F=[feval(fun,X); feval(dfun,X)];

abcd=Y\F; b=abcd(2); c=abcd(3); d=abcd(4);

D=sqrt(4*c*c-12*b*d);

xa=(-2*c-D)/6/d;

xb=(-2*c+D)/6/d;

if feval(fun,xa) < feval(fun,xb)

   x=xa;

else

   x=xb;

end

n=n+1;

fx=feval(fun,x);

end

 

 
0 0 hvala 0
12 godina
offline
Re: Matlab - Kubna metoda

Jasno da se ne podudaraju kad je Y 2x8 matrica, a F 4x1, kako si mislio to (lijevo) podijelit? Ne znam kak ti radi i ono feval(inline(fun),X) obzirom da x^2 ne radi sa stupcima. Jel ne treba fun biti x.^2?

 

Probaj maknut tocku-zarez u F, tj. 'F=[feval(inline(fun),X) feval(inline(dfun),X)];'. Ne znam jel to sto trazis, ali barem dobijes F 2x2. Matematicki bi trebala Y biti kvadratna matrica, ali matlab dozvoljava i ovo trazeci nekakva 'least squares' rjesenja.

11 godina
neaktivan
offline
Re: Matlab - Kubna metoda

Ovaj primjer je sa interneta, točnije http://ccd.uns.ac.rs/aus/mopt/mopt_doc/SingleVariable_2005.pdf   (od 53. stranice).

 

Ali kad sam ga pokušao pokrenuti, pronašao sam dosta pogrešaka. Inače, samo me taj m.file dijeli od položenog ispita :/


Svakako, hvala na odgovoru, pokušat ću bez ";". Jer sam prije uklanjanja ";" išao na opciju transponiranja matrice X.


Ugl.. prepravim cijeli m.file tako da ne pokazuje nikakvu grešku, ali mi funkcija uvijek vraća 0 za sve vrijednosti :(

Hvala još jednom, lijep pozdrav! 

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice