help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Newbie question solving lin sys


From: John B. Thoo
Subject: Re: Newbie question solving lin sys
Date: Fri, 27 Dec 2002 16:55:47 -0800

On Friday, December 27, 2002, at 03:51 PM, William Lash wrote:

**Three follow-up questions.  (I hope that you don't mind.)

1. What does the dot after the s in s.^[0:11] mean in the "for" loop?

In Octave (and Matlab), usually things like multiplication and exponentiation are matrix type operations. Putting a "." in front
of the operation makes it do things in an "element by element"
fashion.  To be honest, I wasn't sure that s.^[0:11] would give me
a row vector with the elements s^0 through s^11 untill I tried
it.

I see.  Neat.


2. What in the "for" loop tells Octave to add the terms?

The multiplication of the row vector containing the powers of s
and the column vector containing the values of x in matrix
arithmetic give you the sum of the products as above. Think of
it as S*X where S is 1x12, and X is 12x1.  You could do the same
using:
sum(x'.*s.^[0:11])

Oh, right, Octave treats everything as vectors. (I've played a little bit with Maple in the past; this is different here.) Duh!


3. How do I plot the graph on  [0:11]  without a loss of precision?  I
tried this without success:

octave:84> gplot [0:11] "x(1) + x(2)*x + x(3)*x**2 + x(4)*x**3 +
x(5)*x**4 + x(6)*x**5 + x(7)*x**6 + x(8)*x**7 + x(9)*x**8 + x(10)*x**9 +
x(11)*x**10 + x(12)*x**11"
         line 0: undefined function: x

I would probably do something like:
for s = [0:11]
z(s+1) = s.^[0:11] * x;
end
plot([0:11],z)

That works to give me a polygonal curve that connects the 12 points. That's good, but how would I plot the polynomial with more grid points (smoother)? It works reasonably when I do "format long" and then copy & paste the coefficients to plot

octave:139> gplot [0:11] "22 + 129.316052352359*x - 330.008191451222*x**2 + 356.743251568416*x**3 - 211.743557625161*x**4 + 77.5116682813202*x**5 - 18.4455900615644*x**6 + 2.90919225949428*x**7 - 0.301909718420775*x**8 + 0.0198178458639753*x**9 - 0.000745701048375786*x**10 + 0.0000122504808365439*x**11"

but there must be an easier way. :-)

Once again, thanks very much for all your help.

---John.



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]