Opened 8 years ago
Closed 2 years ago
#11541 closed enhancement (fixed)
Add example with solution_dict and substituting in a matrix
Reported by: | kcrisman | Owned by: | mvngu |
---|---|---|---|
Priority: | minor | Milestone: | sage-6.9 |
Component: | documentation | Keywords: | beginner matrix solve symbolic sd90 |
Cc: | Merged in: | ||
Authors: | Travis Scholl | Reviewers: | Vincent Delecroix, Aly Deines |
Report Upstream: | N/A | Work issues: | |
Branch: | a925d7e (Commits) | Commit: | a925d7e71ff32acc4d3969adf9307318409d335f |
Dependencies: | Stopgaps: |
Description
See this ask.sagemath.org question. The poster wants an example something like
f(x,y)=x^2*y+y^2+y solutions=solve(list(f.diff()),[x,y]) the_solution=solutions[2] H=f.diff(2); # Hessian matrix
but showing this.
sage: solutions=solve(list(f.diff()),[x,y],solution_dict=True) sage: solutions [{y: 0, x: -I}, {y: 0, x: I}, {y: -1/2, x: 0}] sage: H.subs(solutions[2]) [(x, y) |--> -1 (x, y) |--> 0] [ (x, y) |--> 0 (x, y) |--> 2] sage: H(x,y).subs(solutions[2]) [-1 0] [ 0 2]
This seems like a reasonable request.
Change History (21)
comment:1 Changed 6 years ago by
- Milestone changed from sage-5.11 to sage-5.12
comment:2 Changed 6 years ago by
- Milestone changed from sage-6.1 to sage-6.2
comment:3 Changed 6 years ago by
- Milestone changed from sage-6.2 to sage-6.3
comment:4 Changed 5 years ago by
- Milestone changed from sage-6.3 to sage-6.4
comment:5 Changed 5 years ago by
- Branch set to u/tscholl2/matrix_solution_11541
- Commit set to 3843197f73f407aa9c5f733de056a8b18742bcc1
- Status changed from new to needs_review
comment:6 Changed 4 years ago by
- Reviewers set to Vincent Delecroix
- Status changed from needs_review to needs_work
Hello,
Could you use A = B
instead of A=B
? You did it in the first example but not the second. Something like
sage: solutions = solve(list(f.diff()), [x,y], solution_dict=True)
is much easier to read.
Vincent
comment:7 Changed 4 years ago by
- Commit changed from 3843197f73f407aa9c5f733de056a8b18742bcc1 to b26b32768c3338c31b515bc5c00d443ff9c05948
Branch pushed to git repo; I updated commit sha1. New commits:
b26b327 | fixed spacing
|
comment:8 Changed 4 years ago by
- Status changed from needs_work to needs_review
Thanks for pointing that out!
I added some spacing. Is there anything else you noticed?
comment:10 Changed 4 years ago by
- Milestone changed from sage-6.4 to sage-6.9
comment:11 Changed 4 years ago by
- Status changed from positive_review to needs_work
Doctest depends on dictionary order of symbolic variables:
sage -t --long src/sage/symbolic/relation.py ********************************************************************** File "src/sage/symbolic/relation.py", line 158, in sage.symbolic.relation Failed example: solutions Expected: [{y: 0, x: -I}, {y: 0, x: I}, {y: -1/2, x: 0}] Got: [{x: -I, y: 0}, {x: I, y: 0}, {x: 0, y: -1/2}] ********************************************************************** 1 item had failures: 1 of 131 in sage.symbolic.relation [295 tests, 1 failure, 7.50 s]
comment:12 Changed 4 years ago by
- Commit changed from b26b32768c3338c31b515bc5c00d443ff9c05948 to 97ee2c17f8010735e26b4b29dc95e2063a7f5e83
Branch pushed to git repo; I updated commit sha1. New commits:
97ee2c1 | Merge tag '6.9.beta6' into matrix_solution_11541
|
comment:13 Changed 4 years ago by
I didn't get that error when I tested the file. I merged in the latest release and I still don't get the error. Do you think it could be my Sage installation? It's a pretty clean version except for an optional package for another branch I was working on. Are other people getting this error?
comment:14 Changed 4 years ago by
The doctest sorts dictionaries, but the sort order of symbolic variables is random (and depends strongly on memory locations / the OS). Just rewrite the test as something that doesn't depend on random orders, e.g.
solutions == [{x: -I, y: 0}, {x: I, y: 0}, {x: 0, y: -1/2}]
comment:15 Changed 4 years ago by
- Commit changed from 97ee2c17f8010735e26b4b29dc95e2063a7f5e83 to 5307163434b35889cc6b166d386095ccd482afa6
Branch pushed to git repo; I updated commit sha1. New commits:
5307163 | removed dependency on order of dictionary in doctest
|
comment:16 Changed 4 years ago by
Interesting, I had no idea the order of symbolic variables was that random.
I updated the doc test using the equality check instead and it seems to work great. Thanks for the fix!
I noticed there was some other tests not using equality checks like this on lines 136 and 143 (and probably more), which is probably where I copied my test from. Should this be a separate ticket or should I modify it on this branch as well?
comment:17 Changed 2 years ago by
- Commit changed from 5307163434b35889cc6b166d386095ccd482afa6 to a925d7e71ff32acc4d3969adf9307318409d335f
Branch pushed to git repo; I updated commit sha1. New commits:
a925d7e | Merge branch 'develop' into 11541
|
comment:18 Changed 2 years ago by
I found that the other tests did not rely on multiple variables, so they are fine.
I also brought this branch up to date and checked that the docs still build.
comment:19 Changed 2 years ago by
- Status changed from needs_work to needs_review
comment:20 Changed 2 years ago by
- Keywords sd90 added
- Reviewers changed from Vincent Delecroix to Vincent Delecroix, Aly Deines
- Status changed from needs_review to positive_review
The doctests pass and the documentation builds and looks good.
comment:21 Changed 2 years ago by
- Branch changed from u/tscholl2/matrix_solution_11541 to a925d7e71ff32acc4d3969adf9307318409d335f
- Resolution set to fixed
- Status changed from positive_review to closed
Added two examples in symbolic expressions on:
http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/relation.html
One is substituting variables into matrices of symbolic functions and the other is solving a multivariate equation and substituting the solution into a matrix.
New commits:
Added example subtituting values into a matrix of symbolic functions.