matlab用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰的yi作的3次多项式拟合,与原系数比较。
时间: 2023-08-18 13:05:03 浏览: 578
可以按照以下步骤实现:
1. 给定多项式 y=x^3-6x^2+5x-3,生成一组数据(xi,yi,i=1,2,…,n)。
首先,设定 x 的范围和个数,生成一组 x 值。然后,计算对应的 y 值。
```matlab
x = linspace(-10, 10, 50); % 生成 x 值
y = x.^3 - 6*x.^2 + 5*x - 3; % 计算对应的 y 值
```
2. 在 yi 上添加随机干扰。
使用 rand 函数生成均匀分布在 [0,1] 区间内的随机数,然后对 y 值加上干扰。
```matlab
noise = rand(1,length(y))*2-1; % 生成随机干扰
y_noisy = y + noise; % 对 y 值添加随机干扰
```
3. 用 xi 和添加了随机干扰的 yi 作 3 次多项式拟合。
使用 polyfit 函数进行多项式拟合,拟合一个 3 次多项式,即用 p 存储多项式系数。
```matlab
p = polyfit(x, y_noisy, 3); % 用 xi 和添加了干扰的 yi 进行 3 次多项式拟合
```
4. 与原系数比较。
将拟合得到的多项式系数与原系数进行比较。
```matlab
p_original = [1, -6, 5, -3]; % 原多项式的系数
disp('Original polynomial:'); % 输出原多项式系数
disp(p_original);
disp('Fitted polynomial:'); % 输出拟合得到的多项式系数
disp(p);
```
完整代码如下:
```matlab
x = linspace(-10, 10, 50); % 生成 x 值
y = x.^3 - 6*x.^2 + 5*x - 3; % 计算对应的 y 值
noise = rand(1,length(y))*2-1; % 生成随机干扰
y_noisy = y + noise; % 对 y 值添加随机干扰
p = polyfit(x, y_noisy, 3); % 用 xi 和添加了干扰的 yi 进行 3 次多项式拟合
p_original = [1, -6, 5, -3]; % 原多项式的系数
disp('Original polynomial:'); % 输出原多项式系数
disp(p_original);
disp('Fitted polynomial:'); % 输出拟合得到的多项式系数
disp(p);
```
阅读全文