The goal of the SymPy 2022 Season of Docs project, is to create documentation so that users can easily learn how to solve their mathematical problems.
Analysis of the Google search terms (below) reveals that searchers conceive of "solving" more broadly than SymPy's various solving functions; for example, searchers may want to "solve" an integral. So to best meet users' needs, this project will include any type of highly-sought "solving".
The new solving main page will thus help direct users to the type of solving they need, whether it be one of SymPy’s solvers or “solving” an integral, etc. The sub-pages will contain step-by-step guides for how to solve each type of mathematical problem.
We will prioritize the types based on interest. Because the SymPy community has opted not to have direct analytics installed on its documentation site due to user privacy concerns, we cannot track which page a user goes to next after a search leads them to a page on our site. Thus, we use more indirect analytics like Google Search Console. We extracted one year's worth of that data ending on April 15, 2022. Each search query, for example "sympy solve", is aggregated across the year with the following data:
Note: SymPy has a function called solve
which is designed to find the roots of an equation or system of equations. SymPy solve
may or may not be what users need for a particular problem, so this project's goal is to document commonly-requested types of "solving" regardless of the SymPy function best suited to the task.
Because the focus of the Season of Docs 2022 project is improving SymPy's solving documentation (broadly conceived), I filtered the 1000 top queries down to those containing the stem "solv" (to capture "solve", "solver", "solving", etc.), which gave 127 queries. I categorized each query into one of 15 categories. The categories were designed to represent searchers' conception the type of solving requested. The goal is to present a visitor to the docs.symy.org new solving page with a reasonable number of solving types, so the visitor can quickly find the type of solving they need and go to that sub-page. Any such categorization is subjective and may contain overlap between categories. The "general" category includes queries where the searcher's exact intent is unclear, for example "sympy solve" and "python solver".
For each category, I summed the clicks and impressions, and took the mean of the click-through rate (ctr) and position. To prioritize the categories, I sorted by impressions. I chose impressions rather than clicks because impressions counts the number of times docs.symy.org pages were deemed relevant by the search engine. Clicks, by contrast, also take into account whether the searcher chose the docs.symy.org link, which is affected by the page title, summary, etc.
clicks_sum | impressions_sum | ctr_mean | position_mean | |
---|---|---|---|---|
Category | ||||
general | 34813 | 73944 | 47.68 | 1.50 |
equation | 11868 | 40430 | 33.40 | 2.57 |
numerical | 3696 | 16844 | 43.12 | 1.93 |
partial differential equation(s) | 1485 | 16215 | 21.89 | 4.24 |
system of equations | 2814 | 8513 | 39.58 | 2.20 |
ordinary differential equation(s) | 3751 | 6415 | 57.93 | 1.10 |
system of linear equations | 2086 | 3437 | 58.08 | 1.10 |
system of nonlinear equations | 1073 | 2224 | 47.44 | 1.15 |
matrix | 1134 | 1918 | 61.83 | 1.06 |
inequality | 596 | 995 | 59.46 | 1.02 |
algebra | 289 | 692 | 41.76 | 1.18 |
polynomial | 218 | 300 | 72.67 | 1.00 |
diophantine | 53 | 131 | 40.46 | 1.01 |
integral | 69 | 103 | 66.99 | 1.00 |
differential equation(s) | 58 | 99 | 58.59 | 1.05 |
The project will focus on those categories, prioritizing in roughly the order in the table the
For completeness, all 127 top queries containing "solv" are below, including their categorization.
Top queries | Clicks | Impressions | CTR | Position | Category | Note | |
---|---|---|---|---|---|---|---|
0 | sympy solve | 12662 | 20093 | 63.02 | 1.11 | general | |
14 | python solver | 3553 | 8720 | 40.75 | 1.27 | general | |
15 | python solve equation | 2913 | 11087 | 26.27 | 2.55 | equation | |
18 | sympy solve equation | 2368 | 3543 | 66.84 | 1.00 | equation | |
24 | python equation solver | 2092 | 5992 | 34.91 | 1.66 | general | |
31 | solve sympy | 1908 | 2691 | 70.90 | 1.03 | general | |
33 | solve python | 1854 | 5960 | 31.11 | 2.00 | general | |
36 | solve equation python | 1765 | 5769 | 30.59 | 2.24 | equation | |
45 | sympy solve system of equations | 1466 | 2514 | 58.31 | 1.01 | system of equations | |
46 | solver python | 1459 | 3365 | 43.36 | 1.24 | general | |
50 | python solve | 1401 | 5136 | 27.28 | 2.47 | general | |
54 | sympy nsolve | 1358 | 2674 | 50.79 | 1.00 | numerical | |
56 | sympy.solve | 1325 | 2173 | 60.98 | 1.22 | general | |
59 | sympy solveset | 1309 | 1861 | 70.34 | 1.00 | general | |
71 | sympy dsolve | 1111 | 1812 | 61.31 | 1.06 | ordinary differential equation(s) | |
93 | sympy linsolve | 917 | 1402 | 65.41 | 1.03 | system of linear equations | |
99 | nsolve sympy | 831 | 1421 | 58.48 | 1.04 | numerical | |
109 | sympy solve matrix equation | 776 | 1362 | 56.98 | 1.15 | matrix | |
110 | equation solver python | 771 | 2131 | 36.18 | 1.63 | equation | |
129 | dsolve python | 647 | 1202 | 53.83 | 1.06 | ordinary differential equation(s) | |
131 | dsolve sympy | 644 | 1034 | 62.28 | 1.05 | ordinary differential equation(s) | |
133 | python sympy solve | 631 | 1128 | 55.94 | 1.32 | general | |
134 | sympy solve for variable | 627 | 1032 | 60.76 | 1.00 | equation | |
136 | sympy solver | 618 | 906 | 68.21 | 1.01 | general | |
137 | nsolve python | 616 | 1763 | 34.94 | 1.60 | numerical | |
141 | solveset sympy | 569 | 857 | 66.39 | 1.00 | general | |
146 | sympy solve differential equation | 533 | 773 | 68.95 | 1.00 | ordinary differential equation(s) | |
147 | solver in python | 528 | 1873 | 28.19 | 2.46 | general | |
154 | sympy solve linear system | 511 | 848 | 60.26 | 1.06 | system of linear equations | |
160 | python pde solver | 486 | 2061 | 23.58 | 2.88 | partial differential equation(s) | |
162 | sympy nonlinsolve | 482 | 812 | 59.36 | 1.01 | system of nonlinear equations | |
167 | solve equation sympy | 478 | 657 | 72.75 | 1.00 | equation | |
170 | sp.solve | 470 | 885 | 53.11 | 1.32 | general | |
171 | solveset | 459 | 838 | 54.77 | 1.01 | general | |
178 | pde solver python | 437 | 1459 | 29.95 | 2.64 | partial differential equation(s) | |
188 | linsolve sympy | 421 | 669 | 62.93 | 1.03 | system of linear equations | |
200 | sympy solve inequality | 398 | 654 | 60.86 | 1.00 | inequality | |
203 | solve function python | 393 | 1656 | 23.73 | 2.01 | general | |
227 | python solve for x | 341 | 1171 | 29.12 | 1.90 | equation | |
237 | sym.solve | 324 | 574 | 56.45 | 1.25 | general | |
247 | sympy solve function | 314 | 521 | 60.27 | 1.01 | general | |
251 | solve system of equations sympy | 309 | 587 | 52.64 | 1.02 | system of equations | |
252 | python solve function | 308 | 1241 | 24.82 | 1.96 | general | |
262 | sympy equation solver | 298 | 459 | 64.92 | 1.00 | equation | |
265 | sympy solvers | 297 | 422 | 70.38 | 1.00 | general | |
273 | solve equation in python | 290 | 2069 | 14.02 | 3.85 | equation | |
274 | python algebra solver | 289 | 692 | 41.76 | 1.18 | algebra | |
278 | sympy numerical solve | 283 | 477 | 59.33 | 1.00 | numerical | |
283 | sympy solve equations | 279 | 448 | 62.28 | 1.01 | general | |
309 | sympy solve ode | 257 | 399 | 64.41 | 1.00 | ordinary differential equation(s) | |
317 | python nsolve | 250 | 701 | 35.66 | 1.59 | numerical | |
354 | python dsolve | 226 | 474 | 47.68 | 1.19 | ordinary differential equation(s) | |
355 | solve equations python | 225 | 1154 | 19.50 | 3.27 | equation | |
369 | sympy solve polynomial | 218 | 300 | 72.67 | 1.00 | polynomial | |
384 | sympy solve system of nonlinear equations | 212 | 635 | 33.39 | 1.66 | system of nonlinear equations | |
387 | solve for x python | 210 | 863 | 24.33 | 2.03 | equation | |
410 | solve in python | 198 | 1504 | 13.16 | 3.34 | general | |
413 | python solve inequality | 198 | 341 | 58.06 | 1.04 | inequality | |
414 | simpy solve | 198 | 294 | 67.35 | 1.06 | general | |
417 | sympy matrix solve | 195 | 292 | 66.78 | 1.03 | matrix | |
424 | python solvers | 191 | 583 | 32.76 | 1.04 | general | |
436 | nonlinsolve | 186 | 359 | 51.81 | 1.03 | system of nonlinear equations | |
447 | sympy solve system | 181 | 289 | 62.63 | 1.00 | system of equations | |
454 | sympy solve equation for variable | 175 | 340 | 51.47 | 1.03 | equation | |
455 | solveset python | 175 | 285 | 61.40 | 1.01 | general | |
456 | sympy solve equation system | 175 | 260 | 67.31 | 1.01 | system of equations | |
487 | sympy solve matrix | 163 | 264 | 61.74 | 1.00 | matrix | |
503 | sympy solve set of equations | 158 | 276 | 57.25 | 1.04 | system of equations | |
520 | sympy solve numerically | 152 | 303 | 50.17 | 1.13 | numerical | |
532 | solve in sympy | 149 | 227 | 65.64 | 1.09 | general | |
537 | sympy solve for x | 147 | 293 | 50.17 | 1.00 | equation | |
559 | python solve algebraic equation | 139 | 350 | 39.71 | 1.95 | equation | |
563 | python solve equations | 137 | 795 | 17.23 | 3.45 | system of equations | |
567 | sympy.nsolve | 136 | 248 | 54.84 | 1.01 | numerical | |
581 | sympy ode solver | 132 | 194 | 68.04 | 1.00 | ordinary differential equation(s) | |
597 | solve function sympy | 126 | 172 | 73.26 | 1.01 | general | |
619 | pde solver | 121 | 10763 | 1.12 | 8.56 | partial differential equation(s) | |
624 | solve en python | 119 | 277 | 42.96 | 1.48 | general | |
631 | python solve pde | 117 | 451 | 25.94 | 3.88 | partial differential equation(s) | |
635 | solve function in python | 116 | 986 | 11.76 | 3.68 | general | |
636 | sympy solve system of linear equations | 116 | 308 | 37.66 | 1.28 | system of linear equations | |
655 | nonlinsolve sympy | 112 | 205 | 54.63 | 1.00 | system of nonlinear equations | |
678 | scipy pde solver | 106 | 438 | 24.20 | 3.23 | partial differential equation(s) | |
681 | sympy dsolve initial conditions | 105 | 385 | 27.27 | 1.51 | ordinary differential equation(s) | |
692 | sympy solve symbolic equation | 103 | 204 | 50.49 | 1.00 | equation | |
708 | sympy solve for | 99 | 200 | 49.50 | 1.00 | equation | |
717 | solving equations python | 97 | 601 | 16.14 | 4.00 | equation | |
718 | python function solver | 97 | 275 | 35.27 | 1.35 | general | |
722 | sympy.dsolve | 96 | 142 | 67.61 | 1.04 | ordinary differential equation(s) | |
735 | equation solver in python | 92 | 483 | 19.05 | 3.12 | equation | |
736 | sympy solve quadratic equation | 92 | 313 | 29.39 | 1.64 | equation | |
742 | sympy solve python | 91 | 143 | 63.64 | 1.03 | general | |
746 | solve system of equations python sympy | 90 | 167 | 53.89 | 1.03 | system of equations | |
751 | python partial differential equation solver | 89 | 350 | 25.43 | 2.85 | partial differential equation(s) | |
757 | solve equations in python | 87 | 978 | 8.90 | 4.36 | equation | |
775 | solve() python | 83 | 559 | 14.85 | 2.88 | general | |
790 | sympy solve nonlinear system of equations | 81 | 213 | 38.03 | 1.04 | system of nonlinear equations | |
803 | solve pde python | 77 | 520 | 14.81 | 6.08 | partial differential equation(s) | |
809 | using sympy to solve equations | 77 | 139 | 55.40 | 1.06 | equation | |
812 | solver en python | 76 | 243 | 31.28 | 2.11 | general | |
820 | solving equations in python | 73 | 1564 | 4.67 | 5.86 | equation | SymPy should rank higher: Used in most top results. |
832 | python solveset | 72 | 98 | 73.47 | 1.00 | general | |
839 | nsolve | 70 | 9257 | 0.76 | 7.05 | numerical | |
848 | sym solve | 70 | 127 | 55.12 | 1.18 | general | |
851 | sympy solving equations | 70 | 101 | 69.31 | 1.01 | equation | |
856 | solve command python | 69 | 166 | 41.57 | 1.25 | general | |
858 | sympy solve linear equations | 69 | 138 | 50.00 | 1.11 | system of linear equations | |
860 | solve sympy python | 69 | 112 | 61.61 | 1.00 | general | |
861 | sympy solve integral | 69 | 103 | 66.99 | 1.00 | integral | |
865 | python solving equations | 67 | 645 | 10.39 | 4.51 | system of equations | |
873 | how to solve equations in python | 66 | 2028 | 3.25 | 6.66 | system of equations | |
874 | python solve equation for one variable | 66 | 1797 | 3.67 | 5.74 | equation | |
904 | python sympy solve system of equations | 61 | 100 | 61.00 | 1.03 | system of equations | |
924 | solve differential equation python sympy | 58 | 99 | 58.59 | 1.05 | differential equation(s) | |
936 | sympy fsolve | 56 | 234 | 23.93 | 1.71 | equation | SymPy has no fsolve. scipy fsolve finds the roots of a function. |
938 | sp solve | 56 | 139 | 40.29 | 1.10 | general | |
945 | solve for x in python | 55 | 535 | 10.28 | 4.39 | equation | |
952 | sympy solve multiple equations | 54 | 629 | 8.59 | 2.54 | system of equations | |
953 | solve an equation python | 54 | 168 | 32.14 | 2.20 | equation | |
962 | solvers python | 53 | 153 | 34.64 | 1.00 | general | |
963 | diophantine equation solver python | 53 | 131 | 40.46 | 1.01 | diophantine | |
965 | python solve() | 52 | 261 | 19.92 | 3.04 | general | |
967 | python solve partial differential equation | 52 | 173 | 30.06 | 3.83 | partial differential equation(s) | |
973 | solve linear system sympy | 52 | 72 | 72.22 | 1.06 | system of linear equations | |
975 | how to solve equation in python | 51 | 1108 | 4.60 | 6.22 | equation | |
991 | sympy solve simultaneous equations | 50 | 223 | 22.42 | 2.11 | system of equations | |
999 | how to solve an equation in python | 49 | 1087 | 4.51 | 5.90 | equation |