二重積分を評価するためにガウス - ルジャンドル直交を使用したいと思います。私は、重みと横を生成するために、表記脚(X1、X2、m)を使用し、次のコードガウス - ルジャンドル直交を使用した二重積分
m=5000;
%generate weights and abscissas
[wx,xx]=leg(-1,1,m);
[wy,xy]=leg(-1,1,m);
%define function
[email protected](x,y) hypergeom(-1./4,3./2,x.^2.*y.^6);
%integrate with respect to x
intx=zeros(1,m);
for num=1:m
intx(num)=sum(wx.*psi(xx,yx(num)));
end
sum(wy.*intx)
を思い付きました。
このコードをより高速に実行する方法はありますか?
なぜforループの外側にPSIを定義していませんか?しかし、これはあなたのボトルネックではありません。コードのプロファイリングを試しましたか?ボタン "Run and time"でアクセスできます –
psiをfor loppの外に置くと、エラーが発生します。それは可読性yが定義されていないと言います – PhilCsar
あなたの提案を試みましたが、コードはまだ非常に遅く実行されます – PhilCsar