回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个函数和一组点。功能是:</p>
<pre><code>s(t) = m*g*t/k-(m*m/(k*k))*(exp(-k*t/m)-1)
</code></pre>
<p>其中<code>m</code>和<code>k</code>是所讨论的参数。
我有<code>(t, s(t))</code>的数据</p>
<p>我需要找到最好的<code>m</code>和<code>k</code>来使这个等式适合我的数据,而且我几乎没有编程经验。你知道吗</p>
<p>在<code>R</code>中似乎更容易:</p>
<pre><code> df<-read.table("freefall2.txt", header = FALSE, sep = '\t',
strip.white = TRUE, na.strings = "empty")
time<-c(df[1])
position<-c(df[3])
fallData<-data.frame(t=time, position=c(df[3]))
plot(fallData)
m<-60
k<-1
secs=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
ft=c(16,62,138, 242, 366, 504, 652, 808, 971,
1138, 1309, 1483, 1657, 1831, 2005, 2179, 2353, 2527, 2701, 2875)
jitter(secs)
jitter(ft)
fit<-nls(ft~(m*g*secs/k)+(m^2/k^2)*(exp(-k*secs/m)-1),start = list(k=k,m=m))
</code></pre>
<p>这是最好的尝试,但它抛出:</p>
<pre><code>Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
</code></pre>
<p>Python代码:</p>
<pre><code>def func(t,m,k):
g=32.174
return m*g*t/k-(m*m/(k*k))*(np.exp(-k*t/m)-1)
def plotone():
plt.plot(D[0], D[2], 'b-', label='data')
popt, pcov = curve_fit(func, D[0], D[2])
plt.plot(D[0], func(D[0], *popt), 'r-', label='fit')
popt, pcov = curve_fit(func, D[0], D[2], bounds=(0, [120, 120]))
plt.plot(D[0], func(D[0], *popt), 'g--', label='fit-with-bounds')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
</code></pre>
<p>它生成了一个线性模型,没有返回所需的参数值。你知道吗</p>
<p>在Python中重新启动的尝试具有广泛的配方采样:</p>
<pre><code>x = D[0]
y = D[2]
ycount = 0
fitfunc = lambda t, m, k: m*32.174*t/k-(m*m/(k*k))*(np.exp(-k*t/m)-1) # Target function
errfunc = lambda t, m, k: fitfunc(t, m, k) - y[ycount]; ycount+=1# Distance to the target function
p0 = [-15., 0.8, 0., -1.] # Initial guess for the parameters
p1, success = optimize.leastsq(errfunc, D[2], args=(x, y))
print(type(p1))
print(type(success))
print(p1, success)
</code></pre>
<p>这个看起来更有希望,但我知道可能<code>1/2</code>。我不明白的部分是当我绘制它的时候我在看什么,如何给它提供我的模型函数,什么是成功,以及一系列其他问题。你知道吗</p>
<p>如果有人说如果你做<code>x</code>,<code>y</code>,和<code>z</code>,这会起作用,我会做的,但否则我想避开这个,因为它涉及更多,我没有时间。你知道吗</p>
<p>请帮助我将这些参数与模型函数相匹配。我很困惑。你知道吗</p>