emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Two numerical solutions from fsolve inside calc source block
@ 2016-06-26 13:53 Miguel Ruiz
  2016-07-02  9:55 ` Miguel Ruiz
  2016-07-02 11:30 ` Miguel Ruiz
  0 siblings, 2 replies; 3+ messages in thread
From: Miguel Ruiz @ 2016-06-26 13:53 UTC (permalink / raw)
  To: Emacs Orgmode

Hi,

I have this block which is intended to get the two numerical solutions 
of the equations system:

#+begin_src calc
fsolve([8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r],[r,v])
#+end_src

This way I get the generic form of a multiple solution, and citing the 
manual "It will invent variables n1, n2, …, which represent independent 
arbitrary integers, and s1, s2, …, which represent independent arbitrary 
signs (either +1 or -1)."

So I get

#+RESULTS:
: [r = 86600000000. / (4621.24711316 - 2517.12631405 s1), v = 
4621.24711316 - 2517.12631405 s1]

Now, to get the two solutions I have to evaluate manually the result 
expression replacing s1 by "*1" and "*-1"

#+begin_src calc
[r = 86600000000. / (4621.24711316 - 2517.12631405 *1), v = 
4621.24711316 - 2517.12631405 *1]
#+end_src

#+RESULTS:
: [r = 41157332.8093, v = 2104.12079911]

And

#+begin_src calc
[r = 86600000000. / (4621.24711316 - 2517.12631405 *-1), v = 
4621.24711316 - 2517.12631405 *-1]
#+end_src

#+RESULTS:
: [r = 12131615.2598, v = 7138.37342721]

Emacs calc manual states "Note that variables like n1 and s1 are not 
given any special interpretation in Calc except by the equation solver 
itself. As usual, you can use the s l (calc-let) command to obtain 
solutions for various actual values of these variables.", but I cannot 
figure out a way to call (calc-let) or its algebraic equivalent inside a 
calc source block.

I can accept a only-elisp workaround if it is more convenient.

Any hint to do everything commented without user interaction?

Regards.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Two numerical solutions from fsolve inside calc source block
  2016-06-26 13:53 Two numerical solutions from fsolve inside calc source block Miguel Ruiz
@ 2016-07-02  9:55 ` Miguel Ruiz
  2016-07-02 11:30 ` Miguel Ruiz
  1 sibling, 0 replies; 3+ messages in thread
From: Miguel Ruiz @ 2016-07-02  9:55 UTC (permalink / raw)
  To: Emacs Orgmode

Not optimal solution:

#+begin_src calc :results code
fsolve([8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r],[r,v])
#+end_src

yields

#+RESULTS:
#+BEGIN_SRC calc
[r = 86600000000. / (4621.24711316 - 2517.12631405 s2), v = 
4621.24711316 - 2517.12631405 s2]
#+END_SRC

Manually add :var clause in the results block as follows

#+RESULTS:
#+BEGIN_SRC calc :var var-s2=1
[r = 86600000000. / (4621.24711316 - 2517.12631405 s2), v = 
4621.24711316 - 2517.12631405 s2]
#+END_SRC

And finally the modified results block is evaluated

#+RESULTS:
: [r = 41157332.8093, v = 2104.12079911] ; var-s2=1

and

#+RESULTS:
: [r = 12131615.2598, v = 7138.37342721] ; var-s2=-1

Any improvement will be appreciated.

Miguel.




