『壹』 用matlab求解一個兩重積分方程(未知數在積分下限,含復數積分)
說明
1、f(x)很難求出閉式表達式。
2、使用符號積分計算量很大,而且可能根本就無法計算。
3、可使用integral函數進行數值積分。與quad系列函數相比,integral的優勢是可以計算積分限為無窮大的情況。該函數自2012a引入。
4、f(x)的值應為實數,但由於數值計算的誤差可能導致結果為復數,所以計算之後對結果取實部。
5、因後續還需要對f(x)進行積分,所以用arrayfun將其寫成支持向量輸入的形式。
6、PFA的計算,積分上限為無窮大,但取無窮大的上限容易導致出錯(我不確定是否可通過演算法設置避免),因而從實際計算需要出發,上限取一個有限值,例如1000。
結果
r=
10.3200
參考代碼
N=25;M=4;
Fw=@(w)((1-j*w).*(1-j*w/N).*(1+w.^2/N)).^-M;
fx=@(X)real(arrayfun(@(x)1/(2*pi)*integral(@(w)Fw(w).*exp(-j*w*x),-inf,inf),X))
ezplot(fx,[-2 12])
ylabel('f(x)')
P=@(r)integral(fx,r,1000)-0.01;
r=fsolve(P,10.3)