x = [-5:-1:5]; %% 画图用点 z = @(x) 1 + x.^2; m = @(x) 1 ./ z(x); X1 = [-5:10/5:5]; Y1 = m(X1); %% 5次多项式的插值点 y1 = Lagrange(X1,Y1,5,x); X2 = [-5:10/10:5]; Y2 = m(X2); %% 10次多项式的插值点 y2 = Lagrange(X2,Y2,10,x); X3 = [-5:10/20:5]; Y3 = m(X3); %% 20次多项式的插值点 y3 = Lagrange(X3,Y3,20,x); plot(x,m(x),'r',x,y1,'b',x,y2,'m',x,y3,'c'); legend('1/(1+X^2)','L_5(x)','L_{10}(x)','L_{20}(x)'); %% Larange Interpolation % 输入: X 插值点 % Y 插值点函数值 % n 插值次数 % x 逼近点 % y 逼近值 function y = Lagrange(X,Y,n,x) if n >= length(X) fprintf('错误:插值点不够\n'); return end m = length(x); y = zeros(m,1); for k = 0 : n for i = 1:m y(i) = y(i) + Y(k+1)*prod(x(i)-X([1:k,k+2:end]))/prod(X(k+1)-X([1:k,k+2:end])); end end end legend 函数的输入参数那里不正确
时间: 2023-12-14 22:05:15 浏览: 57
根据警告信息,可以看出是 legend 函数的输入参数不正确。在 legend 函数的第一个输入参数中,应该是一个包含每个图形的标签的 cell 数组,而不是将所有标签放在一个字符串中。
因此,可以将 legend 函数的输入参数修改如下:
```matlab
legend({'1/(1+X^2)','L\_5(x)','L\_{10}(x)','L\_{20}(x)'});
```
其中,用花括号 {} 将所有标签放在一个 cell 数组中,并且用反斜杠转义特殊字符,如下划线。
相关问题
matlab隐函数画图:9*x^2+36*y^2+4*z^2=36
在MATLAB中,你可以使用`fsolve`函数结合`surf`或`isosurface`函数来绘制隐函数图形。对于给定的方程 `9*x^2 + 36*y^2 + 4*z^2 = 36`,这是一个三维球面的标准方程,表示的是半径为3的一个单位球。下面是绘制步骤:
```matlab
% 定义方程
fun = @(x,y,z) 9*x.^2 + 36*y.^2 + 4*z.^2 - 36;
% 设置起始点(这里可以随机选择)
x0 = [0; 0; 0]; % 初始猜测值
% 使用fsolve求解
[x,y,z] = fsolve(fun, x0);
% 创建三维网格
[X,Y,Z] = meshgrid(-5:.1:5, -5:.1:5); % 根据需要调整步长
% 计算等值面Z
Z_surf = sqrt(36 - 9*X.^2 - 36*Y.^2);
% 绘制隐函数图形
surf(X,Y,Z_surf);
xlabel('X');
ylabel('Y');
zlabel('Z');
% 或者使用 isosurface 函数
% surf(X,Y,Z_surf, 'FaceAlpha', 0.5); % 更具透明度的效果
hold on;
title('9x^2 + 36y^2 + 4z^2 = 36 (unit sphere)');
```
运行以上代码后,你会看到一个表示单位球体的三维表面。
x = [-5:-1:5]; %% 画图用点 z = @(x) 1 + x.^2; m = @(x) 1 ./ z(x); X1 = [-5:10/5:5]; Y1 = m(X1); %% 5次多项式的插值点 y1 = Lagrange(X1,Y1,5,x); X2 = [-5:10/10:5]; Y2 = m(X2); %% 10次多项式的插值点 y2 = Lagrange(X2,Y2,10,x); X3 = [-5:10/20:5]; Y3 = m(X3); %% 20次多项式的插值点 y3 = Lagrange(X3,Y3,20,x); plot(x,m(x),'r',x,y1,'b',x,y2,'m',x,y3,'c',X3,Y3,'o'); legend('1/(1+X^2)','L_5(x)','L_{10}(x)','L_{20}(x)'); %% Larange Interpolation % 输入: X 插值点 % Y 插值点函数值 % n 插值次数 % x 逼近点 % y 逼近值 function y = Lagrange(X,Y,n,x) if n >= length(X) fprintf('错误:插值点不够\n'); return end m = length(x); y = zeros(m,1); for k = 0 : n for i = 1:m y(i) = y(i) + Y(k+1)*prod(x(i)-X([1:k,k+2:end]))/prod(X(k+1)-X([1:k,k+2:end])); end end end如何让全部图像显示出来
如果您的图像显示不全,可以尝试调整图像大小或调整图像的位置。您可以使用 MATLAB 自带的窗口拖拽工具来调整图像大小和位置,也可以使用代码来指定图像的位置和大小。例如,可以使用 `figure` 函数创建一个新的图像窗口,并使用 `set` 函数设置图像的位置和大小,如下所示:
```
figure('Position', [100, 100, 800, 600]); % 创建一个大小为 800x600 的图像窗口
plot(x,m(x),'r',x,y1,'b',x,y2,'m',x,y3,'c',X3,Y3,'o');
legend('1/(1+X^2)','L_5(x)','L_{10}(x)','L_{20}(x)');
set(gca, 'Position', [0.1, 0.1, 0.8, 0.8]); % 设置图像区域的位置和大小
```
其中,`Position` 参数的前两个值表示图像窗口左下角的位置,后两个值表示图像窗口的宽度和高度。`gca` 函数返回当前图像的坐标系,`set` 函数可以用来设置图像区域的位置和大小。通过调整这些参数,可以使得图像显示得更全面。
阅读全文