Catherine_000 2021-10-18 18:37 采纳率: 100%
浏览 87
已结题

数据分析的编程问题,4阶chebyshev级数、最佳平方逼近

求函数 y=cosx 及函数y=cosh x 在区间[-1,1] 的4阶chebyshev级数以及4次多项式最佳平方逼近, 其中积分近似计算可以使用matlab命令quad及相关命令

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-18 19:41
    关注

    你好,代码供参考
    四阶切比雪夫

    % 切比雪夫级数逼近
    T0 = @(x) 1*ones(size(x));%切比雪夫多项式
    T1 = @(x) x;
    T2 = @(x) 2*x.^2 - 1;
    T3 = @(x) 4*x.^3 - 3*x;
    T4 = @(x) 8*x.^4 - 8*x.^2 + 1;
    T = {T0, T1, T2, T3, T4};
    A = zeros(5,5);
    B1 = zeros(5,1);
    B2 = zeros(5,1);
    f1 = @(x)cos(x);
    f2 = @(x)cosh(x);
    for i = 1:1:5
        B1(i,1) = integral(@(x)T{i}(x).*f1(x), -1, 1);%积分获取右端项
        B2(i,1) = integral(@(x)T{i}(x).*f2(x), -1, 1);%积分获取右端项
        for j = 1:1:5
            A(i,j) = integral(@(x)T{i}(x).*T{j}(x), -1, 1);%积分获取系数矩阵
        end
    end
    c1 = A\B1;
    c2 = A\B2;
    y1 = @(x) c1(1)*T{1}(x) + c1(2)*T{2}(x) + c1(3)*T{3}(x) + c1(4)*T{4}(x) + c1(5)*T{5}(x);
    y2 = @(x) c2(1)*T{1}(x) + c2(2)*T{2}(x) + c2(3)*T{3}(x) + c2(4)*T{4}(x) + c2(5)*T{5}(x);
    x = linspace(-1,1,100);
    ycos = cos(x);
    ycosh = cosh(x);
    ycos_fit = y1(x);
    ycosh_fit = y2(x);
    plot(x,ycos,'r-', x, ycosh, 'b-'); hold on;
    plot(x,ycos_fit,'-.', x, ycosh_fit, 'g--');
    legend('cos(x)','cosh(x)','cos(x)四阶切比雪夫逼近','cosh(x)四阶切比雪夫逼近')
    

    效果

    img

    四次多项式逼近

    % 四次多项式
    T0 = @(x) 1*ones(size(x));%基函数
    T1 = @(x) x;
    T2 = @(x) x.^2;
    T3 = @(x) x.^3;
    T4 = @(x) x.^4;
    T = {T0, T1, T2, T3, T4};
    A = zeros(5,5);
    B1 = zeros(5,1);
    B2 = zeros(5,1);
    f1 = @(x)cos(x);
    f2 = @(x)cosh(x);
    for i = 1:1:5
        B1(i,1) = integral(@(x)T{i}(x).*f1(x), -1, 1);%积分获取右端项
        B2(i,1) = integral(@(x)T{i}(x).*f2(x), -1, 1);%积分获取右端项
        for j = 1:1:5
            A(i,j) = integral(@(x)T{i}(x).*T{j}(x), -1, 1);%积分获取系数矩阵
        end
    end
    c1 = A\B1;
    c2 = A\B2;
    y1 = @(x) c1(1)*T{1}(x) + c1(2)*T{2}(x) + c1(3)*T{3}(x) + c1(4)*T{4}(x) + c1(5)*T{5}(x);
    y2 = @(x) c2(1)*T{1}(x) + c2(2)*T{2}(x) + c2(3)*T{3}(x) + c2(4)*T{4}(x) + c2(5)*T{5}(x);
    x = linspace(-1,1,100);
    ycos = cos(x);
    ycosh = cosh(x);
    ycos_fit = y1(x);
    ycosh_fit = y2(x);
    plot(x,ycos,'r-', x, ycosh, 'b-'); hold on;
    plot(x,ycos_fit,'-.', x, ycosh_fit, 'g--');
    legend('cos(x)','cosh(x)','cos(x)四次多项式逼近','cosh(x)四次多项式逼近')
    

    逼近效果:

    img

    可见两者在四阶的时候,都和原函数十分贴合
    有帮助还望答主点个右上角采纳支持一下,答题不易,十分感谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下: