Изобразить круг образованный пересечением сферы с плоскостью

Помогите, пожалуйста, правильно вписать уравнения в код. Проблема в том, что программа выводит неправильную фигуру. А еще нужно сделать так, чтобы фигуры обоих уравнений были выведены вместе на одном изображении.

Выражены уравнения:

z = -2*x + 2*y + 7

z = sqrt((-x**2 + 4*x - y**2 + 221)) + 5
z = 5 - sqrt((-x**2 + 4*x - y**2 + 221))

import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x = np.arange(-5, 5, 0.005)
y = np.arange(-5, 5, 0.005)
x, y = np.meshgrid(x, y)
z = -2*x + 2*y + 7

#оси x, y, z
ax.plot([0,0], [0,14], [0,0], '>-r')
ax.plot([0,0], [-14,0], [0,0], '-r')
ax.plot([0,14], [0,0], [0,0], '>-r')
ax.plot([-14,0], [0,0], [0,0], '-r')
ax.plot([0,0], [0,0], [0,1.8], '^-r')
ax.plot([0,0], [0,0], [-1.3,0], '-r')


surf = ax.plot_surface(x, y, z / 2, linewidth=0, antialiased=True, color='blue')

ax.set_title('Task 2')

plt.show()

Ответы (1 шт):

Автор решения: passant

Первый ваш вопрос "Проблема в том, что программа выводит неправильную фигуру". Что значит "неправильную"? Выводится та фигура, которую вы задали. Какой-то клаптик поверхности сферы.

Напомню, что на этом сайте существует правило: Один топик - один вопрос. Но поскольку ответ на второй вопрос - "нужно сделать так, чтобы фигуры обоих уравнений были выведены вместе на одном изображении". тривиален, приведу и ответ на него.

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.arange(-5, 5, 0.005)
y = np.arange(-5, 5, 0.005)
x, y = np.meshgrid(x, y)
z = -2*x + 2*y + 7
surf = ax.plot_surface(x, y, z / 2, color='red')
z = (np.sqrt((-x**2 + 4*x - y**2 + 221)) + 5)
surf = ax.plot_surface(x, y, z / 2,  color='blue')
z = (-np.sqrt((-x**2 + 4*x - y**2 + 221))+5)
surf = ax.plot_surface(x, y, z / 2,  color='green')

Синим и зеленым цветом - это те самые фрагменты сферы (можно по рисунку понять): введите сюда описание изображения

Кроме того,хочу заметить, что matplotlib - это не пакет решения системы уравнений, т.е. он не способен сам построить отдельную фигуру - кривую пересечения. Он просто рисует вам те фигуры, которые вы ему явно задали нарисовать. И не более.

→ Ссылка