我试图使用MATLAB函数 spline
插入以下函数,
在等距点 xi = i./n
, i = 0,1,...,n
和 n = 2^j
, j = 4,5,...,14
.
对于每次计算,我在 x = 0:0.001:1
点记录最大误差,并使用 loglog
图对 n
绘制这些误差 .
以下是代码,
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)))./(120 . *(xi . ^ 2));
我刚开始学习MatLab,有人可以帮忙吗?
1 回答
您希望element-wise multiplication(
.*
)代码的以下部分:应该
计算
ye
时也存在同样的问题 .当您使用
mtimes
(*
)时,MATLAB会尝试进行矩阵乘法,在您的情况下(1乘n乘1次)无效 .然后,您将遇到
spline
命令的问题 . 将其更改为yp = spline(xi,yi,x);
,以便您要插入的值(x
)是最后一个参数 .