```python
from sympy import *
from sympy.solvers.inequalities import *
init_printing(use_latex='mathjax')
import numpy as np
```

## Аналитический расчет коэффициентов полинома


```python
a = symbols('a:6') # Коэффициенты 
t = symbols('t')   # Время
s0, ds0, dds0 = symbols('s0 ds0 dds0') # Начальное состояние
s1, ds1, dds1 = symbols('s1 ds1 dds1') # Конечное состояние

# Выражения для s(t), ds(t)/dt, d2s(t)/dt^2
s = a[0]*t**5 + a[1]*t**4 + a[2]*t**3 + a[3]*t**2 + a[4]*t + a[5]
ds = diff(s, t)
dds = diff(ds, t)

# Левые части
ls0 = s.subs(t, 0) - s0
lds0 = ds.subs(t, 0) - ds0
ldds0 = dds.subs(t, 0) - dds0
ls1 = s - s1
lds1 = ds - ds1
ldds1 = dds - dds1

# Символьное решение системы уравнений
res = solve([ls0, lds0, ldds0, ls1, lds1, ldds1], a)
```


```python
# s(t)
s
```




$$a_{0} t^{5} + a_{1} t^{4} + a_{2} t^{3} + a_{3} t^{2} + a_{4} t + a_{5}$$




```python
# ds(t)/dt
ds
```




$$5 a_{0} t^{4} + 4 a_{1} t^{3} + 3 a_{2} t^{2} + 2 a_{3} t + a_{4}$$




```python
# d2s(t)/dt^2
dds
```




$$20 a_{0} t^{3} + 12 a_{1} t^{2} + 6 a_{2} t + 2 a_{3}$$




```python
{key: factor(res[key]) for key in res}
```




$$\left \{ a_{0} : - \frac{dds_{0} t^{2} - dds_{1} t^{2} + 6 ds_{0} t + 6 ds_{1} t + 12 s_{0} - 12 s_{1}}{2 t^{5}}, \quad a_{1} : \frac{3 dds_{0} t^{2} - 2 dds_{1} t^{2} + 16 ds_{0} t + 14 ds_{1} t + 30 s_{0} - 30 s_{1}}{2 t^{4}}, \quad a_{2} : - \frac{3 dds_{0} t^{2} - dds_{1} t^{2} + 12 ds_{0} t + 8 ds_{1} t + 20 s_{0} - 20 s_{1}}{2 t^{3}}, \quad a_{3} : \frac{dds_{0}}{2}, \quad a_{4} : ds_{0}, \quad a_{5} : s_{0}\right \}$$




```python
# Выведем значения коэффициентов в обычном виде, чтобы копипастнуть их в код
for coef in a:
    print(res[coef])
```

    (-12*s0 + 12*s1 + t**2*(-dds0 + dds1) - 6*t*(ds0 + ds1))/(2*t**5)
    (15*s0 - 15*s1 + t**2*(3*dds0 - 2*dds1)/2 + t*(8*ds0 + 7*ds1))/t**4
    (-20*s0 + 20*s1 + t**2*(-3*dds0 + dds1) - 4*t*(3*ds0 + 2*ds1))/(2*t**3)
    dds0/2
    ds0
    s0


## Попробуем оценить необходимое время
Просто воспользуемся равноускоренным движением


```python
v0, v1, s, a, t = symbols('v0 v1 s a t')
eq1 = v0 + a*t - v1
eq2 = v0*t + a*t**2/2 - s
res = solve([eq1, eq2], (a, t))
res
```




$$\left [ \left ( - \frac{\left(v_{0} - v_{1}\right) \left(v_{0} + v_{1}\right)}{2 s}, \quad \frac{2 s}{v_{0} + v_{1}}\right )\right ]$$




```python
eq1
```




$$a t + v_{0} - v_{1}$$




```python
eq2
```




$$\frac{a t^{2}}{2} - s + t v_{0}$$




```python
res
```




$$\left [ \left ( - \frac{\left(v_{0} - v_{1}\right) \left(v_{0} + v_{1}\right)}{2 s}, \quad \frac{2 s}{v_{0} + v_{1}}\right )\right ]$$



# WTF


```python
x = symbols('x')
solve_poly_inequalities((
    (Poly(x+2), ">="), 
    (Poly(x**2-1), "<=")
))
```




$$\left[-2, \infty\right)$$




```python

```

dd63ca5c9f2191adbe35fb6f4b7aeb2e1e555236
ipynb
Jupyter Notebook
research/path_planning_help_symbol.ipynb
vstucar/vstucar
46ba2aebed1d9bd76a66db06af2bd8a4384b403d
MIT
research/path_planning_help_symbol.ipynb
vstucar/vstucar
46ba2aebed1d9bd76a66db06af2bd8a4384b403d
MIT
research/path_planning_help_symbol.ipynb
vstucar/vstucar
46ba2aebed1d9bd76a66db06af2bd8a4384b403d
MIT
Qwen/Qwen-72B
1. YES
2. YES