参数方程、椭圆、柯西中值定理的道与术
714 2023-02-25 13:55
竟然画出椭圆了
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
n = 1
t = np.arange(0, 2 * np.pi * n, 0.01)
r = 5
x = r * np.cos(t) * 1.2
y = r * np.sin(t)
plt.plot(x, y)
# 设置x,y坐标轴的刻度显示范围
plt.xlim(-8, 8)
plt.ylim(-8, 8)
# 手动调整label顺序
# handles, labels = plt.gca().get_legend_handles_labels()
# order = [1, 0]
# plt.legend([handles[idx] for idx in order], [labels[idx] for idx in order])
# # 显示图例说明
# plt.legend()
# 获取当前坐标轴gca即get current axis
ax = plt.gca()
# 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0))
# 将下面的x轴,移到y=0的位置
ax.spines['bottom'].set_position(('data', 0))
# 调整x轴刻度(从-5到+5,正好9个点)
plt.xticks(np.linspace(-7, 7, 15))
# 调整y轴刻度
plt.yticks(np.linspace(-7, 7, 15))
# 给纵坐标轴加箭头
plt.arrow(0, 8, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
# 给横坐标轴加箭头
plt.arrow(8, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.show()
椭圆2
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
n = 1
t = np.arange(0, 2 * np.pi * n, 0.01)
r = 5
x = r * np.cos(t + 1.2)
y = r * np.sin(t)
plt.plot(x, y)
# 设置x,y坐标轴的刻度显示范围
plt.xlim(-8, 8)
plt.ylim(-8, 8)
# 手动调整label顺序
# handles, labels = plt.gca().get_legend_handles_labels()
# order = [1, 0]
# plt.legend([handles[idx] for idx in order], [labels[idx] for idx in order])
# # 显示图例说明
# plt.legend()
# 获取当前坐标轴gca即get current axis
ax = plt.gca()
# 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0))
# 将下面的x轴,移到y=0的位置
ax.spines['bottom'].set_position(('data', 0))
# 调整x轴刻度(从-5到+5,正好9个点)
plt.xticks(np.linspace(-7, 7, 15))
# 调整y轴刻度
plt.yticks(np.linspace(-7, 7, 15))
# 给纵坐标轴加箭头
plt.arrow(0, 8, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
# 给横坐标轴加箭头
plt.arrow(8, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.show()
竟然画出阿基米德螺旋线
import numpy as np
import matplotlib.pyplot as plt
if __name__ == "__main__":
n = 4/5
theta = np.arange(0, 2 * np.pi * n, 0.01)
alpha = 3
beta = 4
r = alpha + beta * theta
x = r * np.cos(theta)
y = r * np.sin(theta)
plt.plot(x, y)
# 设置x,y坐标轴的刻度显示范围
plt.xlim(-31, 31)
plt.ylim(-31, 31)
# 手动调整label顺序
# handles, labels = plt.gca().get_legend_handles_labels()
# order = [1, 0]
# plt.legend([handles[idx] for idx in order], [labels[idx] for idx in order])
# 显示图例说明
# plt.legend()
# 获取当前坐标轴gca即get current axis
ax = plt.gca()
# 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0))
# 将下面的x轴,移到y=0的位置
ax.spines['bottom'].set_position(('data', 0))
# 调整x轴刻度(从-5到+5,正好9个点)
plt.xticks(np.linspace(-30, 30, 11))
# 调整y轴刻度
plt.yticks(np.linspace(-30, 30, 11))
# 给纵坐标轴加箭头
plt.arrow(0, 31, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
# 给横坐标轴加箭头
plt.arrow(31, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.show()
等高线画椭圆
import matplotlib.pyplot as plt
import numpy as np
a, b = 7.79, 0.50
c, d = -4.50, 0.87
# 构造等高线函数
def f(x, y):
return a * x ** 2 + b * x * y + c * y * x + d * y ** 2 - 1
# 定义点的数量
n = 500
# 作点
x = np.linspace(-3.5, 3.5, n)
y = np.linspace(-3.5, 3.5, n)
# 构造网格
X, Y = np.meshgrid(x, y)
# text方式的文本
# plt.text(-2, 1, r'$2x^2+(-1)xy+(-1)xy+2y^2=1$', fontdict={'size': 16, 'color': 'g'})
# 获取当前坐标轴gca即get current axis
ax = plt.gca()
# 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
# 调整x轴刻度(从-5到+5,正好11个点)
plt.xticks(np.linspace(-3, 3, 7))
# 调整y轴刻度
plt.yticks(np.linspace(-3, 3, 7))
# 给坐标轴加箭头
plt.arrow(0, 3.5, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.arrow(3.5, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
# 绘制等高线,8表示等高线数量加1
plt.contour(X, Y, f(X, Y), 0)
# plt.plot(x, y)
plt.show()
旋转矩阵的计算:
二阶矩阵相乘-20220621-手动横向输入-pre3
# 普通矩阵相乘
m, p, n = map(int, "2, 2, 2".split(",")) # 获得两个矩阵的行列数
A = []
B = [] # 创建A,B两个空列表,用以存放相乘的两个矩阵
C = [[0 for i in range(n)] for j in range(m)] # 创建一个m行n列的初始化矩阵
print("请输入第1个矩阵:")
for i in range(1):
A = list(map(float, (input().strip().split(" ")))) # 获得A矩阵
A1 = [A[0], A[1]]
A2 = [A[2], A[3]]
A = [A1, A2]
print("请输入第2个矩阵:")
for i in range(1):
B = list(map(float, input().strip().split(" "))) # 获得B矩阵
B1 = [B[0], B[1]]
B2 = [B[2], B[3]]
B = [B1, B2]
for i in range(m):
for j in range(n):
for k in range(p):
C[i][j] += A[i][k] * B[k][j] # 根据矩阵相乘的运算规则进行运算
for s in C:
print() # 保证输出为矩阵形式
for r in s:
print(r, end=" ") # 输出结果矩阵
求一个二阶矩阵的逆矩阵-20220622-手动横向输入版-pre3
m, n = map(int, "2, 2".split(",")) # 获得两个矩阵的行列数
A = []
print("请输入一个矩阵:")
for i in range(1):
A = list(map(float, (input().strip().split(" ")))) # 获得A矩阵
A1 = [A[0], A[1]]
A2 = [A[2], A[3]]
A = [A1, A2]
a = A[0][0]
b = A[0][1]
c = A[1][0]
d = A[1][1]
T1 = [a, b]
T2 = [c, d]
T = [T1, T2]
# print("初始矩阵是:")
# for s in T:
# print() # 保证输出为矩阵形式
# for r in s:
# print(r, end=" ") # 输出结果矩阵
# print()
fenmu = a * d - b * c
# print("分母是:", fenmu)
T[0][0] = round(d / fenmu, 3)
T[0][1] = round(-b / fenmu, 3)
T[1][0] = round(-c / fenmu, 3)
T[1][1] = round(a / fenmu, 3)
print("\r\n\r\n其逆矩阵是:")
for s in T:
print() # 保证输出为矩阵形式
for r in s:
print(r, end=" ") # 输出结果矩阵
全部评论