5

第 2 種フレドホルム積分方程式に似た方程式があります。

ここに画像の説明を入力

この方程式を解くために、特定の方程式に収束することが保証されている反復解が与えられています。ここでの唯一の問題は、この反復法を MATLAB で実装することです。

今のところ、コードの問題のある部分は次のようになります。

function delta = delta(x,a,P,H,E,c,c0,w)

delt = @(x)delta_a(x,a,P,H,E,c0,w);

for i=1:500
    delt = @(x)delt(x) - 1/E.*integral(@(xi)((c(1)-c(2)*delt(xi))*ms(xi,x,a,P,H,w)),0,a-0.001);  
end
delta=delt;

end

delta_aの関数でxあり、反復の初期値を表します。とmsの関数です。xxi

お気づきかもしれませんが、反復では (積分の前) と(積分の内側) のdelt両方に依存したいと考えています。残念ながら、このコードの書き方 (関数ハンドルを使用) では、希望どおりの数値が得られません。は定義されていないため (定義するまで)、のとの の 2 つの異なる関数として記述することもできません。では、それが積分の内部に依存していることを確認しながら、反復から数値を取得するにはどうすればよいでしょうか?xxideltxxixiintegraldeltxi

これを解決する方法について何か提案はありますか?

数値積分の使用

入力パラメータの説明: x は数値のベクトルで、残りはすべて定数です。私のコードの問題は、入力パラメーター x が使用されていないことです (これは、x がシンボルとして扱われていることを意味すると思います)。

4

2 に答える 2

0

問題の離散化されたバージョンを解決することを検討することをお勧めします。

FredholmKカーネルを離散化する行列としますk(t,s)。たとえば、

   K(i,j) = int_a^b K(x_i, s) l_j(s) ds

ここl_j(s)で、たとえば、 は補間ノード に関連付けられた j 番目のラグランジュ補間(x_i) = x_1,x_2,...,x_nです。

次に、Picard 反復を解くのは、実行するのと同じくらい簡単です。

  phi_n+1 = f + K*phi_n

すなわち

  for i = 1:N   
       phi = f + K*phi
  end

ここでphi_n、 とは上のとfのノード値です。phif(x_i)

于 2013-05-15T17:55:18.817 に答える