2011-12-06 8 views
0

基本的な台形アルゴリズムで「\ int_ {0}^{1}(exp(-int_ {0}^{y} f(x)dx))dy」を統合します。私はエラー宣言を受け取りますが、gを関数として定義する必要があります。どのようにそれを行うか考えていますか? お返事ありがとうございました!台形ルールmatlab

function y = trapapadbl(low1, up1,low2,up2,intstep1,intstep2,f) 
g = 0; 
step1 = (up1 - low1)/intstep1; 
step2 = (up2 - low2)/intstep2; 

for j = low1 : step1 : up1 
    g = g + feval(f,j); 
end 
g = @(y)(g - (feval(f, low1) + feval(f, up1))/2) * step1; 
for i = low2 : step2 : up2 
    y= y + feval(g,i); 
end 
y= (y - (feval(g, low2) + feval(g, up2))/2) * step2; 
+2

例を挙げてください。 – petrichor

+1

エラーメッセージも表示できますか? – Oli

+1

tesekkurler @İsmailArı:)私が評価したいのは、たとえばint_ {0}^{2} int_ {0}^{y} exp(x)dx dy =?私はプログラミングに乏しい経験を持っていますが、私はおそらく私が内在的な積分のための関数を定義すべきだと思います。 "どのように"実際に私の質問ですか? tesekkürlertekrar ... – user1018331

答えて

2
>> trapapadbl(0,1,0.1,0,1,0.1,@sin) 

??? Undefined function or variable "y". 

Error in ==> trapapadbl at 12 
    y= y + feval(g,i); 

あなたのコードを理解しようとするにはあまりにも難しい作業なし(!)エラーがyが初期化されなかったということです。 yに値を設定するまで何も追加することはできません。 yを0に初期化すると、コードが実行されますが、0が出力として得られます。これは0から1へのsinを統合すると起こりません。私は関数を間違って呼び出しているかもしれませんが、

また、変数gを同じ行でも倍数(数値)と関数として使用するため、コードが混乱することがあります。 yが匿名関数への入力と同じ問題が発生しますが、後で二重になります。構文的には正解ですが、読みにくいです。別の変数名の使用を検討するか、明確なコメント(またはその両方)を含めることを検討してください。

+0

@alexplanationありがとうございます!今私は少し混乱して私の質問を発見:) – user1018331

関連する問題