4

以下のコードは、グラフ内のポイントのポリフィットを生成しますが、このフィットが常にゼロを通過するようにしたいのですが、どうすればよいですか?

import pylab as pl
import numpy as np

y=(abs((UX2-UY2)+(2*UXY)))
a=np.mean(y)
y=y-a
x=(abs((X2-Y2)+(2*XY)))
b=np.mean(x)
x=x-b
ax=pl.subplot(1,4,4) #plot XY
fit=pl.polyfit(x,y,1)
slope4, fit_fn=pl.poly1d(fit)
print slope4
fit_fn=pl.poly1d(fit)
x_min=-2
x_max=5
n=10000
x_fit = pl.linspace(x_min, x_max, n) 
y_fit = fit_fn(x_fit)
q=z=[-2,5]
scat=pl.plot(x,y, 'o', x_fit,y_fit, '-r', z, q, 'g' )
4

2 に答える 2

-1

前述したように、実際には明示的に行うことはできませんpolyfit(ただし、独自の関数を作成することはできます)。

ただし、引き続き使用したい場合は、polyfit()この数学ハックを試すことができます。ポイントをゼロに追加し、wフラグ (ウェイト) を使用polyfit()して高いウェイトを与え、他のすべてのポイントのウェイトを低くします。これは、多項式がゼロまたは非常に近く通過するように強制する効果があります。

于 2013-07-29T20:39:18.417 に答える