[ damir_he @ 16.11.2008. 22:17 ] @
Na netu sam našao par zadataka iz differencijalnih jednačina, međutim imam problem prilikom njihovog izvođenja.
Naime, Matlab mi prijavljuje kojekakve greške!

Može li ko da provjeri ove zadatke (ubaci ih u Matlab)?

Zadatak 1:

--
function rk2
x0=input('Unesite pocetnu tacku segmenta:');
xn=input('Unesite krajnju tacku segmenta:');
y0=input('Unesite pocetnu vrijednost funkcije:');
h=input('Unesite korak integracije:');
n=(xn-x0)/h;
x=x0;
y=y0;
yn(1)=y0;
for i=1:n
k1=h*f(x,y);
k2=h*f(x+h,y+k1);
yn(i+1)=y+(1/2)*(k1+k2);
x=x+h;
y=yn(i+1);
end
%Stampanje rezultata
a=[x0:h:xn];
hold off
plot(a,yn,'linewidth',1.2)
axis([x0 xn 1.3 2])
grid on
hold on
%Izracunavanje tacnog rješenja dobijenog analitickim putem
yt=(2*(a+1))./(2*a+1);
plot(a,yt,'r')
axis([x0 xn 1.3 2])
grid on
hold on
%Izracunavanje tacnog rješenja pomocu ODE23
[x2,y2]=ode23('f',[0,1],2);
plot(x2,y2,'*k')
%Diferencijalna jednacina cije se rjesenje trazi
function F=f(x,y);
F=(y-y^2)/(x+1);


--
Izrada

>> rk2
Unesite pocetnu tacku segmenta:0
Unesite krajnju tacku segmenta:1
Unesite pocetnu vrijednost funkcije:2
Unesite korak integracije:0.1
??? Error using ==> feval
Undefined function 'f'.

Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\private\odearguments.m
On line 104 ==> f0 = feval(ode,t0,y0,args{:});

Error in ==> C:\MATLAB6p5\toolbox\matlab\funfun\ode23.m
On line 154 ==> [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, args, ...

Error in ==> C:\MATLAB6p5\work\rk2.m
On line 31 ==> [x2,y2]=ode23('f',[0,1],2);

Napomena: Iscrta mi i grafik ali u izradi zadatka mi prijavljuje grečku!

-------------------------------------------------------------

Zadatak 2:

function rk3
x0=input('Unesite pocetnu tacku segmenta:');
xn=input('Unesite krajnju tacku segmenta:');
y0=input('Unesite pocetnu vrijednost funkcije:');
h=input('Unesite korak integracije:');
n=(xn-x0)/h;
x=x0;
y=y0;
yn(1)=y0;
for i=1:n
m1=h*f(x,y);
m2=h*f(x+h/2,y+m1/2);
m3=h*f(x+h,y-m1+2*m2);
yn(i+1)=y+(1/6)*(m1+4*m2+m3);
x=x+h;
y=yn(i+1);
end
a=[x0:h:xn];
hold off
plot(a,yn,'linewidth',1.2)
axis([x0 xn 1.3 2])
grid on
hold on
yt=(2*(a+1))./(2*a+1);
plot(a,yt,'r')
axis([x0 xn 1.3 2])
grid on
hold on
[x2,y2]=ode23('f',[0,1],2);
plot(x2,y2,'*k')


Izrada u Matlabu:


>> rk3
Unesite pocetnu tacku segmenta:0
Unesite krajnju tacku segmenta:1
Unesite pocetnu vrijednost funkcije:2
Unesite korak integracije:0.1
??? Undefined function or variable 'f'.

Error in ==> C:\MATLAB6p5\work\rk3.m
On line 11 ==> m1=h*f(x,y);

>>

--------------------------------------------

Zadtak 3:


function rk4
x0=input('Unesite pocetnu tacku segmenta:');
xn=input('Unesite krajnju tacku segmenta:');
y0=input('Unesite pocetnu vrijednost funkcije:');
h=input('Unesite korak integracije:');
n=(xn-x0)/h;
x=x0;
y=y0;
yn(1)=y0;
for i=1:n
m1=h*f(x,y);
m2=h*f(x+h/2,y+m1/2);
m3=h*f(x+h/2,y+m2/2);
m4=h*f(x+h,y+m3);
yn(i+1)=y+(1/6)*(m1+2*m2+2*m3+m4);
x=x+h;
y=yn(i+1);
end
a=[x0:h:xn];
hold off
plot(a,yn,'linewidth',1.2)
axis([x0 xn 1.3 2])
grid on
hold on
yt=(2*(a+1))./(2*a+1);
plot(a,yt,'r')
axis([x0 xn 1.3 2])
grid on
hold on
[x2,y2]=ode45('f',[0,1],2);
plot(x2,y2,'*k')


Rešenje u Matlabu:


>> rk4
Unesite pocetnu tacku segmenta:0
Unesite krajnju tacku segmenta:1
Unesite pocetnu vrijednost funkcije:2
Unesite korak integracije:0.1
??? Undefined function or variable 'f'.

Error in ==> C:\MATLAB6p5\work\rk4.m
On line 11 ==> m1=h*f(x,y);

>>


Hvala Unapred!!!

[Ovu poruku je menjao damir_he dana 17.11.2008. u 07:38 GMT+1]
[ ptak 13. @ 20.11.2008. 19:56 ] @
Iste greske prijavljuje i kod mene, samo sto sam probao. nerazumem sta je greska, ali nesto je tu lose napisano, ja sam 3god srednej skole pa slabo doduse razumem ovo, ali probacu da skontam u cemu je fol.