積分の無限の限界を持つ一定の積分の数値計算を含む数式を使用してデータに適合させようとしています。フィッティングのために、ベクトル化モデル関数を必要とするオクターブ関数leasqr
を使用します。次のコードは、数値積分を呼び出すときに発生するエラーを生成します。関数のベクトル化には、オクターブ単位での積分の数値計算が含まれています
不適合の引数(OP1は1x387で、OP2が10x2ではある)
function [fGsAb] = GsAbs (x, p)
Hw = 3108.0 ;
fGsAb = Hw ./ (2.4 .* p(1) .*p(2)) .^2 .* (exp (- (Hw - p(1) .* x) .^2 ...
./ (2.4 .* p(1) .*p(2)) .^2) - exp (- (Hw + p(1) .* x) .^2 ...
./ (2.4 .* p(1) .*p(2)) .^2)) ;
endfunction
function [GsDisp] = gauss_disp(x, p)
[GsDisp1, err] = quadgk (@(z) GsAbs(z, p) ./(z-x), - inf, x - 0.000001);
[GsDisp2, err] = quadgk (@(z) GsAbs(z, p) ./(z-x), x + 0.000001 , inf );
GsDisp = GsDisp1 +GsDisp2;
endfunction
h = [200:15:6000];
pin =[1 250];
dd = gauss_disp (h, pin);
私はループ使用している場合:私はエラーを持っていませんが、私はこの構造を使用することはできません
for i = 1 : length (h)
dd (i) = gauss_disp (h (i), pin)
endfor
をleasqr
。この制限を回避するにはどうすればよいですか?
ありがとうございます!
質問は不明です。これらの関数をファイルで定義していますか?またはオクターブの端子で直接?そしてどのラインがあなたにこのエラーを与えていますか? –
私はあなたの問題を回避する答えを提供しました。しかし、将来、 'leasqr'が' optim'パッケージからの関数であるというような関連情報をすべて提供してください。そして、これは特定のフォームの機能を期待するので、これは失敗します。私は自分自身を推測するために妥当な量の探偵活動をしなければならなかった。 –