bvp using secant method and range kutta 4th order
    4 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
It is asked to solve m* d^2 y/dt=-g-gama*dy/dt. the values given are alredy in the code
what is wrong with this function: ___________________________________________________________________
%3.
[value,x0,numIter] = f_secante(@find0_p3,0, 1, 0.0001, 1000);
%[x,v]
m=0.01; g=9.8; gama=0.05;
f=@(x,t)[x(2); -(g*m+gama*x(2))/m];
x=[x0;0.3];t=0;tf=20; dt=0.01;
t=0;
time=[t];
mat=[x];
while t<tf
    [t,x] = f_rk4(f,t,x,dt);
    time=[time,t];
    mat=[mat,x];
end
plot(time,mat(1,:))
fprintf('%s %f\n','y(0)=',x0)
so that______________________________________________________________
function [value,x0,numIter] = f_secante(f, a, b, tol, nmax)
%[value,x0,numIter] = f_secante(f, a, b, tol, nmax)
if f(a)==0
    x0=a; numIter=0; value=0;  
    return;
end;
if f(b)==0
    x0=b; numIter=0; value=0;
    return;
end;
x1=a; x2=b;
for k=1:nmax
    x3=x2-(((x2-x1)*f(x2))/(f(x2)-f(x1)));
    if abs((x3-x2)/x2)<tol; x0=x3; numIter=k;
        continue;
    else
        x1=x2;x2=x3;
    end
if f(x3)~=0 ; x0 = a; numIter=k; value=f(x3); 
    return
end
end
and______________________________________________________________________
function z=find0_p3(y0)
%[x,v]
m=0.01; g=9.8; gama=0.05;
f=@(x,t)[x(2); -(g*m+gama*x(2))/m];
x=[y0;0.3];t=0;tf=20; dt=0.01;
while t<tf
    [t,x] = f_rk4(f,t,x,dt);
end
z=x(1);
end
____________________________________________________________________
the question is that x0 that is x so that y(20)=0, is giving me wrong because when i plot the graph, y(20)=-40.
Can you help me?
if true
  % code
end
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
				Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!