我有一個相當複雜的功能H(x)
,我試圖解決的價值x
,使H(x) = constant
。我想用離散間隔生成的插值對象和H(間隔)的相應輸出來做到這一點,其中其他輸入保持不變。我表示插值對象f
。符號計算插值函數的輸入?
我的問題是插值對象的調用函數接受一個array_like,所以傳遞一個符號到f(x)
來使用sage的求解器方法是不成問題的。任何想法如何解決這個問題?我有插補功能f
。我想求解方程f(x) == sageconstant for
X .
from scipy.interpolate import InterpolatedUnivariateSpline as IUspline
import numpy as np
#Generating my interpolation object
xint = srange(30,200,step=.1)
val = [H(i,1,.1,0,.2,.005,40) for i in srange(30,299,step=.1)]
f = IUspline(xint,val,k=4)
#This will yield a sage constant
eq_G(x) = freeB - x
#relation that I would like to solve
eq_m(x) = eq_G(39.9) == f(x)
m = solve(eq_m(x),x)
上面的代碼(f(x)
更具體)生成
"TypeError: Cannot cast array data from dtype('0') to dtype('float64') according to the rule 'safe'.
編輯:任何功能H(x)
將導致同樣的錯誤,因此,它不不管什麼H(x)
是。爲了簡單起見(當我說H
很複雜時,我不是在開玩笑),請嘗試H(x) = x
。然後該塊將顯示如下:
from scipy.interpolate import InterpolatedUnivariateSpline as IUspline
import numpy as np
#Generating my interpolation object
xint = srange(30,200,step=.1)
H(x) = x
val = [H(i) for i in srange(30,299,step=.1)]
f = IUspline(xint,val,k=4)
#This will yield a sage constant
eq_G(x) = freeB - x
#relation that I would like to solve
eq_m(x) = eq_G(39.9) == f(x)
m = solve(eq_m(x),x)
生成插值對象不是問題,因此將xint轉換爲python整數不會改變任何內容。真正的問題是插值對象只會接受類似array_like的對象,這使得不能將符號傳遞給'f'來用於求解關係中的'x' eq_m(x)= eq_G(39.9)== f (x)的' –