Re: Beginner problem with repeat

"Bill Page" <[email protected]>
Newsgroups gmane.comp.mathematics.axiom.user
Message-ID <[email protected]>
Hello Robert,

You need an output operation like this:

 for ipp in 1..3 repeat
    ip := ip + 1
    p == plist.ip
    output("p=",p)
    output solve(eq1,precision)

OAxiom treats the enter for-loop as a single expression and only
outputs the value returned by the last statement executed. The rest
are thrown away unles you do something with them - like explicitly ask
for the 'output'.

Of course there are a lot of different ways to write this sort of
loop. I would probably do it something like this:

  )clear all
  )set message autoload off

  eq1 := p^2 + 2*P + 5 = 0
  precision := 1.e-6
  plist := [1000,2000,3000]

  for i in plist repeat
    output("p=".(i::String), solve(eval(eq1,p=i),precision).1)

---------

Normally == is only used in the Axiom interpreter for defining functions.

Regards,
Bill Page.



On 10/17/07, Robert Funnell <[email protected]> wrote:
> I just started using Axiom recently and have obtained very useful
> numerical solutions of a set of equations. I am now trying to embed
> the solve in a loop so I can easily try different parameter values,
> and I can't get it to work within the loop.
>
> Appended below is a simple test. The solve within the loop is just
> silently skipped over, while the solve outside the loop gives me the
> expected result. Am I doing something silly? Or, rather, what am I
> doing that is silly?
>
> (The comment lines marked bad1 and bad2 are attempts to make the loop
> more elegant. They don't work, but that's another story.)
>
> - Robert
>
> Test case
> ---------
>
> )clear all
> )set output algebra test_results.txt
>
> eq1 == p^2 + 2*P + 5 = 0; precision := 1.e-6;
> plist == [1000,2000,3000]
>
> --bad1 for ip in 1..3 repeat
> --bad1   p == plist.ip
> --bad2 for p in plist repeat
>
> -- for some reason the solves don't get executed
> ip := 0;
> for ipp in 1..3 repeat
>    ip := ip + 1;
>    p == plist.ip;
>    output("p=",p);
>    solve(eq1,precision)
>
> -- the following solve does get executed
> output("p=",p)
> solve(eq1,precision)
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.