用matlab求解一元三次方程,结果长这样,请问怎么看啊?看不明白这个结果
三个实例。
clear; clc;
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y)
set(gca, 'yticklabel', []) % 清空默认的标签
yLabels = {'one', 'two', 'three', 'four', 'five'}; % 待添加的标签
for i = 1 : length(yLabels)
text(-0.5, -1.25+0.4 * i, yLabels(i)); % 用文本的方式添加,位置可以自定义
end
得到以下结果:
surf绘图时,显示出来的网格数量总是比数据维度少1(网格线数量和维度对应),因此,如果想显示出和数据维度一样数量的网格,就必须将数据的行和列都扩充1了。
clear;clc;
load data;
[x_num,y_num]=size(data);
x_coord=1:x_num;
y_coord=1:y_num;
data2(x_coord, y_coord) = double(data);
data2(:, y_num + 1) = data(:, end);
data2(x_num + 1, 1:end-1) = data(end, :);
data2(x_num + 1, y_num + 1) = data(end, end);
surf(data2);
% contour(data2,'ShowText','on')
axis off % 不显示坐标轴
% shading interp
view([0,90]);
for i = 1 : y_num
text(0.25 + i,0.5, num2str(i));
end
for i = 1 : x_num
text(0.25,0.5 + i, num2str(i));
end
运行代码得到以下图形:
如果不喜欢网格线,只需要将shading interp取消注释即可。
如果是等高线图呢,略有区别。
clear;clc;
load data;
[x_num,y_num]=size(data);
x_coord=1:x_num;
y_coord=1:y_num;
data2(x_coord, y_coord) = double(data);
data2(:, y_num + 1) = data(:, end);
data2(x_num + 1, 1:end-1) = data(end, :);
data2(x_num + 1, y_num + 1) = data(end, end);
% surf(data2);
contourf(data2,'ShowText','on')
% contour(data2,'ShowText','on')
set(gca, 'xticklabel', [])
set(gca, 'yticklabel', [])
shading interp
view([0,90]);
for i = 1 : y_num
text(0.25 + i,0.5, num2str(i));
end
for i = 1 : x_num
text(0.25,0.5 + i, num2str(i));
end
运行代码得到以下图形:
Matlab已经内置了一元三次方程求解的函数"roots",使用该函数可以得到方程的根。但是由于一元三次方程的根较为复杂,因此输出结果可能会较为难懂。为了更好地理解输出结果,我们可以进行以下步骤:
% 定义一元三次方程的系数
a = 1;
b = -6;
c = 11;
d = -6;
% 求解方程
roots([a b c d])
首先,我们需要定义一元三次方程的系数。这里我们定义a=1,b=-6,c=11,d=-6。然后使用"roots"函数求解方程。需要注意的是在Matlab中使用"roots"函数时,输入的系数必须是向量形式。
输出结果可能会是以下形式:
ans =
2.0000
1.0000
3.0000
这个结果表示方程的三个根分别为2,1和3。其中第一个数字是第一个根,依此类推。可以看到这个输出结果已经相对简单易懂了。但是,有可能输出结果是复数形式。这时我们需要将复数形式转换为常规形式,即a+bi的形式。可以使用"real"和"imag"函数来分别获取实部和虚部,并将其转换为常规形式:
r = roots([a b c d]);
for i=1:length(r)
if imag(r(i)) ~= 0
fprintf("x%d = %.2f + %.2fi\n", i, real(r(i)), imag(r(i)));
else
fprintf("x%d = %.2f\n", i, r(i));
end
end
以上代码使用了一个for循环,对每个根进行分析,并针对不同的情况输出不同的结果。如果根是实数,那么只输出实数部分即可。如果根是复数,那么需要输出实数部分和虚数部分。
最终的输出结果可能是这样的:
x1 = 2.00
x2 = 1.00
x3 = 3.00
或者是这样的:
x1 = 1.00 + 0.00i
x2 = 2.00 + 0.00i
x3 = 1.00 + 1.00i
以上就是解读一元三次方程输出结果的方法。如果还有不清楚的地方,可以先尝试输出默认结果,再根据需要进行格式化输出。