Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

vector addition with an unknown variable #666

Open
gunnarmein-ts opened this issue May 7, 2022 · 5 comments
Open

vector addition with an unknown variable #666

gunnarmein-ts opened this issue May 7, 2022 · 5 comments

Comments

@gunnarmein-ts
Copy link

nerdamer("a+vector(1,2,3)").toString() ---> '[1+a,2+a,3+a]'

Makes no sense at all. It could be [1+vecget(a,0), 2+vecget(a,1), 3+vecget(a,2)], or it could leave it unresolved. But this?

@jiggzson
Copy link
Owner

jiggzson commented May 8, 2022

Makes no sense at all. It could be [1+vecget(a,0), 2+vecget(a,1), 3+vecget(a,2)], or it could leave it unresolved. But this?

Not really. It's pretty standard behavior actually.

Maxima:

(%i1)	a+[1,2,3];
(%o1)	[a+1,a+2,a+3]

Wolfram Alpha:
https://www.wolframalpha.com/input?i=a%2B%7B1%2C2%2C3%7D

One possible solution might be to set a flag to change this behavior.

@gunnarmein-ts
Copy link
Author

What you put into WolframAlpha there is a+ the set {1,2,3}. Adding "a" to a vector in the way you do makes no sense:

if a is a scalar, then the addition is undefined
if a is a vector, then it needs to be added component by component

What could a be that [a+1, a+2, a+3] would be the result? Nothing.

The issue is complicated here because you don't really distinguish between vectors and sets in Nerdamer. Your docs say "vector(1,2,3)" to specify a vector, the result is "[1,2,3]". But the solution to "x^2=1" is similarly written as "[-1,1]".

@jiggzson
Copy link
Owner

@gunnarmein-ts,

Feel free to insert a+[1,23] or a+(1,2,3). The result will be the same. As I mentioned before, the main discussion should be on how to proceed from here.

@gunnarmein-ts
Copy link
Author

Hmm. How to proceed should be to allow vectors in symbolic computation, no?

`nerdamer("solve([a+2,1=[4,1],a)").toString()`

should work as easily as

`nerdamer("solve(a+2=4,a)").toString()`

and (reaching here):

`nerdamer("solve(a+vector(1,2,3)=vector(2,3,4),a)")`

should figure out that a=[1,1,1]

But I also still think to put this on some solid foundation you need to answer the question from above:

What could a be that [a+1, a+2, a+3] would be the result?

  • if a is a scalar, then the addition is undefined
  • if a is a vector, then it needs to be added component by component

What do you think a is?

@jiggzson
Copy link
Owner

What could a be that [a+1, a+2, a+3] would be the result?

  • if a is a scalar, then the addition is undefined
  • if a is a vector, then it needs to be added component by component

What do you think a is?

@gunnarmein-ts, I get your point but unfortunately, that's the currently established behavior that others might currently be relying on. Additionally, I demonstrated that this behavior isn't uncommon, as both Maxima and Wolfram Alpha do the same. The way forward will probably have the be the use of some flag to disable this behavior using nerdamer.set

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants