2012-02-11 14 views
1

私は2組のデータに対してtrapz関数を使用していますが、何か問題があります。ここで奇妙な結果をもたらすtrapz関数

は、データのビューです: pressure drag coefficient and lift coefficient http://s17.postimage.org/inxk1xolr/cptheta.jpg

だから、あなたは私の問題を理解することができます。 y軸は圧力係数Cp、x軸は角度(49値、0:7.5:360)、緑正方行列のデータは実験から得られたデータ、赤色曲線は基本的にCp sin(角度)ピンクの1つがCp cos(angle)

赤色のtrapzを使うと、7.5が得られ、trapzの入力引数を逆にすると、この数値が負になります。問題はピンクのグラフで、trapzを使うと膨大な数が得られます(間違っていますが、これを得てはいけません)。また、入力引数を切り替えると、最初の数字が負ではなく、 、私は非常に近い答えを得た私が間違っているかわからないので、私は最初のループ(赤い曲線のクワッド)の場合、trapz

for i = 1:48 
    y = @(x) (Cp(i+1) - Cp(i))/(theta_rad(i+1) - theta_rad(i)) * x .* sin(x); 
    clll(i) = -0.5* quad(y,theta_rad(i), theta_rad(i+1)); 

end 
clll = sum(clll); 

for j = 1:48 
    f = @(t) (Cp(j+1) - Cp(j))/(theta_rad(j+1) - theta_rad(j)) * t .* cos(t); 
    cdddp(i) = 0.5* quad(f,theta_rad(j), theta_rad(j+1)); 

end 

cdddp = sum(cdddp); 

の結果をテストする(機能を必要とする)クワッドを使用しましたエラーはおそらくポイント間で使用された線形補間によるものであり、2番目のループでは私が探している答えの範囲内にある賢明な答えが得られました。私もExcelで台形ルールを試しましたが、私はこの巨大な数値をもう一度得ました。それは私が間違っていることです。


編集:

私はちょうど私が度ではなくラジアンで角度を使用して台形を使用していた、間違いを見つけました!今私ははるかに小さな数字を得ているが、クォードを使用する積分がより賢明な答えを与えるので、別の間違いがあると思う。

ここで私は、私はそれが私が正しい答えを得たtrapz機能にラジアンを使用した後、今働いてしまったtrapz

Cdp = 0.5*trapz(theta*pi/180, Cp.*cosd(theta)); %pressure drag coefficient 

Cl = -0.5*trapz(theta*pi/180, Cp.*sind(theta)); %lift coefficient 

答えて

0

のために使用しているコードです。私がやろうとしていた補間はナンセンスです!私は、Curve Fittingツールを使用してフィット感を作成するために管理し、それは

非常に効率的です。この

Cdp = 0.5*trapz(theta*pi/180, Cp.*cosd(theta)); %pressure drag coefficient 

はでツールを使用して達成することができます。

fit1 = createFit(theta*pi/180, Cp.*cosd(theta)); 
##createFit is generated by MatLab and I only need parts of it, all the plots commands were removed. 
Cdp = 0.5*integrate(fit1,0,2*pi) ##"integrate" < this is why the tool is great, No need to export the coefficients to the workspace, create a function handle then use quad