2017-07-12 29 views
0

为了得到一个计划的交集,并在Sage中的任意卷,我这样做:获取计划的2D路口和任意体积

eq_object = -(cos(x) + cos(y) + cos(z)) 
eq_knife = 3*x+2*y+1*z 
object = implicit_plot3d(eq_object, (x,-4,4), (y,-4,4), (z,-4,4), color='orchid') 
knife = implicit_plot3d(eq_knife == 0, (x,-4,4), (y,-4,4), (z,-4,4), color='black') 

但交集,用solve给出的公式本身:

intersection = solve([eq_object, eq_knife], [x, y, z]) 
intersection 

>> [3*x + 2*y + z, -cos(x) - cos(y) - cos(z)] 

我该怎么做?

回答

0

你可能想要这个:

solve(eq_object==eq_knife, [x, y, z]) 

这给[]空的解决方案集,可能是因为这仅仅是太难了。这些不是代数系统,一旦你在那里击中cos

即使是很简单的

solve([cos(x),x],[x]) 

给出这样的回答,但在这种情况下cos(x)=0x=0是不可能在一起的。但我们“真正”想要的,

solve([cos(x)==x],[x]) 

只是给原来的回来,因为没有“好”的方式来写这个。它发生了。

编辑:也许你想要一个隐含的情节,然后呢?

var('y') 
implicit_plot(-(cos(x) + cos(y) + cos(-3*x-2*y)),(x,-5,5),(y,-5,5),figsize=4) 

enter image description here

我觉得我这样做是一个正确。

+0

事情是不是所有的时间工作,我需要一个通用的方法,在这个例子中:一个球体(以原点为中心,半径为2)和由原点和法向量'[1,1,1]'。交点的方程是“(x + y)^ 2 + x^2 + y^2 == 4”,这不是圆的方程。 – Deewy

+0

我不知道为什么这不会一直工作。如果你隐式地绘制任何东西,它应该可以正常工作。如果你有一个应该工作正常的飞机(除了没有'z'的飞机),并且你甚至可以用solve()来自动化它,如果你真的需要的话,我就解决了'z'问题。 – kcrisman

+0

我打开了一个[新问题](https://math.stackexchange.com/questions/2357188​​/intersection-of-a-sphere-and-a-plan-projected-on-the-plan),因为方程是正确的之前我说得太快了。只是我们得到的方程是在“xy”计划上的一个圆的投影,所以我们有时会得到一个椭圆。 – Deewy