你好同学,看了你的代码,你应该是将sin(x)泰勒展开,然后看在哪一阶展开的精度恰好满足误差小于0.00000001的要求。
红色错误是因为你的sym不能直接跟double类型的变量比较大小,需要转化成double就可以比较了
代码更正如下
syms x;
err = 1; % 先预定义一个误差
y0 = 2; % 预定义一个y0用于比较
for i = 1:2:100 % 为了避免奇偶一致的泰勒展开,建议都按照奇数来(sin(x)是奇函数)
y1 = taylor(sin(x),x,0,'order',i);
y2 = eval(subs(y1,x,7));
err = abs(y0-y2); %计算误差
if(err<0.00000001) % 如果满足精度要求就终止循环
fprintf('展开到了第%d项满足了精度要求\n',i)
break;
end
y0 = y2;
end
结果为
展开到了第35项满足了精度要求