nerdamer icon indicating copy to clipboard operation
nerdamer copied to clipboard

vector addition with an unknown variable

Open gunnarmein-ts opened this issue 2 years ago • 5 comments

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?

gunnarmein-ts avatar May 07 '22 20:05 gunnarmein-ts

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.

jiggzson avatar May 08 '22 17:05 jiggzson

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]".

gunnarmein-ts avatar May 08 '22 18:05 gunnarmein-ts

@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.

jiggzson avatar May 10 '22 17:05 jiggzson

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?

gunnarmein-ts avatar May 10 '22 18:05 gunnarmein-ts

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

jiggzson avatar May 12 '22 01:05 jiggzson