How Can I Fix Indexing Issues in My Matlab Code for Radioactive Decay?

  • Context: MATLAB 
  • Thread starter Thread starter Pythagorean
  • Start date Start date
  • Tags Tags
    Matlab Request
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 3K views
Messages
4,430
Reaction score
327
I'm having a helluva time trying to build the index for this code.

First of all, this is homework, I'll admit, but I've done all I could
to research the problem on my own, so I understand the question I'm trying to ask by now, but I still haven't found an answer

Basically, I'm modeling Radioactive Decay in several different ways on
one plot. The issue I'm having is with the Euler method, because it's a numerical approach, and the last three years of my college life has been studying continuous.

Also, I have to use a while loop.

here is the code, followed by my question:

%----------------------------------------------------------------
%EULER
%----------------------------------------------------------------
i=1
t(1)=0
Ne(1)=100

while t>=ti & t<=tf %<---tf and ti are previously defined
t(i)=delt*(i-1)
Ne(i+1)=(1-lam*delt)*Ne(i)
i=i+1
end
plot(t,Ne,'ro')
------------------------------------------------------------------

Before plot even comes on, I can see that Ne will have one more
value than t does, and when I run it (when I run it, it says the matrices must must have an equal amount of elements and such, and if I scroll
through the run, i can see that Ne has (as I assumed) one more value
than t.

So I try plot(t,Ne(i-1),'ro'), hoping it will return to the whole indix set one period ago for Ne, but no, it just takes the scalar of Ne at the i-1 index and gives me a nice flat line.

Question: How do I cut off the end of the matrices (Ne and t) to the same length like a paper cutter does with paper

OR

How do I enter a final value for one last indice after the loop has created a table (this would go after the 'end' of the loop and before the 'plot'.
 
Physics news on Phys.org
to select the the 15 first components of a vector t, type t(1:15).
 
I've spent many hours on this code since then. What I actually did was made the line:

t(i)=delt*(i-1)

to say:

t(i+1)=delt*(i)

therefore bumping t up one index (since the first index is already defined as an initial value) which opened up a couple other little problems I had to fix

I'm actually on to Runge-Kutta now. Our teacher gave us an easy three step code for it, but it won't work for me.

I think I have my slope formula wrong. It's supposed to be Radioactive decays first derivative, I thought, but the line doesn't even go in the right direction, so I don't know. I'll be spending all day today trying to figure it out.

i=1
t(1)=ti
Nrk(1)=Not
while Nrk>0 & Nrk<=Not
t(i+1)=ti+delt*i
s=-lam*Nrk(i)*exp(-lam*t(i))
k1=delt*s
k2=(Nrk(i)+k1/2)*delt
Nrk(i+1)=Nrk(i)+k2/2
i=i+1
end
plot(t,Nrk,'b')
clear all