nikitos
Фев. 26, 2010 13:52:17
Вот кусок программы:
t=
z=
tn = numpy.array(t)
zn = numpy.array(z)
c=0.9
print scipy.interpolate.spline(t, z, c, order = 3, kind = ‘smoothest’, conds = None)
Так вот: при C=0.9 на выходе имеем 0.0
при C=-0.9 на выходе имеем 0.0
при C=0.33 на выходе имеем -1.#IND
Мне эти результаты вообще непонятны.
Если подставить tn и zn результат тот же.
Помогите разобраться. А то очень надо это аппроксимировать кубическим сплайном.
regall
Фев. 26, 2010 14:00:53
Готовые примеры по интерполяции разными видами сплайнов с графиками.
nikitos
Фев. 26, 2010 14:30:09
regall
Спасибо большое.
А может поясните что за ошибка? Вот:
Traceback (most recent call last):
File “D:/NIKITOS/STUDY/Study12/Practice/Auto2109new_Stand/All2109.sch.py”, line 51, in ?
StepRoad1 = pradis.Suspension.StepRoad.StepRoad(, [, , , 10.0, 10.0, 0.1, 20.0, False, 36, 0.0], desc = misc.ppl_scheme_desc(ppl_scheme_desc,'StepRoad1') )
File “c:\DINAMA\plugin\python\pradis\Suspension\StepRoad.py”, line 93, in __init__
stand (p1,Speed,WheelBase)
File “c:\DINAMA\plugin\python\pradis\Suspension\StepRoad.py”, line 75, in stand
tck = scipy.interpolate.splrep(tvaln,zvaln,s=0)
File “C:\Python24\Lib\site-packages\scipy\interpolate\fitpack.py”, line 418, in splrep
raise _iermess,_iermess
ValueError: Error on input data
regall
Фев. 26, 2010 14:40:54
А можно код в студию?
nikitos
Фев. 26, 2010 15:32:47
tval=
zval=
tvaln = numpy.array(t)
zvaln = numpy.array(z)
tck = scipy.interpolate.splrep(tvaln,zvaln,s=0)
tnew = numpy.arange(0, tvaln, 0.1, dtype = None)
Вот в принципе часть в которой проблема.
nikitos
Фев. 27, 2010 13:08:54
С ошибкой разобрался. Но теперь проблема в том что если взять сплайн по старым точкам то все совпадает. а если точки хоть немного отличаются то вообще на выходе непонятные значеия. Опять прошу помощи.
Код:
tval=
zval=
tck = scipy.interpolate.splrep(tval,zval,s=0)
tnew = numpy.arange(0, tval, 0.1, dtype = None)
znew = interpolate.splev(tnew,tck,der=0)
А результатом этого кода является:
tnew=
znew=[ -5.17260365e-07 -8.44812381e+09 -6.38409356e+09 2.30403377e+09
1.37282012e+10 2.40003517e+10 2.92324284e+10 2.55363742e+10
9.02413225e+09]
Если же вместо tnew ставим tval, т.е. старые точки то получаем вполне приемлемый и объяснимый результат:
znew=
Ошибка была в том что в tval у меня было подряд два одинаковых значения.
nikitos
Март 1, 2010 13:42:24
UP! Прошу помощи.