我需要使用Matlab绘制以下图表
我可以画J0(x)
图,问题是画多项式的近似直线。例如,对于n = 2,我试了下面的代码:
x = [0:0.01:10];
y = besselj(0,x);
p = polyfit(x,y,2);
x1 = linspace(0,2);
y1 = besselj(0,x1);
f1 = polyval(p,x1);
figure
plot(x,y,'o')
hold on
plot(x1,y1)
plot(x1,f1,'r--')
图表没有按预期的那样出现。有人能告诉我我的代码有什么问题吗?非常感谢
1条答案
按热度按时间cnjp1d6j1#
polyfit
得到的多项式是指定范围内的最小平方误差近似。另一方面,图中的多项式似乎是关于0的泰勒近似。所以你基本上需要
p = polyfit(x,y,2);
比如
(or如果没有符号工具箱,请手动定义多项式)。
因此: