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

  • Thread starter Thread starter Pythagorean
  • Start date Start date
  • Tags Tags
    Matlab Request
AI Thread Summary
The discussion revolves around challenges faced while implementing the Euler method for modeling radioactive decay in a coding assignment. The user is struggling with ensuring that the arrays for time (t) and the number of undecayed nuclei (Ne) have the same length, which leads to errors when plotting. The user initially encounters a mismatch in the sizes of these arrays due to the way values are indexed and updated within the while loop. They seek advice on how to adjust the lengths of these arrays to match or how to correctly add a final value after the loop.Additionally, the user mentions transitioning to the Runge-Kutta method but is facing difficulties with the slope formula, which they suspect may be incorrect. They express frustration over the results not aligning with expected outcomes. The conversation highlights common issues in numerical methods, particularly with array indexing and the implementation of iterative algorithms in coding assignments.
Pythagorean
Science Advisor
Messages
4,416
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
 

Similar threads

Back
Top