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

数据分析的编程问题,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 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败