用matlab实现误差理论与数据处理的部分习题Word格式.docx

上传人:b****6 文档编号:20226933 上传时间:2023-01-21 格式:DOCX 页数:14 大小:18.74KB
下载 相关 举报
用matlab实现误差理论与数据处理的部分习题Word格式.docx_第1页
第1页 / 共14页
用matlab实现误差理论与数据处理的部分习题Word格式.docx_第2页
第2页 / 共14页
用matlab实现误差理论与数据处理的部分习题Word格式.docx_第3页
第3页 / 共14页
用matlab实现误差理论与数据处理的部分习题Word格式.docx_第4页
第4页 / 共14页
用matlab实现误差理论与数据处理的部分习题Word格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

用matlab实现误差理论与数据处理的部分习题Word格式.docx

《用matlab实现误差理论与数据处理的部分习题Word格式.docx》由会员分享,可在线阅读,更多相关《用matlab实现误差理论与数据处理的部分习题Word格式.docx(14页珍藏版)》请在冰豆网上搜索。

用matlab实现误差理论与数据处理的部分习题Word格式.docx

end

运行结果:

absoluteError5=-5.5556e-04

oppositeError5=-3.0864e-04

absouluteError7=-0.3000

oppositeError7=-0.2985

精度最高的是第三种,相对误差为0.000080

第二章

这章自己写了几个函数:

functionvalue=standardDeviation(n,v)

%value是返回的标准差,n是测量的值的矩阵,v是算术平均值

%standardDeviation函数是求测量的标准差

k=1;

fori=n

residualError(k,:

)=i-v;

%存放残差的向量

k=k+1;

value=((sum(residualError.^2))/(numel(n)-1))^0.5;

functionvalue=T_fenbubiao(a,v)

%该函数实现T分布表的查询

%v表示次数,a表示可信度

m_005=[12.714.303.182.782.572.452.362.312.262.23;

2.202.182.162.142.132.122.112.102.092.09;

2.082.072.072.062.062.062.052.052.052.04;

0002.022.012.001.991.991.991.98];

m_001=[63.669.925.844.604.033.713.503.363.253.17;

3.113.053.012.982.952.922.902.882.862.85;

2.832.822.812.802.792.782.772.762.762.75;

0002.702.682.662.652.642.632.63];

m_00027=[235.8019.219.216.625.514.904.534.284.093.96;

3.853.763.693.643.593.543.513.483.453.42;

3.403.383.363.343.333.323.303.293.283.27;

0003.203.163.133.113.103.093.08];

p=a;

switchp

casedouble(0.05)

index=lookup_index(v);

row=index

(1);

column=index

(2);

if(row>

0&

&

column>

0)

value=m_005(row,column);

value=1.96;

case0.0100;

value=m_001(row,column);

value=2.58;

case0.0027;

value=m_00027(row,column);

value=3.00;

otherwise

functionvalue=lookup_index(v)

ifv<

=10

value=[1,v];

elseif(v>

10&

v<

=20)

v1=rem(v,10);

ifv1==0;

v1=10;

value=[2,v1];

20&

=30)

v2=rem(v,10);

if(v2==0)

v2=10;

value=[3,v2];

elseif(v>

30&

=100)

v3=fix(v/10);

value=[4,v3];

value=[0,0];

functionresidualError=calculationResiduals(testValue)

%求残差的函数

%testValue是传入的测量值,residualError返回的残差值

averageValue=sum(testValue)/numel(testValue);

fori=testValue

temp=i-averageValue;

residualError(:

k)=temp;

functionvalue=judge(v,d3)

%判断有没有粗大误差函数

%d3是3倍的标准差

temp=abs(v);

vMax=max(temp);

ifvMax>

d3

value=findIndex(temp,vMax);

value=false;

functionvalue=findIndex(v,data)

fori=v

ifi==data;

value=k;

return;

value=false;

实现题目的主要代码:

%题目2-4求平均误差和算数平均值

test=[236.45,236.37,236.51,236.34,236.39,236.48,236.47,236.40];

%8次测试值

arithmeticAverageValue=sum(test)/numel(test);

%算术平均值

%根据贝塞公式求单次测量的标准差,d为标准差,dd为算术平均标准差

d=standardDeviation(test,arithmeticAverageValue);

dd=d/(numel(test))^0.5;

fprintf('

题目2-4'

);

算术平均值为%f,单次测量的标准差为%f,算术平均标准差为%f\n'

arithmeticAverageValue,d,dd);

%题目2-6求算术平均值,标准差,或然误差,平均误差

testValue2_6=[168.41,168.54,168.59,168.40,168.50];

