我在matlab中制作Gauss-Jordan方法,我想绘制这些方程式
x + y + 4*z = -1
-2*x – y + z= -5
3*x-2*y+3*z=-4
要查看它们相交的图形的哪一点,但我不知道如何在matlab中绘图
答案 0 :(得分:3)
这是你在找什么?
clc
clear
close all
%// Generate x and y values to plot from.
[x,y] = meshgrid(linspace(0,10,100),linspace(0,10,100));
%// Get equation for plane; i.e. z position
z1 = 0.25.*(-1-x-y);
z2 = -5+y+2*x;
z3 = (-4-3.*x+2.*y)./3;
%// Use surf to generate surface plots
figure;
surf(x,y,z1,'linestyle','none','facealpha',0.4)
hold on
surf(x,y,z2,'linestyle','none','facealpha',0.4)
surf(x,y,z3,'linestyle','none','facealpha',0.4)
hold off
%// Use to manually rotate the plot
rotate3d on
这给出了这个:
当然,您可以使用'FaceAlpha'属性来使事情更清晰。有关更多选项,请查看surf函数。
修改强> 作为解决x,y和z的@rayryeng解决方案的替代方案,您可以使用mldivide:
A = [1 1 4;-2 -1 1;3 -2 3];
B = [-1;-5;-4];
X = mldivide(A,B)
X =
1.0000
2.0000
-1.0000
答案 1 :(得分:2)
我将如何绘制这些飞机。
surf
的第4个参数允许您指定颜色。
% // create function handles of form z = f(x,y)
f1 = @(X,Y) 1/4*(-1 - X -Y);
f2 = @(X,Y) -5 + 2*X + Y;
f3 = @(X,Y) 1/3*(-4 -3*X + 2*Y);
% // create a 2d-grid to plot the functions over
x = linspace(-5, 5, 10);
y = linspace(-10, 10, 20);
[X,Y] = meshgrid(x,y);
% // plot the planes in different colors (4th argument) and without edges
figure
surf(X, Y, f1(X,Y), ones(size(f1(X,Y))), 'EdgeColor', 'None');
hold on
surf(X, Y, f2(X,Y), ones(size(f2(X,Y)))*2, 'EdgeColor', 'None');
surf(X, Y, f3(X,Y), ones(size(f3(X,Y)))*3, 'EdgeColor', 'None');
legend('plane1', 'plane2', 'plane3')
xlabel('x'), ylabel('y'), zlabel('z')
答案 2 :(得分:2)
虽然这不是密谋,但也许这也是你可以使用的东西。如果要确定这些方程的同时解,请考虑使用solve
syms x y z
A = solve('x + y + 4*z == -1', '-2*x - y + z == -5', '3*x - 2*y + 3*z == -4')
disp([A.x A.y A.z]);
[ 1, 2, -1]
这将检查你的Gauss-Jordan消除是否正确。如果您不想使用solve
,可以使用线性代数帮助您解决此问题。只需将系统的系数放在矩阵和向量中,然后找到矩阵的逆矩阵并乘以向量。
A = [1 1 4; -2 -1 1; 3 -2 3];
b = [-1;-5;-4];
x = A \ b
x =
1.0000
2.0000
-1.0000
...甚至另一种方法是使用rref
将系统缩减为行减少的梯队形式。这是您成功将Gauss-Jordan消除应用于线性系统后的结果。就这样:
A = [1 1 4; -2 -1 1; 3 -2 3];
b = [-1;-5;-4];
rref([A b])
ans =
1 0 0 1
0 1 0 2
0 0 1 -1
阅读上述答案,x = 1
,y = 2
,z = -1
。这表示增强系统,其中前3列表示系统的系数,第4列表示线性方程组的右侧。