Skip to main content

Equation of Motion of Proton (Coulomb Potential)

## A function of the solution of the path
## equation of a proton under the inverse
## square atraction field of an electron
## that takes in the initial seperation distance
## or the position r0 wrt center of the electron
## as an argument and returns the total time
## ttotal it takes for it to reach within 1.0m
## of the electron and plots the velocity v
## vs time graph. usage ttotal=coulomb(r0).
function coulomb(r0)
## constants and initializations
k=9e+9; ## coulomb field constant [Nm^2/C]
q=1.6e-19; ## electronic charge [C]
mp=1.7e-27; ## proton mass [m]
dt=1e-4;; ## increment in time [sec]
r=r0; ## initial seperation[m]
t=0; ## initial time [s]
v0=0; ## initial velocity [m/s]
v=v0; ## 1st entry of v array [m/s]
n=1; ## initialization of loop index
## since we have already n=0 in argument r0.
while(r(n)>0.1);
dr=v(n)*dt; ## increment that is decrease in r
## since v(n) will be negative below.
r=[r;r(n)+dr]; ## decreases r in each step and
## accumulates the results in r array.
dv=-k*q*q*dt/(mp*r(n)*r(n)); ## increment in v to make v more negative.
v=[v;v(n)+dv]; ## increases the magnitude of negative v in each step and
## accumulates the results in v array.
t=[t;t(n)+dt]; ## increases the time in each step and
## accumulates the results in t array
## for both time axis and ttotal.
n++; ## increase n by 1 in each step
endwhile
ttotal=t(n) ## print the last entry of t array gives total time.
plot(t,v,';;')
xlabel('time(sec)'); ## Ola yuppi! I've learned eventually
ylabel('velocity(m/sec)'); ## to label the axes :) happy end!
endfunction

Comments

Popular posts from this blog

FACTORIAL

## Function that calculates the factorial of a number ## Usage : f=factorial(n) function f=factorial(n) ## Initialize the output f=1; ## Check whether the input is correct if ( (n<0) || (rem(n,1)~=0) ) printf("n cannot be a negative number. Exiting...\n"); return endif for num=1:n f*=num; endfor endfunction

One Dimensional Harmonic Oscillator-Numerov Method

x=[]; h0=1; M=4; N=M+1; x(1)=0; x(N)=x(1)+h0*M; x=x(1):h0:x(N) A=zeros(N); A(1,1)=-2*(5*(x(N)*h0)^2/12+1); A(N,N)=-2*(5*(x(1)*h0)^2/12+1); A(1,2)=1-(x(M)*h0)^2)/12; A(N,M)=1-(x(2)*h0)^2)/12; B=zeros(N); B(1,1)=B(N,N)=-10*(h0^2)/6; B(1,2)=B(N,M)=-(h0^2)/6; for i=2:M B(i,i)=-10*(h0^2)/6; B(i,i-1)=B(i,i+1)=-(h0^2)/6; A(i,i)=-2*(5*(x(N+1-i)*h0)^2/12+1); A(i,i+1)=1-(x(N-i)*h0)^2)/12; A(i,i-1)=1-(x(N+2-i)*h0)^2)/12; end A B

NEWTON’S METHOD FOR MINIMUM

##Newton's Method to find ##the minimum of the function F(x)=(x-2)^4-9 ##with the initial guess xmin=1.0 ##Constants and initializations xmin=[]; ##The empty array of x that minimizes the F(x) xmin(1)=1.0; ##Initial value of the xmin Fmin=[]; ##Minimum values of F(x) x=0.0:0.1:4.0; ##Only for plotting purposes F=[]; ##Our examined Function evaluated on x-space Fp=[]; ##First derivative of F(x) wrt x Fpp=[]; ##Second derivative o F(x) wrt x NSteps=50; ##Step number of iteration ##Algorithm for n=1:NSteps Fmin(n)=(xmin(n)-2)^4-9; Fp(n)=4*(xmin(n)-2)^3; Fpp(n)=12*(xmin(n)-2)^2; xmin(n+1)=xmin(n)-Fp(n)/Fpp(n); Fmin(n+1)=(xmin(n+1)-2)^4-9; endfor printf("x*, at which F(x) is minimum, is %1.6f\n",xmin(n+1)) printf("Minimum of F(x) is %1.6f\n",Fmin(n+1)) F=(x-2).^4-9; subplot(2,1,1) plot(x,F) title('Newton^,s Method-F(x) vs x'); xlabel('x'); ylabel('F(x)'); text(2,-7,'\downarrow') text(1.7,-5.6,'(xmin,Fm...