作业帮 > 综合 > 作业

matlab里画同一个函数但不同表达式所得的曲线为什么不同

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 07:32:51
matlab里画同一个函数但不同表达式所得的曲线为什么不同
比如:f(x)=(1-x)^6,g(x)=x^6-6x^5+15x^4-20x^3+15x^2-6x+1,f(x)与g(x)是同一个函数,但在matlab里画出的曲线却不同
让我看看你的画图程序?
再问: x=linspace(0.995,1.005,100); y1=(1-x).^6; y2=x.^6-6*x.^5+15*x.^4-20*x.^3+15*x.^2-6*x+1; plot(x,y1,x,y2) legend('y1','y2'); xlabel('x'); ylabel('y');
再答: 看了下面的程序,你就会明白,在计算数学里,式子不同,计算机计算的结果是有误差的。这就是为什么计算数学发展成为一门独立学科的很重要的原因。你的程序没错,问题不在于你自身,在于计算机处理问题的方法上。由于算式的不同,导致了精度的不同,最终计算结果也不同。但是又有特例,比如你可以试着把自变量范围改为linspace(1:0.001:100),画出的图像又是一样的。所以具体问题要具体分析,看你什么时候适合选用什么样的方程。这是计算数学里的很重要的一课。 >> format long syms x options=optimset('Display','iter'); [x,fval]=fsolve(@(x)(1-x).^6-(x.^6-6*x.^5+15*x.^4-20*x.^3+15*x.^2-6*x+1),[0.995;2;3.005],options) Norm of First-order Trust-region Iteration Func-count f(x) step optimality radius 0 4 9.89575e-027 2.53e-019 1 Equation solved at initial point. fsolve completed because the vector of function values at the initial point is near zero as measured by the default value of the function tolerance, and the problem appears regular as measured by the gradient. x = 0.995000000000000 2.000000000000000 3.005000000000000 fval = 1.0e-013 * 0.005259668650980 0 0.994759830064140 我们知道,两个算式是一样的,所以我们应该觉得在 x= 0.995000000000000 2.000000000000000 3.005000000000000 这三点上,两者之差应该为0.但是我们看到,他们是有误差的。这就是计算数学要研究的内容,要考虑的内容。
再问: 这看起来很深奥,小弟才刚刚学matlab,很多都不懂, 大哥能不能通俗点解释下?谢谢
再答: 好吧,这么和你说吧,你不需要细究这个问题,你只需要知道有这么个事情,然后是因为计算误差导致的就ok了,要是详细证明二者的误差,那是比较麻烦的。好吗? 我上面给你做的,是取了三个点,然后计算二者的误差给你看。最后的fval的三个值就是误差大小。明白这些个你就进步很多拉、就够了。