Intersect between functions. I am trying to get the intersection between three functions in 3D space.
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi, I have three functions (lines) in 3Dspace, for who I am trying to ge the intersect coordinates to. In other words: I am trying to get the intersection between:
z1 = x -2.*y + 5;
z2 = 2.*x -4.*y + 6;
z3 = -x -4.*y + 1
I hace checked everywhere but I do not seem to find a suitable answer.
댓글 수: 0
답변 (1개)
DGM
2021년 4월 22일
편집: DGM
2021년 4월 22일
something like this:
syms x y z
e1 = (x -2.*y + 5)==z;
e2 = (2.*x -4.*y + 6)==z;
e3 = (-x -4.*y + 1)==z;
sol = vpasolve([e1 e2 e3])
Then just look at sol.x and sol.y. To demonstrate that they match, substitute the solution into the equations:
subs(e1,{x,y},[sol.x sol.y])
subs(e2,{x,y},[sol.x sol.y])
subs(e3,{x,y},[sol.x sol.y])
All three of which yield the same result:
4.0 == z
Which is the same as sol.z
In cases where the math is a lot more complicated and untuitive, I find that it helps to plot the surfaces first so that I can judge if the results from the solver even make sense. In this case, it's pretty simple. For example:
xx = linspace(-5,5,10);
yy = linspace(-5,5,10)';
s1 = xx -2.*yy + 5;
s2 = 2.*xx -4.*yy + 6;
s3 = -xx -4.*yy + 1;
a=1; % you can adjust transparency if it helps
h1 = surf(xx,yy,s1,'facealpha',a); hold on;
h2 = surf(xx,yy,s2,'facealpha',a);
h3 = surf(xx,yy,s3,'facealpha',a);
plot3(sol.x,sol.y,sol.z,'k*','markersize',20) % mark the solution location
shading flat
camlight
Like I said, these are all just planes, so the function behavior is simple and intuitive.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!