m0_60993805 2021-12-19 16:40 采纳率: 0%
浏览 1116

matlab循环求泰勒展开式的值中sym无法转换为logical,(新手上路)

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

  • 写回答

2条回答 默认 最新

  • 技术专家团-Joel 2021-12-19 21:07
    关注

    你好同学,看了你的代码,你应该是将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项满足了精度要求
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月19日