创建 400×400 的画布,x轴放大倍数为 80,y轴放大倍数为 35,以红色实线绘制坐标轴。当x在-1.7~1.7 范围内以步长0.02 变化时,分别在第一、二、三和四象限,用黑、红、绿和蓝色,绘制从坐标原点至y=-3x3-3x2+4sinx 的放射线。
时间: 2024-03-07 07:48:40 浏览: 158
以下是Python代码实现:
```python
import math
from tkinter import *
# 创建画布
root = Tk()
canvas = Canvas(root, width=400, height=400, bg='white')
canvas.pack()
# 绘制坐标轴
canvas.create_line(20, 380, 380, 380, width=2, fill='red', arrow=LAST)
canvas.create_line(20, 380, 20, 20, width=2, fill='red', arrow=LAST)
for i in range(0, 5):
x = 80 * i * 2
canvas.create_text(x + 20, 390, text=str(i), fill='red')
canvas.create_line(x + 20, 380, x + 20, 390, width=2, fill='red')
for i in range(0, 6):
y = 35 * i * 2
canvas.create_text(10, 380 - y, text=str(i), fill='red')
canvas.create_line(20, 380 - y, 10, 380 - y, width=2, fill='red')
# 绘制放射线
colors = ['black', 'red', 'green', 'blue']
for i in range(-85, 86):
x = i / 50
y = -3 * x ** 3 - 3 * x ** 2 + 4 * math.sin(x)
if abs(x) <= 1.7:
quadrant = 1 if x >= 0 and y >= 0 else 2 if x < 0 and y >= 0 else 3 if x < 0 and y < 0 else 4
color = colors[quadrant - 1]
canvas.create_line(20, 380, 20 + 80 * x, 380 - 35 * y, fill=color)
root.mainloop()
```
代码解析:
首先创建一个400x400的画布,并设置x轴和y轴的放大倍数。然后绘制红色实线坐标轴,并在坐标轴上标注刻度值。接着,使用一个循环来遍历-1.7到1.7之间的数,以步长0.02变化。对于每个x值,计算出对应的y值,并判断其所在象限。根据象限选择相应的颜色,绘制从坐标原点到该点的放射线。最后,调用mainloop()方法进入Tkinter事件循环,使窗口保持显示状态。
阅读全文