Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab Indicing (help request)

  1. Feb 3, 2006 #1

    Pythagorean

    User Avatar
    Gold Member

    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 ammount 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'.
     
  2. jcsd
  3. Feb 5, 2006 #2
    to select the the 15 first components of a vector t, type t(1:15).
     
  4. Feb 5, 2006 #3

    Pythagorean

    User Avatar
    Gold Member

    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
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Matlab Indicing (help request)
  1. Matlab help (Replies: 6)

Loading...