【MATLAB】求二元一次方程所有可能的解 + 画图

  • Post author:
  • Post category:其他


MATLAB求二元一次方程所有可能的解 + 画图

示例函数:x、y均为正整数,x∈[0, 10], y∈[0, 100], z = 3 * y – x, 求z = 0时,x, y的值分别为多少。



画图

首先,需要将,x和y由一维变为二维:

x = 0:10;
y = 0:100;
[x, y] = meshgrid(x, y);

画出z的图形:

z = 3 * y - x;
mesh(x, y, z);

用红色圆圈(‘or’)画出xy的取值点:

hold on;
plot(x.*(z == 0), y.*(z == 0), 'or');

最终图形为:

在这里插入图片描述



输出结果

提取z = 0时的逻辑索引:

res = (z == 0);

输出结果:

x_out = x(res);
y_out = y(res);

输出的x_out = [0, 3, 6, 9], y_out = [0, 1, 2, 3]即为结果。



相关知识点

matlab中logical类型(详见MATLAB help),可以提取矩阵中想要的结果,比如提取矩阵A中的奇数:

A = [1 -3 2;
	 5 4 7;
	 -8 1 3];

查找模数 mod(A,2),并将其转换为逻辑数组以供进行索引。

L = logical(mod(A,2))

输出结果为:

L = 3x3 logical array

   1   1   0
   1   0   1
   0   1   1

如果 A 为奇数,该数组包含逻辑值 1 (true)。使用 L 作为逻辑索引来选取 A 的奇数元素:

A(L)

输出:

ans = 6×1

     1
     5
    -3
     1
     7
     3

结果是一个包含 A 所有奇数元素的向量。



版权声明:本文为graciacheung原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。