arithmeticAverageValue2_6=sum(testValue2_6)/numel(testValue2_6);

d2_6=standardDeviation(testValue2_6,arithmeticAverageValue2_6);

%标准差

dd2_6=d2_6/(numel(testValue2_6))^0.5;

p2_6=0.6745*dd2_6;

%或然误差

averageError2_6=0.7979*dd2_6;

%平均误差

题目2-6'

算术平均值为%f,单次测量的标准差为%f,算术平均标准差为%f\n'

arithmeticAverageValue2_6,d2_6,dd2_6);

或然误差%f,平均误差%f\n'

p2_6,averageError2_6);

%题目2-8求置信限

averageDeviation=0.005/(5^0.5);

n=5;

P=0.95;

%置信限95%

%

(1)按t分布计算

a=0.05;

v=4;

t=T_fenbubiao(a,v);

%根据t分布表查对应的t值

x=t*averageDeviation;

题目2-12'

t分布下置信限为-%f到%f\n'

x,x);

%

(2)按正太分布做;

t=1.96;

%根据表知t=1.96

正太分布下置信限为-%f到%f\n'

%题目2-12求加权算术平均值及其标准差

xp=[102523.85102391.30102257.97102124.65101991.33101858.01101724.69101591.36];

%测试的次数

p=[13578642];

averageXp=sum(xp)/numel(xp);

fori=xp

temp=i-averageXp;

residualErrorV2=residualError.^2;

sum2_12=sum(xp.*p);

weightedAverage=sum2_12/sum(p);

%加权算术平均值

value=(sum(p.*residualErrorV2)/((numel(xp)-1)*sum(p))).^0.5;

%加权算术标准差

加权算术平均值%f,加权算术标准差%f\n'

weightedAverage,value);

%题目2-17判断是否有系统误差

testValue2_17=[14.71515.214.815.514.614.914.815.115];

averageValue=sum(testValue2_17)/numel(testValue2_17);

%判断测量次数的奇偶

cnt=numel(testValue2_17);

ifmod(cnt,2)==0

K=cnt/2;

K=(cnt+1)/2;

v=calculationResiduals(testValue2_17);

d2_17=sum(v(1:

K))-sum(v((K+1):

cnt));

题目2-17'

ifabs(d2_17)>

abs(max(v))

%f显著不为零,故测量中含有线性误差'

d2_17);

%f不显著为零,故测量中不含有线性误差'

%2-22莱以特准则判断粗大误差

testValue2_22=[28.5328.5228.5028.5228.5328.5328.5028.4928.4928.5128.5328.5228.4928.4028.50];

n=numel(testValue2_22);

averageValue2_22=sum(testValue2_22)/n;

d2_22=standardDeviation(testValue2_22,averageValue2_22);

%计算标准差

v2_22=calculationResiduals(testValue2_22);

%残差

d3_2_22=d2_22*3;

while1

index=judge(v2_22,d3_2_22);

ifindex%如果有粗大误差剔除

\n值%f是粗大误差应该提除\n'

testValue2_22(index));

testValue2_22(index)=[];

%删除对应的值

%重复第一次的步骤

n=numel(testValue2_22);

averageValue2_22=sum(testValue2_22)/n;

d2_22=standardDeviation(testValue2_22,averageValue2_22);

v2_22=calculationResiduals(testValue2_22);

d3_2_22=d2_22*3;

break;

代码的运行结果:

题目2-4算术平均值为236.426250,单次测量的标准差为0.059746,算术平均标准差为0.021124

题目2-6算术平均值为168.488000,单次测量的标准差为0.082280,算术平均标准差为0.036797或然误差0.024819,平均误差0.029360

题目2-8t分布下置信限为-0.006216到0.006216正太分布下置信限为-0.004383到0.004383

题目2-12加权算术平均值102028.342500,加权算术标准差87.661818

题目2-170.800000显著不为零,故测量中含有线性误差

题目2-22值28.400000是粗大误差应该踢除

第三章

MATLAB代码:

%题目3-1求测量误差

test=[40121.251.005];

testOffset=[-0.70.5-0.30.1];

limL=[0.350.250.200.20];

testSum=sum(test);

systemOffset=sum(testOffset);

offsetValue=testSum-systemOffset*1e-3;

limLOffset=sum(limL.^2)^0.5;

题目3-1'

系统误差%f修正值为%f测量误差%f\n'

systemOffset,offsetValue,limLOffset);

%题目3-2求立方体体积及其极限误差

a=161.6;

b=44.5;

c=11.2;

da=1.2;

db=-0.8;

dc=0.5;

%都是正负多少

lima=0.8;

limb=0.5;

limc=0.5;

V=a*b*c;

