1

我正在尝试使用 MATLAB 函数插入以下函数spline

在此处输入图像描述

在等距点xi = i./n,i = 0,1,...,n和 对于n = 2^j, j = 4,5,...,14.

对于每次计算,我都会记录这些点的最大误差,并使用绘图来x = 0:0.001:1绘制这些误差。nloglog

下面是代码,

index=1

for j = 4:1:14;
    n = 2^j;
    i = 0:1:n;
    xi = i./n;
    yi = ((exp(3*xi))*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));
    x = 0:.001:1;
    ye = ((exp(3*x))*sin(200*x.^2)) ./(1+20*x.^2);
    yp = spline(x,xi,yi);
    err = ye - yp;
    merr(index) = max(err);
    index = index+1;
end

n1 = 10:10:170;
loglog(n1, merr,'.')
xlabel('n');
ylabel('errors');
title('Cubic Splines');

但是当我运行代码时,出现以下错误:

错误使用 * 内矩阵尺寸必须一致。

(第 9 行) yi = ((exp(3*xi)) sin(200. (xi.^2))) ./(1+20.*(xi.^2));

我刚开始学习MatLab,有人可以帮忙吗?

4

1 回答 1

1

您需要对以下代码部分进行逐元素乘法( ):.*

yi = ((exp(3*xi))*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));

应该

yi = ((exp(3*xi)).*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));

的计算也存在同样的问题ye

当您使用mtimes( *) 时,MATLAB 会尝试进行矩阵乘法,在您的情况下(1×n 乘以 1×n)是无效的。

然后你会遇到你的spline命令的问题。将其更改为,yp = spline(xi,yi,x);以便您要插入 ( x) 的值是最后一个参数。

于 2013-10-08T20:44:15.927 回答