matlab: równanie różniczkowe, szukanie wartości własnych, funkcja

0

Witam, moim zadaniem jest napisanie odpowiedniego skryptu zawierającego funkcję która ma obliczyć wartość wektora falowego - wartość własną równania drgań swobodnych, w funkcji wykorzystuję metodę Numerov'a.
Nie rozumiem błędu, który wyrzuca mi program:

Error in ==> intgrt at 4
n=100;

??? Output argument "algNum" (and maybe others) not assigned during call to
"C:\Users...".

Error in ==> skrypt at 3
x=intgrt(k,phip);

Mój skrypt:

 
 
k=1; 
dk=1; 
x=intgrt(k,phip); 
phiold=phip; 
y=myfun( k,phip ); 
exact=4*atan(1); 

Funkcja:

 
 
function eigval = myfun( k,phip ) 
%UNTITLED5 Summary of this function goes here 
%   Detailed explanation goes here 
 
tolk=0.0001; 
k=k+dk; 
while (abs(dk) > tolk) 
   if (phip*phiold < 0) 
    k=k-dk; 
    dk=dk/2; 
   end 
end 
 
end 
% subfunction: 
function algNum = intgrt( k,phip ) 
%UNTITLED4 Summary of this function goes here 
%   Detailed explanation goes here 
n=100; 
m=n-1; 
h=1/n; 
phim=0; 
phiz=0.01; 
const=((k*h)^2)/12; 
for l=1:m 
    phip=2*(1-5*const)*phiz-(1+const)*phim ; 
    phip=phip/(1+const); 
    phim=phiz; 
    phiz=phip; 
end 
 
return 
 
end 

Bardzo proszę o jakąkolwiek pomoc i wskazówki. Pozdrawiam

0

W deklaracji podfunkcji (intgrt) podajesz argument wyjściowy algNum, ale nie ma go w kodzie. Stąd błąd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1