Vd=(da*b*c)+(a*db*c)+(a*b*dc);

Vr=V-Vd;

limV=((b*c)^2*lima^2+(a*c)^2*limb^2+(a*b)^2*limc^2).^0.5;

题目3-2测量体积最后结果表示为%d+-%d\n'

Vr,limV);

%题目3-4求功耗

globalU;

globalI;

%globalf;

symsUI

P=U*I;

fu=diff(P,U);

%求偏导

fi=diff(P,I);

I=22.5;

U=12.6;

di=0.5;

du=0.1;

ss=vpa(subs(fu));

zz=vpa(subs(fi));

Dp=(ss^2*du^2+zz^2*di^2+2*ss*zz*di*du)^0.5;

ui=vpa(subs(P));

题目3-4功率P为%sym标准差为%sym\n'

ui,Dp);

%题目3-12求误差

globalr;

globalh;

symsrh

%相对误差为1%,测量项目为2项n=2

V3_12=pi*h*r^2;

Vr=diff(V3_12,r);

Vh=diff(V3_12,h);

n=2^0.5;

e=0.01;

r=2.0;

h=20.0;

V0=vpa(subs(V3_12));

dv=V0*e;

rr=vpa(subs(Vr));

hh=vpa(subs(Vh));

dr=(dv/(n))*(1/rr);

dh=(dv/(n))*(1/hh);

ddr=vpa(dr);

ddh=vpa(dh);

题目3-12测定r的误差应为%0.6sym测定h的误差应为%0.6sym\n'

vpa(ddr,4),vpa(ddh,5));

代码的运行结果如下:

题目3-1系统误差-0.400000修正值为54.255400测量误差0.514782

题目3-2测量体积最后结果表示为7.779570e+04+-3.729111e+03

题目3-4功率P为283.5ym标准差为8.55ym

题目3-12测定r的误差应为0.0070测定h的误差应为0.1414

第四章

clc;

%题目4-1求圆球的最大截面的圆周和面积及圆球的体积的测量不确定度

%

(1)求圆球的最大截面的圆周的测量不确定度

symsr;

%求导

D=2*pi*r;

f=diff(D,r);

S=pi*r^2;

f1=diff(S,r);

V=(4/3)*pi*r^3;

f2=diff(V,r);

题目4-1\n'

dr=0.005;

%标准差

r=3.132;

fv=vpa(subs(f));

Uc=(fv^2*dr^2)^0.5;

%标准不确定度

n=9;

%测量次数减一

t=0.01;

%置信度

K=T_fenbubiao(t,n);

U=K*Uc;

%最大截面的圆周的测量不确定度

最大截面的圆周的测量不确定度为%0.5scm\n'

U);

%

(2)求圆球的最大截面的面积的测量不确定度

f1v=vpa(subs(f1));

Uc1=(f1v^2*dr^2)^0.5;

U1=K*Uc1;

最大截面的圆面积的测量不确定度为%0.6scm\n'

U1);

%(3)圆球的体积的测量不确定度

f2v=vpa(subs(f2));

Uc2=(f2v^2*dr^2)^0.5;

U2=K*Uc2;

圆球的体积的测量不确定度为%0.6scm\n'

U2);

%题目4-2求不确定度分量和放大率D的标准不确定度

globaly1;

globaly2;

symsy1y2

D=y1/y2;

Uy1=0.10;

Uy2=0.005;

Udy1=diff(D,y1);

Udy2=diff(D,y2);

y1=19.80;

y2=0.80;

Udy1v=vpa(subs(Udy1))^2;

Udy2v=vpa(subs(Udy2))^2;

Ud=(Udy1v*Uy1^2+Udy2v*Uy2^2)^0.5;

题目4-2\n'

value=vpa(subs(D));

望远镜放大率D的合成标准不确定度为%0.6s\n'

Ud);

望远镜放大率D为%0.6s+-%0.6s(cm)\n'

value,Ud);

%题目4-5求量块组引起的测量不确定度

testValue4_5=[40102.5];

dt=[0.450.300.25];

P=99.73;

ta=3;

%根据P的值查表得

Ul=dt./3;

U=(sum(Ul.^2)).^0.5;

data=roundn(U,-3);

%保留3位小数

题目4-5\n'

L的测量不确定度为%fum\n'

data);

代码运行结果:

题目4-1

最大截面的圆周的测量不确定度为0.102cm

最大截面的圆面积的测量不确定度为0.3197cm

圆球的体积的测量不确定度为2.0031cm

题目4-2

望远镜放大率D的合成标准不确定度为0.1988

望远镜放大率D为24.75+-0.1988(cm)

题目4-5

L的测量不确定度为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1