【发布时间】:2016-09-16 19:27:59
【问题描述】:
我有两个方程:
ellipseOne = '((x-1)^2)/6^2 + y^2/3^2 = 1';
和
ellipseTwo = '((x+2)^2)/2^2 + ((y-5)^2)/4^2 = 1';
我绘制了它们:
ezplot(ellipseOne, [-10, 10, -10, 10])
hold on
ezplot(ellipseTwo, [-10, 10, -10, 10])
title('Ellipses')
hold off
现在我试图找到两个椭圆的交点。我试过了:
intersection = solve(ellipseOne, ellipseTwo)
intersection.x
intersection.y
找到它们相交的点,但 MATLAB 给了我一个矩阵和一个方程作为我不明白的答案。谁能指出我正确的方向以获得交叉点的坐标?
【问题讨论】:
-
这里你使用solve的方式不正确;调用应该是 S = solve(eqn,var)。处理这个问题的最简单方法是,因为两个方程都等于 1,所以将两个方程设置为彼此相等并相减。所以 ellipseDiff = '((x-1)^2)/6^2 + y^2/3^2 -((x+2)^2)/2^2 - ((y-5)^2)/ 4^2 = 0'。
-
@IanRiley
solve的一般用法其实是S = solve(eqn1, eqn2, ... eqnM, var1, var2, ... varN);。这种用法其实是正确的。省略任何var*变量会自动确定变量是什么。但是,solve的当前文档具有您所说的方式……这很奇怪。在 MATLAB R2015b 中执行help solve为我提供了第一种调用方式。我假设第一种方式最终会被弃用,但它的使用在这里仍然是正确的。 -
呵呵;在文档中发现这样的缺陷很奇怪。感谢@rayryeng 的提示
标签: matlab intersection ellipse