MATLAB中quad的误差问题y = @(s)sin(0.5*s.^2);quad(y, 0, 26.9);结果误差远远超过了缺省值,这是为什么?而如果将上限增减0.01,即:quad(y, 0, 26.89);或quad(y, 0, 26.91);误差就突然很小了,这到底是什么原因啊,百
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 23:54:58
![MATLAB中quad的误差问题y = @(s)sin(0.5*s.^2);quad(y, 0, 26.9);结果误差远远超过了缺省值,这是为什么?而如果将上限增减0.01,即:quad(y, 0, 26.89);或quad(y, 0, 26.91);误差就突然很小了,这到底是什么原因啊,百](/uploads/image/z/2477154-66-4.jpg?t=MATLAB%E4%B8%ADquad%E7%9A%84%E8%AF%AF%E5%B7%AE%E9%97%AE%E9%A2%98y+%3D+%40%28s%29sin%280.5%2As.%5E2%29%3Bquad%28y%2C+0%2C+26.9%29%3B%E7%BB%93%E6%9E%9C%E8%AF%AF%E5%B7%AE%E8%BF%9C%E8%BF%9C%E8%B6%85%E8%BF%87%E4%BA%86%E7%BC%BA%E7%9C%81%E5%80%BC%2C%E8%BF%99%E6%98%AF%E4%B8%BA%E4%BB%80%E4%B9%88%3F%E8%80%8C%E5%A6%82%E6%9E%9C%E5%B0%86%E4%B8%8A%E9%99%90%E5%A2%9E%E5%87%8F0.01%2C%E5%8D%B3%EF%BC%9Aquad%28y%2C+0%2C+26.89%29%3B%E6%88%96quad%28y%2C+0%2C+26.91%29%3B%E8%AF%AF%E5%B7%AE%E5%B0%B1%E7%AA%81%E7%84%B6%E5%BE%88%E5%B0%8F%E4%BA%86%2C%E8%BF%99%E5%88%B0%E5%BA%95%E6%98%AF%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%95%8A%2C%E7%99%BE)
MATLAB中quad的误差问题y = @(s)sin(0.5*s.^2);quad(y, 0, 26.9);结果误差远远超过了缺省值,这是为什么?而如果将上限增减0.01,即:quad(y, 0, 26.89);或quad(y, 0, 26.91);误差就突然很小了,这到底是什么原因啊,百
MATLAB中quad的误差问题
y = @(s)sin(0.5*s.^2);
quad(y, 0, 26.9);
结果误差远远超过了缺省值,这是为什么?
而如果将上限增减0.01,即:
quad(y, 0, 26.89);
或quad(y, 0, 26.91);
误差就突然很小了,这到底是什么原因啊,百思不得其解,望各位高手指点一下啊,谢谢!
即使只增加0.001,
即quad(y, 0, 26.901);
就没误差了,但是加0.0001误差就产生了~
MATLAB中quad的误差问题y = @(s)sin(0.5*s.^2);quad(y, 0, 26.9);结果误差远远超过了缺省值,这是为什么?而如果将上限增减0.01,即:quad(y, 0, 26.89);或quad(y, 0, 26.91);误差就突然很小了,这到底是什么原因啊,百
你这个问题非常好,我测试了一下,发现quad(y, 0, 26.9)=-0.3410要计算1873次函数,而quad(y, 0, 26.89)=0.9222是1997次,quad(y, 0, 26.91)=0.9124是2017次.
不出意外的话quad(y, 0, 26.9)原本应该计算2007次左右才对.在这里出现了程序bug,要深入到quad的源代码中才能排除问题.
另,quad(y, 26.9, 26.89)=0.0038计算了函数13次,数值0.0038,基本正确;quad(y, 26.91, 26.9)=0.0061计算了函数13次,数值0.0061也基本正确.
因此有quad(y, 0, 26.9)=quad(y, 0, 26.89)-quad(y, 26.9, 26.89)=0.9184;或quad(y, 0, 26.9)=quad(y, 0, 26.91)+quad(y, 26.91, 26.9)=0.9185;或者取两个值得平均有quad(y, 0, 26.9)=0.91845.