[Matlab] Problem z wywoływaniem funkcji

olrajt
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 9 cze 2012, o 22:30
Płeć: Mężczyzna
Lokalizacja: Warszawa

[Matlab] Problem z wywoływaniem funkcji

Post autor: olrajt »

Witam,

Mam problem związany ze skorzystaniem z wcześniej zdefiniowanej funkcji. Problem wygląda następująco:

program:

Kod: Zaznacz cały

clc; 
clear; 
e=1e-5;n=2;                   
d=[1 0;0 1]; 
x(1,:)=[0 0];m=0;k=1;ap=0; 
f(1)=fun(x(1,:)); 
r=f(1); 
for p=1:n 
    for q=1:n 
for i=-5:0.001:5 
    x((k+1),:)=x(k,:)+i*d(k,:); 
    b=fun(x((k+1),:)); 
    if b<r 
        f(k+1)=b; 
        r=b; 
        a(k)=i; 
    end 
end 
x((k+1),:)=x(k,:)+a(k)*d(k,:); 
if k==n 
    if abs(x(k+1,:)-x(1,:)) == e 
            lastx=x(k+1,:)
            lastf=fun(lastx) 
            hold 
    else 
          for i=1:k 
              b(i)=f(i)-f(i+1); 
          end 
          MIN=b(1); 
          MAX=b(1); 
          for i=2:k 
              if MIN>b(i) 
                  MIN=b(i); 
              end 
              if MAX<b(i) 
                  MAX=b(i); 
              end 
          end 
          for i=1:k 
              if MAX==b(i) 
                  m=i-1; 
              end 
          end 
          fl=fun((2*x(k+1,:)-x(1,:))); 
          x(1,:)=x(k+1,:)+ap*d(k,:); 
          f(1)=fun(x(1,:)); 
          k=1; 
            end            
        end 
    
   k=k+1; 
end 
end 

lastx=x(1,:) 
lastf=f(1)
odwołuje się do wcześniej zdefiniowanej funkcji w postaci:

Kod: Zaznacz cały

function f=fun(x) 
% f=x(1)^2+2*x(2)^2-2*x(1)*x(2)-4*x(1); 
% f=100*(x(1)^2-x(2))^2+(1-x(1))^2+3*x(1)*x(2); 
% f=x(1)-x(2)+2*x(1)^2+2*x(1)*x(2)+x(2)^2; 
% f=100*x(1)^4+(-200*x(2)+1)*x(1)2+(3*x(2)-2)*x(1)+100*x(2)^2+1;
 f=8*x(1)^2+5*x(2)^2+4*x(1)*x(2)+x(1);
Przed uruchomieniem komentuje wszystkie funkcjie oprócz jednej. Chodzi mi o to żeby móc jakoś wybrać funkcje wejściową używając konsoli. Z góry dzięki za pomoc i pozdrawiam.
Ostatnio zmieniony 10 cze 2012, o 08:05 przez Afish, łącznie zmieniany 4 razy.
Powód: Literówka w temacie
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[Matlab] Problem z wywoływaniem funkcji

Post autor: witekkq »

hmmm...

Kod: Zaznacz cały

x(2)2
jaki był zamiar?

wybór funkcji? dodać kolejne wejście i warunki if.. switch.. itd
ODPOWIEDZ