2016-05-17 31 views
1

私は現時点で数値解析のコースを取っており、matlabには全く新しいです。これは、私が与えられた大きな課題の一歩です。線形補間を使ってx切片を見つける

x-インターセプトを解決したい曲線の値として、xとyの値は69個あります。私はx = 0に対応する値を持っていません。

私の考えは直線に係数を得るために0に最も近い点の間を直線的に補間してからx = 0について解くことでしたが、どうやってそれを行うのか本当に分かりません。

私は、x = 0に近い値を発見し、ベクター中にそれらを格納しています

x = [0.251287 0.2555517]; 
y = [0.014228 -0.003326]; 

だから私はすでにx切片は約0.25であることを知っています。

私のアプローチは、interp1を使用していた。その後、

pp = interp1(x,y,'linear','pp'); 

そして、それを解決するために、私はPPから取得した係数を使用しています。係数は-4.11677と0.014228です。しかし、これらの値をx = 0に使うと、私は非常に遠い、0.003456の答えを得ます。

私のアプローチで何かが間違っていると感じます。誰かが私を正しい方向に向けることができますか?

答えて

0

interp1は、2つの点の間の値を補間することを意味します。だから、得られる第2の係数は、単にポイントの第1のペアのy値です。 interp1を使用する場合は、2つのx値の間でドメイン外に外挿する必要がありますが、それは線形回帰を行う非常に厄介な方法です。

代わりに、polyfitを使用して、選択した順序の多項式にデータを当てはめる必要があります。あなたは、データセット全体、またはあなたが特定した2つの値のペアに対して行うことができます。後者の場合には、すでに線形回帰(順序1の多項式)を使用しているので、あなたはどうなる:

p = polyfit(x,y,1) 

p(2)はあなたのy切片になります。 x切片は、次のようになります。

x-intercept = -p(2)/p(1) 

polyfitHERE上のMatlabの情報を参照してください。

+0

2組の値にpolyfitを使用すると、pは-4.11677と1.04872という2つの値を格納します。最初の値はinterp1から取得したものと同じですが、2番目の値は異なっています。 一次方程式y = kx + mのkとmとしてpolyfitからの係数を使用し、y = 0を解くと、xは0.25474になります。これは正解と思われる。 なぜ、polyfitからの回答がinterp1の回答と異なるのですか?彼らは同じでなければならないように私には思われる。 – Victoria

+0

インターセプトが必要な場合は、y = 0ではなく、x = 0を検索する必要があります。 –

+0

x切片が必要なので、曲線がx軸を横切るときです。あなたはy切片を参照しています。それにもかかわらず、私はpolyfitを使って良い答えを得ました。 interp1とpolyfitの結果がどう違うのか、ご存じですか? – Victoria