返回目录

LstSquApprox.m

text/plain
1018 bytes
2025-10-22 16:15:57

文件预览

clear; clc;
syms t

% 输入参数:
% f:被逼近的函数(符号表达式)
% w:权函数(符号表达式)
% n:勒让德多项式的阶数(最佳平方逼近的次数)
f = sin(pi*t);  % 示例:被逼近函数
w = 1;          % 示例:权函数(此处为1,即普通最佳平方逼近)
n = 2;          % 示例:逼近多项式阶数


sumsf = zeros(1, n+1);
sn = zeros(1, n+1);
Pnx = sym(zeros(1, n+1));

for i = 1 : n+1
    Pn0 = 2^(-(i-1)) / factorial(i-1) * (t^2 - 1)^(i-1);
    Pnx(i) = diff(Pn0, i-1);
    sumsf(i) = int(w * f * Pnx(i), -1, 1);
    sn(i) = 2 / (2*(i-1) + 1);
end

digits(5);
fintP = vpa(sumsf);
axk = fintP ./ sn;
Snx = simplify(Pnx * axk');
Sqa_err = abs(vpa(int(f*f, -1, 1)) - sn * (axk').^2) ^ 0.5;

% 输出结果:
% fintP:函数f与各阶勒让德多项式的内积(带权)
% axk:最佳平方逼近的系数
% Snx:最佳平方逼近多项式(符号形式)
% Sqa_err:平方逼近误差
fintP, axk, Snx, Sqa_err