如何纠正错误“未定义的变量x”生成规范化切比雪夫多项式的价值。需要生成规范化切比雪夫多项式

3视图(30天)
这段代码生成系数然后切比雪夫多项式的根:
函数T = ChebT (n, x)
% n切比雪夫多项式的系数T第一种。
%他们存储在降序排列的权力。
t0 = 1;
t1 = [1 0];
如果n = = 0
T = t0;
elseifn = = 1;
T = t1;
其他的
k = 2: n
T = [2 * t1 0] - [0 0 t0];
t0 = t1;
t1 = T;
结束
结束
> > coeff6 = ChebT (5);
> >根(coeff6)
> > polyval coeff6, 3) /√(1 - x ^ 2) {x, 1,1}

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2017年11月20日
您定义
函数ChebT (n, x)
所以ChebT预计两个参数传递给它。然而,代码没有使用第二个参数。
你叫
coeff6 = ChebT (5)
这工作,因为代码ChebT允许最多两个参数不使用第二个参数。
您调用
polyval coeff6, 3) /√(1 - x ^ 2) {x, 1,1}
然而,你没有x在代码中定义的。
MATLAB只使用[]数组列表和建筑:int MATLAB是永远有效的遵循一个变量名或函数名[]没有经营者之间,如
polyval coeff6, 3) /√* (1 - x ^ 2) {x, 1,1}
如果这是你的意思,那么请注意,您没有定义任何变量或函数命名√6。大概不会匹配MATLAB Sqrt函数,因为MATLAB是区分大小写的。
polyval (coeff6 3)是有效的MATLAB。coeff6此时将[16 0 -20 0 5 0]所以polyval (coeff6 3) 16 * 3 ^ 5 + 0 * -20 * 3 ^ 3 ^ 4 + 0 * 3 ^ 2 + 5 * 3 * 3 ^ 0 ^ 1 + 0 = 120126。请注意,这并不涉及任何变量“x”
…样子我是你试图在MATLAB中使用Mathematica语法。
我猜你想要的东西:
信谊x
f = poly2sym coeff6 x) /√(1 - x ^ 2)
fplot (f, [1])
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年11月20日
我不确定规范化在这种情况下意味着什么。我发现一个定义,划分Tn 2 ^ n;如果是这样那么
normChebT = @ (N) ChebT (N) / 2 ^ N;
coeff6 = normChebT (5);
信谊x
f = poly2sym coeff6 x) /√(1 - x ^ 2)
fplot (f, [1])

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!