⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 square_approach.m

📁 最小均方逼近函数
💻 M
字号:
clc
close all;
clear all;
x = 1:0.2:3;
y = x .* log(x);
%%%%%%%%ρ(x)=1的最佳平方逼近二次多项式,采用勒让得正交函数族作为基空间.
%%%%%%%%理论基础:Page88定理9.
%%%%%%%%Step1:区间变化[a,b]--->[-1,1],变换公式:x = (b-a)/2 *t + (b+a)/2.
%%%%%%%%本题中:x = t+2.变换后的函数用g_t表示.
%%%%%%%%g_t = @(t)((t+2)*log(t+2));
F0 = @(t)((t+2) .* log(t+2) .*1);Q0 = quad(F0,-1,1);
F1 = @(t)((t+2) .* log(t+2) .*t);Q1 = quad(F1,-1,1);
F2 = @(t)((t+2) .* log(t+2) .*(3*t.^2-1)/2);Q2 = quad(F2,-1,1);
Q0 = Q0 ./ 2;Q1 = Q1*3 ./ 2;Q2 = Q2*5 ./ 2;
S2t = @(t)(Q0 .*1 + Q1 .* t + Q2 .*(3*t.^2-1)/2);
S2x = @(x)(Q0 .*1 + Q1 .* (x-2) + Q2 .*(3*(x-2).^2-1)/2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%截断chebyshev级数法
%%%%%%%%%%%%%%%%%%%%%%%%%%%%g_t_cos_theta =
%%%%%%%%%%%%%%%%%%%%%%%%%%@(theta)((cos(theta)+2)*log(cos(theta)+2)) 
F0 = @(t)((cos(t)+2).*log(cos(t)+2));a0 = 2*quad(F0,0,pi)/pi;%%
F1 = @(t)((cos(t)+2).*log(cos(t)+2).*cos(t));a1 = 2*quad(F1,0,pi)/pi;%%
F2 = @(t)((cos(t)+2).*log(cos(t)+2).*cos(2*t));a2 = 2*quad(F2,0,pi)/pi;%%
C2t = @(t)(a0/2+a1.*t+a2.*(2.*t.^2-1));
C2x = @(x)(a0/2+a1.*(x-2)+a2.*(2.*(x-2).^2-1));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%拉格朗日插值余项极小化法
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%本题中:x = t+2.
n = 3;
k = [1,2,3];
t = cos(2.*k-1)./(2*n);
x_knot = t + 2;
y_knot = x_knot .* log(x_knot);
%%%%%%%%%%Lagrange插值
n = length(x_knot);
m = length(x);
for i = 1:m
  t = x(i);
  sum = 0.0;
  for j = 1:n
      l = 1.0;
      for k = 1:n
          if k ~= j
            l = l*(t-x_knot(k))/(x_knot(j)-x_knot(k));
          end
      end
      sum = l*y_knot(j)+sum;
    end
    y_lagrange(i) = sum;
end
%%%%%%%%%%%%%%END OF Lagrange
figure(1)
plot(x,y,'r-',x,S2x(x),'b.-',x,C2x(x),'g-o',x,y_lagrange,'k-*'),grid on
legend('原始曲线','最佳平方二次逼近','Chebyshev截断级数2次','插值余项极小化2次')
title('不同方法对原函数f(x)的逼近')




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -