[ 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] |