legend ('c = 3*sqrt(3)/4','c = 2*sqrt(3)/4','c = 1*sqrt(3)/4','c = -3*sqrt(3)/4',... 'c = -2*sqrt(3)/4','c = -1*sqrt(3)/4','c = 0(Mises)' ); 运行提示:警告: 更新 Legend 时出错。 索引超出矩阵维度。
时间: 2023-12-28 20:03:58 浏览: 86
这个错误是因为你的 legend 函数中,传入的参数数量与你的数据数量不一致导致的。请检查一下你的数据数量和传入 legend 函数的参数数量是否一致。或者你可以将所有的参数放在一个 cell 数组中,然后将该 cell 数组作为唯一的参数传递给 legend 函数。例如:
```
legend({'c = 3*sqrt(3)/4','c = 2*sqrt(3)/4','c = 1*sqrt(3)/4','c = -3*sqrt(3)/4','c = -2*sqrt(3)/4','c = -1*sqrt(3)/4','c = 0(Mises)'});
```
这样传入的参数数量就与数据数量一致了。
相关问题
设直径为1的圆为⊙O, 分别做⊙O的外切正n边型, 及内接正n边型, 分别记它们周长 为Pn和pn, 则圆的周长S满足pn < S < Pn,其中, pn, Pn满足如下迭代关系式, P2n = 2*pn*Pn /(pn + Pn ), p2n = sqrt(pn*P2n), 帮我用matlab将上述的迭代点(pn, Pn), n = 3, 6, . . . , 3 × 2 ^k 分别画出两个折线图, 并用不同的点型, 线性, 颜色表示.
好的,我可以回答这个问题。以下是用MATLAB绘制迭代点的代码:
n = 3:3:3*2^k; % 定义n的取值范围
pn = zeros(1,length(n)); % 初始化pn向量
Pn = zeros(1,length(n)); % 初始化Pn向量
pn(1) = sqrt(3); % 初始值
Pn(1) = 6; % 初始值
for i = 2:length(n)
Pn(i) = 2*pn(i-1)*Pn(i-1)/(pn(i-1)+Pn(i-1)); % 计算Pn
pn(i) = sqrt(pn(i-1)*Pn(i)); % 计算pn
end
figure; % 创建新图形窗口
hold on; % 启用绘图保持功能
plot(n,pn,'-o','LineWidth',2,'MarkerSize',8); % 绘制pn折线图
plot(n,Pn,'--s','LineWidth',2,'MarkerSize',8); % 绘制Pn折线图
legend('pn','Pn'); % 添加图例
xlabel('n'); % 添加x轴标签
ylabel('周长'); % 添加y轴标签
title('圆的周长迭代计算'); % 添加标题
grid on; % 启用网格线
注意,这只是代码示例,具体的k值需要根据实际情况进行调整。另外,不同的点型、线性和颜色可以通过修改plot函数的参数来实现。
用matlab解下列微分线性方程组 dx1/dt=x2,dx2/dt=-(5/6)*x2*sqrt(x2^+x4^2),dx3/dt=x4,dx4/dt=-10-(5/6)*x4*sqrt(x2^2+x4^2)
可以使用MATLAB的ode45函数来求解这个微分方程组。首先,我们需要将微分方程组转换为MATLAB可用的形式。定义一个函数,输入参数为t和x,其中x是一个包含四个元素的向量,代表x1、x2、x3和x4,返回值为一个包含四个元素的向量,代表x1、x2、x3和x4的导数值。
代码如下:
```
function dxdt = myode(t, x)
dxdt = zeros(4, 1);
dxdt(1) = x(2);
dxdt(2) = -(5/6)*x(2)*sqrt(x(2)^2+x(4)^2);
dxdt(3) = x(4);
dxdt(4) = -10-(5/6)*x(4)*sqrt(x(2)^2+x(4)^2);
end
```
然后,使用ode45函数求解微分方程组。代码如下:
```
% 定义初始条件
x0 = [1; 0; 1; 0];
% 定义时间范围
tspan = [0 10];
% 求解微分方程组
[t, x] = ode45(@myode, tspan, x0);
% 绘制结果
plot(t, x(:,1), t, x(:,2), t, x(:,3), t, x(:,4));
legend('x1', 'x2', 'x3', 'x4');
```
运行以上代码,即可得到微分方程组的数值解,并绘制出各个变量随时间的变化情况。
阅读全文