El 2016-06-26 15:53, Miguel Ruiz escribió:
> Hi,
> 
> I have this block which is intended to get the two numerical solutions
> of the equations system:
> 
> #+begin_src calc
> fsolve([8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r],[r,v])
> #+end_src
> 
> This way I get the generic form of a multiple solution, and citing the
> manual "It will invent variables n1, n2, …, which represent
> independent arbitrary integers, and s1, s2, …, which represent
> independent arbitrary signs (either +1 or -1)."
> 
> So I get
> 
> #+RESULTS:
> : [r = 86600000000. / (4621.24711316 - 2517.12631405 s1), v =
> 4621.24711316 - 2517.12631405 s1]
> 
> Now, to get the two solutions I have to evaluate manually the result
> expression replacing s1 by "*1" and "*-1"
> 
> #+begin_src calc
> [r = 86600000000. / (4621.24711316 - 2517.12631405 *1), v =
> 4621.24711316 - 2517.12631405 *1]
> #+end_src
> 
> #+RESULTS:
> : [r = 41157332.8093, v = 2104.12079911]
> 
> And
> 
> #+begin_src calc
> [r = 86600000000. / (4621.24711316 - 2517.12631405 *-1), v =
> 4621.24711316 - 2517.12631405 *-1]
> #+end_src
> 
> #+RESULTS:
> : [r = 12131615.2598, v = 7138.37342721]
> 
> Emacs calc manual states "Note that variables like n1 and s1 are not
> given any special interpretation in Calc except by the equation solver
> itself. As usual, you can use the s l (calc-let) command to obtain
> solutions for various actual values of these variables.", but I cannot
> figure out a way to call (calc-let) or its algebraic equivalent inside
> a calc source block.
> 
> I can accept a only-elisp workaround if it is more convenient.
> 
> Any hint to do everything commented without user interaction?
> 
> Regards.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Two numerical solutions from fsolve inside calc source block
  2016-06-26 13:53 Two numerical solutions from fsolve inside calc source block Miguel Ruiz
  2016-07-02  9:55 ` Miguel Ruiz
@ 2016-07-02 11:30 ` Miguel Ruiz
  1 sibling, 0 replies; 3+ messages in thread
From: Miguel Ruiz @ 2016-07-02 11:30 UTC (permalink / raw)
  To: Emacs Orgmode

Better yet:

#+begin_src calc :wrap "src calc :var var-s2=1"
fsolve([8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r],[r,v])
#+end_src



El 2016-06-26 15:53, Miguel Ruiz escribió:
> Hi,
> 
> I have this block which is intended to get the two numerical solutions
> of the equations system:
> 
> #+begin_src calc
> fsolve([8.66e10 = r * v, -7.51e6 = 0.5*v^2 - 6.67e-11*6e24/r],[r,v])
> #+end_src
> 
> This way I get the generic form of a multiple solution, and citing the
> manual "It will invent variables n1, n2, …, which represent
> independent arbitrary integers, and s1, s2, …, which represent
> independent arbitrary signs (either +1 or -1)."
> 
> So I get
> 
> #+RESULTS:
> : [r = 86600000000. / (4621.24711316 - 2517.12631405 s1), v =
> 4621.24711316 - 2517.12631405 s1]
> 
> Now, to get the two solutions I have to evaluate manually the result
> expression replacing s1 by "*1" and "*-1"
> 
> #+begin_src calc
> [r = 86600000000. / (4621.24711316 - 2517.12631405 *1), v =
> 4621.24711316 - 2517.12631405 *1]
> #+end_src
> 
> #+RESULTS:
> : [r = 41157332.8093, v = 2104.12079911]
> 
> And
> 
> #+begin_src calc
> [r = 86600000000. / (4621.24711316 - 2517.12631405 *-1), v =
> 4621.24711316 - 2517.12631405 *-1]
> #+end_src
> 
> #+RESULTS:
> : [r = 12131615.2598, v = 7138.37342721]
> 
> Emacs calc manual states "Note that variables like n1 and s1 are not
> given any special interpretation in Calc except by the equation solver
> itself. As usual, you can use the s l (calc-let) command to obtain
> solutions for various actual values of these variables.", but I cannot
> figure out a way to call (calc-let) or its algebraic equivalent inside
> a calc source block.
> 
> I can accept a only-elisp workaround if it is more convenient.
> 
> Any hint to do everything commented without user interaction?
> 
> Regards.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-07-02 11:30 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-26 13:53 Two numerical solutions from fsolve inside calc source block Miguel Ruiz
2016-07-02  9:55 ` Miguel Ruiz
2016-07-02 11:30 ` Miguel Ruiz

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).