You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matlab找到正态分布与柯西分布的3个交点(而非2个)?

找到正态分布与柯西分布的第三个交点的Matlab实现

要找到两个分布的所有交点,核心是联立它们的概率密度函数(pdf),求解方程 f(x) = g(x)(其中f(x)为正态pdf,g(x)为柯西pdf)的根。以下分两种常见场景给出实现方法:

场景1:对称分布的三个交点(原点+一对对称点)

当正态分布(均值为0)与柯西分布(位置参数为0)在原点处的pdf相等时,会出现三个交点:原点,以及一对关于原点对称的点。

Matlab代码实现

% 设置参数:使正态与柯西在原点处pdf相等
sigma = sqrt(pi/2); % 正态分布N(0, sigma)的标准差
gamma = 1; % 柯西分布C(0, gamma)的尺度参数

% 定义差值函数:h(x) = 正态pdf - 柯西pdf,找h(x)=0的根
h = @(x) normpdf(x, 0, sigma) - (1/(pi*gamma*(1 + (x/gamma).^2)));

% 求解三个交点
root_neg = fzero(h, [-2, -1]); % 负半轴交点,指定区间[-2,-1]
root_origin = 0; % 原点处直接满足h(0)=0
root_pos = fzero(h, [1, 2]); % 正半轴交点,指定区间[1,2]

% 输出结果
fprintf('三个交点的x坐标:\n');
fprintf('负半轴:%.6f\n', root_neg);
fprintf('原点:%.6f\n', root_origin);
fprintf('正半轴:%.6f\n', root_pos);

% 可视化验证
x = linspace(-5, 5, 1000);
plot(x, normpdf(x, 0, sigma), 'r-', ...
     x, 1/(pi*gamma*(1 + (x/gamma).^2)), 'b--', ...
     [root_neg, root_origin, root_pos], ...
     [normpdf(root_neg,0,sigma), normpdf(root_origin,0,sigma), normpdf(root_pos,0,sigma)], ...
     'ko', 'MarkerFaceColor', 'k');
legend('正态分布pdf', '柯西分布pdf', '交点');
xlabel('x'); ylabel('概率密度');
grid on;

场景2:非对称分布的三个交点(无对称性)

如果正态分布的均值不为0,或柯西分布的位置参数不为0,交点可能无对称性,需要先通过图像确定根的大致区间,再逐个求解。

Matlab代码实现

% 设置参数:正态N(1,1),柯西C(0,1)
mu = 1; sigma = 1; % 正态分布参数
x0 = 0; gamma = 1; % 柯西分布参数

% 定义差值函数
h = @(x) normpdf(x, mu, sigma) - (1/(pi*gamma*(1 + ((x - x0)/gamma).^2)));

% 先绘制差值函数图像,确定零点区间
figure;
x = linspace(-3, 3, 1000);
plot(x, h(x), 'b-', x, 0, 'k--');
xlabel('x'); ylabel('h(x) = 正态pdf - 柯西pdf');
title('差值函数图像(用于确定根的区间)');
grid on;

% 根据图像确定区间,求解三个根
root1 = fzero(h, [-2, 0]);   % 负半轴交点
root2 = fzero(h, [0, 1]);    % 中间交点
root3 = fzero(h, [1, 3]);    % 正半轴交点

% 输出结果
fprintf('三个交点的x坐标:\n');
fprintf('%.6f\n%.6f\n%.6f\n', root1, root2, root3);

% 可视化验证
figure;
plot(x, normpdf(x, mu, sigma), 'r-', ...
     x, 1/(pi*gamma*(1 + ((x - x0)/gamma).^2)), 'b--', ...
     [root1, root2, root3], ...
     [normpdf(root1,mu,sigma), normpdf(root2,mu,sigma), normpdf(root3,mu,sigma)], ...
     'ko', 'MarkerFaceColor', 'k');
legend('正态分布pdf', '柯西分布pdf', '交点');
xlabel('x'); ylabel('概率密度');
grid on;

关键说明

  • fzero函数需要指定根所在的区间(或初始点),因此必须先通过绘图确定零点的大致位置,避免求解到错误的根。
  • 若你的分布参数不同,只需修改代码中的sigma、mu、x0、gamma等值即可。

内容的提问来源于stack exchange,提问作者lydiahe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 11:54:56