簡體   English   中英

如何在MATLAB中正確設置數值積分?

[英]How do I properly setup numerical integration in MATLAB?

我想整合這個表達式:

正態分布函數:

但是我似乎在設置功能時遇到了問題。 正如 MATLAB解釋中所述,我已經定義了一個名為'NDfx.m'的獨立函數,如下所示:

    function [ y ] = NDfx(x)

    y = (1/sqrt(2*pi))*exp(-.5*x^2); % Error occurs here

    end

但是當我在我的main函數中調用它時,我在上面的注釋行中收到錯誤。 我的主要功能如下:

function[P] = NormalDistro(u,o2,x)

delta = x-u;
dev = abs((delta)/o2);           % Normalizes the parameters entered into function
P_inner = quad(@NDfx,-dev,dev);  % Integrates function NDfx from -dev to dev (error here)
P_outer = 1 - P_inner;           % Calculation of outer bounds of the integral

if delta > 0
    P = P_inner + (P_outer/2);

elseif delta < 0
    P = P_outer/2;

elseif dev == 0
    P = .5;

end
end

我得到的具體錯誤是:

錯誤==> mpower

輸入必須是標量和方陣

您已正確設置所有內容以進行集成。 錯誤在於函數本身的定義。 當將變量用於將要集成的函數時,“。” 當它們應用於變量時,(句點)必須在^*類的運算符之前:

function [y] = NDfx(x)

    y = (1/sqrt(2*pi))*exp(-.5*(x.^2));

end

Krono和user57368是正確的。 他們已經正確回答了您的實際問題。 我的回答只是回答你沒有問過的問題。 也就是說,為什么你在這里使用四核? 關鍵是許多人想要整合該形式的功能,並且已經完成了! 使用現有工具來解決您的問題,因為這些工具通常由知道如何准確有效地解決問題的人編寫。

在這種情況下,現有工具由erf和erfc功能組成。 它們為您的問題提供准確,高效,矢量化的解決方案。 您需要做的唯一事情是弄清楚如何將這些積分轉換為您當前的問題,通過簡單縮放輸入到erf和輸出來完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM