径向基函数法逼近y=sin(pi*x)的matlab代码
时间: 2024-12-18 08:16:06 浏览: 10
matlab: 径向基神经网络,实现函数逼近
5星 · 资源好评率100%
要使用径向基函数(RBF)逼近`y=sin(pi*x)`,可以编写一个简单的Matlab代码实现。以下是一个示例,我们将使用均匀分布的节点和径向基函数插值:
```matlab
% 定义参数
n = 10; % 节点数量
x_data = linspace(-1, 1, n); % 初始节点位置
y_data = sin(pi * x_data); % 样本数据
% 初始化权重和中心点
lambda = ones(n, 1); % 权重
c = x_data; % 中心点,等于初始节点位置
% 径向基函数的选择:通常使用高斯函数或多项式
rbf_func = @(d) exp(-(d.^2)); % 高斯核函数
% 计算RBF插值矩阵
D = sqrt(sum((x_data - c).^2, 2)); % 计算每个样本与中心点的距离
A = rbf_func(D); % RBF矩阵
% 解线性系统得到插值系数
beta = inv(A'*A) * A'*y_data;
% 创建新的x值用于插值
new_x = linspace(-1, 1, 100); % 新的评估点
% 使用插值系数计算RBF插值
rbf_approximation = beta' * rbf_func(sqrt(sum((new_x - c).^2, 2)));
% 绘制原始数据和插值结果
plot(x_data, y_data, 'o', 'MarkerSize', 10, 'LineWidth', 1, 'DisplayName', 'Data Points');
hold on;
plot(new_x, rbf_approximation, 'r', 'LineWidth', 2, 'DisplayName', 'RBF Approximation');
legend('show');
xlabel('x');
ylabel('y');
title('Radial Basis Function Interpolation of y=sin(\pi*x)');
grid on;
```
这段代码展示了如何使用径向基函数对给定数据进行插值,并在新区间上绘制结果。请注意,实际应用可能需要调整参数以获得更好的拟合效果。
阅读全文