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]