2016-09-07 5 views
1

移動楕円と交差するために何かが移動しなければならない時間、角度、および速度を決定しようとしています。 。最小時間)今のところ私はこの冒険を支援するためSympyを使用しようとしていた次は私が実行していたコードです:。sympy.nsolve()を使用すると "TypeError:mphを作成できません"

import sympy as sp 
sp.init_printing() 

delta_x, delta_y, t = sp.symbols('delta_x delta_y t', real=True, positive=True) 
V, V_s, x_0, y_0, theta_s, theta_t = sp.symbols('V V_s x_0 y_0 theta_s theta_t', real=True) 
x, y = sp.symbols('x y', real=True) 

EQ1 = sp.Eq(((x-(x_0+V*sp.cos(theta_t)*t))/(delta_x+V*sp.cos(theta_t)*t))**2+((y-(y_0+V*sp.sin(theta_t)*t))/(delta_y+V*sp.sin(theta_t)*t))**2-1, 0) 
sx = sp.Eq(x, V_s*sp.cos(theta_s)*t) 
sy = sp.Eq(y, V_s*sp.sin(theta_s)*t) 

mysubs = [(V,5), (x_0, 10), (y_0, 10), (theta_t, 7*(sp.pi/4)), (delta_x, 0), (delta_y, 0)] 
sp.nsolve((EQ1.subs(mysubs), sx.subs(mysubs), sy.subs(mysubs)), (V_s, theta_s, t), (5, 0.0, 1)) 

この操作利回りの結果を:

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sympy/mpmath/calculus/optimization.py in findroot(ctx, f, x0, solver, tol, verbose, verify, **kwargs) 
    927   try: 
--> 928    fx = f(*x0) 
    929    multidimensional = isinstance(fx, (list, tuple, ctx.matrix)) 

<string> in <lambda>(_Dummy_75, _Dummy_76, _Dummy_77) 

/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sympy/mpmath/matrices/matrices.py in __init__(self, *args, **kwargs) 
    300      for j, a in enumerate(row): 
--> 301       self[i, j] = convert(a) 
    302    else: 

/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sympy/mpmath/ctx_mp_python.py in convert(ctx, x, strings) 
    661    return ctx.convert(x._mpmath_(prec, rounding)) 
--> 662   return ctx._convert_fallback(x, strings) 
    663 

/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/sympy/mpmath/ctx_mp.py in _convert_fallback(ctx, x, strings) 
    613     raise ValueError("can only create mpf from zero-width interval") 
--> 614   raise TypeError("cannot create mpf from " + repr(x)) 
    615 

TypeError: cannot create mpf from 0.08*(x - 13.535533905932737622)**2 + 0.08*(y - 6.464466094067262378)**2 - 1 

されていますこれはシステムが十分に拘束されていないためですか?角度と速度のファミリーがありますこれは動いている楕円を傍受するのに使うことができます。このエラーはこれを暗示していないようです。 (はい、この問題でV_sを制約しようとしても、同じエラーが表示されます)。

| Software | Version | 
|----------|-----------| 
| python | 3.5.2  | 
| sympy | 1.0  | 
| mpmath | 0.19  | 

答えて

0

変数xyはまだ方程式で象徴されている:

私は物事の以下のバージョンを使用しています。 nsolveでは、すべての変数を指定する必要があり、少なくとも変数と同じ数の式が必要です。したがって、mysubsにそれらの値を含めるか、またはそれらを解決する必要があります(ただし、nsolveで行うには、さらに2つの方程式が必要です)。

関連する問題