簡體   English   中英

如何在Matlab中繪制x,y,z?

[英]how to plot x,y,z in matlab?

我正在Matlab中制作高斯-喬丹方法,我想繪制這些方程式

x + y + 4*z = -1 
-2*x – y + z= -5 
3*x-2*y+3*z=-4

要查看它們在圖形的哪一點相交,但我不知道如何在Matlab中繪制

這是你想要的?

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”屬性來使事情變得更清晰。 看看沖浪功能的更多選擇。

編輯:替代@rayryeng解決方案來解決x,y和z,您可以使用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

這就是我如何繪制這些飛機的圖。 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')

在此處輸入圖片說明

盡管這不是繪圖,但也許您也可以使用。 如果要確定這些方程式的同時解,請考慮使用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]

這將檢查您的高斯-喬丹消除法是否正確。 如果您不喜歡使用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將系統縮減為行減少的梯形形式。 這是將高斯-約旦消除成功應用於線性系統后的結果。 因此:

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 = 1y = 2z = -1 這表示增廣系統,其中前三列表示系統系數,第四列表示線性方程組的右側。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM