matlab 数值积分问题ro=8;ri=7.562;t=ro-ri;d1=2.6830;d2=3.0338;d3=3.0338;fy=50;ffi4=@(x)2*sqrt(ri.^2-(ro-x).^2);fi4=fy*quad(ffi4,d1+d2+d3,2*ro-t);这段代码直接运行,fi4的结果是fi4 = 3.9245e+003 +1.1844e-009i但是如果把最后一行
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/26 00:34:49
matlab 数值积分问题ro=8;ri=7.562;t=ro-ri;d1=2.6830;d2=3.0338;d3=3.0338;fy=50;ffi4=@(x)2*sqrt(ri.^2-(ro-x).^2);fi4=fy*quad(ffi4,d1+d2+d3,2*ro-t);这段代码直接运行,fi4的结果是fi4 = 3.9245e+003 +1.1844e-009i但是如果把最后一行
matlab 数值积分问题
ro=8;
ri=7.562;
t=ro-ri;
d1=2.6830;
d2=3.0338;
d3=3.0338;
fy=50;
ffi4=@(x)2*sqrt(ri.^2-(ro-x).^2);
fi4=fy*quad(ffi4,d1+d2+d3,2*ro-t);
这段代码直接运行,fi4的结果是fi4 = 3.9245e+003 +1.1844e-009i
但是如果把最后一行代码中的积分区间换成数值的话,结果就不一样呢
d1+d2+d3=8.7506
2*ro-t=15.5620
fi4=fy*quad(ffi4,8.7506,15.5620);
fi4 = 3.9245e+003
为什么结果会不一样呢?
这个积分出来应该不会有虚部的啊,怎样才能得到
fi4 = 3.9245e+003 这个结果啊.积分区间必须用变量来表示.
matlab 数值积分问题ro=8;ri=7.562;t=ro-ri;d1=2.6830;d2=3.0338;d3=3.0338;fy=50;ffi4=@(x)2*sqrt(ri.^2-(ro-x).^2);fi4=fy*quad(ffi4,d1+d2+d3,2*ro-t);这段代码直接运行,fi4的结果是fi4 = 3.9245e+003 +1.1844e-009i但是如果把最后一行
fi4 = 3.9245e+003 +1.1844e-009i
fi4 = 3.9245e+003
这两个结果只差1.1844e-009i,是你取d1+d2+d3,2*ro-t的误差造成的
虚部是由于sqrt开方引起的,在0点附近被开方数有很小的一个负值,取绝对值就好了,如下
ffi4=@(x)2*abs(sqrt(ri.^2-(ro-x).^2));