[已解决] 为什么模拟计算样本越多,误差越大

[复制链接]
terminator002 发表于 2021-11-25 12:22:55
######
根据井深、井斜、方位计算出井眼轨迹,由于井斜、方位有测量误差(井斜正负0.2、方位正负2),遂决定验证测量精度误差对井眼轨迹结果的影响(加入误差值后计算出的目标点与原目标点的距离,距离越大说明误差越大)。 ######

matlab主程序


ZUOBIAO = trajectory_calculation(A)  % trajectory_calculation为计算井眼轨迹函数,返回目标点坐标值ZUOBIAO

erro_dev = 0.2;    %  井斜精度

erro_azm = 2;      %  方位精度

n = 1000;           %  重复次数


D = zeros(n,3);    %  储存目标点大地坐标值

D(1,:) = ZUOBIAO(length(ZUOBIAO)-1,:);  % 抽取倒数第二点大地坐标数值

erro_range_dev = zeros(length(A),n);  % 记录井斜精度误差随机值

erro_range_azm = zeros(length(A),n);  % 记录方位精度误差随机值


for i = 2 : n

    for j = k : length(A)

%         erro_range_dev(j,i) = unifrnd(-erro_dev,erro_dev);  % r=unifrnd(A,B)随机产生A-B之间的数值

%         erro_range_dev(j,i) = random('unif',-erro_dev,erro_dev);

        erro_range_dev(j,i) = (-erro_dev) + (erro_dev - (-erro_dev)).* rand;

        A(j,2) = A(j,2) + erro_range_dev(j,i);  % 加入井斜精度误差随机数

%         erro_range_azm(j,i) = unifrnd(-erro_azm,erro_azm);

%         erro_range_azm(j,i) = random('unif',-erro_azm,erro_azm);

        erro_range_azm(j,i) = (-erro_azm) + (erro_azm - (-erro_azm)).* rand;

        A(j,3) = A(j,3) + erro_range_azm(j,i);  % 加入方位精度误差随机数  

    end



    ZUOBIAO = trajectory_calculation(A);  % 基于加入精度误差值的连斜数据的井眼轨迹计算

    D(i,:) = ZUOBIAO(length(ZUOBIAO)-1,:);  % 抽取倒数第二点大地坐标数值


end


for i = 1 : length(D)

    distance(i) = sqrt((D(1,1)-D(i,1))^2 + (D(1,2)-D(i,2))^2 + (D(1,3)-D(i,3))^2);  % 模拟计算坐标点到原坐标点之间的距离

  • end


######
重复次数越少,distance值越小(重复100次,distance基本小于20,可以满足要求),但是重复次数越多,distance值的分布范围越大(重复10000次,distance值有8000多次大于200,不能满足精度要求)
######
原以为是随机数的产生有影响,随机数生成分别试了unifrnd、random、rand函数
######
想要的结果是重复足够多次数,得到一个距离误差区间

1 条回复


terminator002 发表于 2021-11-27 21:39:33

RE: 为什么模拟计算样本越多,误差越大

RE: 为什么模拟计算样本越多,误差越大
已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表