第二次培训心得

编程部分(python)

2.1、设计python程序,输入字符串类型的数字运算,解析输出结果.计算两个数加减乘除。

源代码:

print("Please input string")
a=input("input:")
if (type(a)==str):
	print(eval(a))
else:
	print("wrong input")

几个函数:
1、input:

input([prompt])

prompt为输入提示信息

2、type:

type(object)

object为输入对象,函数返回对象类型

3、eval:
eval函数用来执行一个字符串表达式,并返回表达式的值。

#示例
x = 7
eval( '3 * x' )
21

运行结果:
2.2、使用python或c语言设计程序,已知三个控制点坐标(x1,y1)(x2,y2)(x3,y3),规划一条路径,要求从(x1,y1)开始到(x3,y3)结束,这段路径必须连续可导,并且路径必须包含(x1,y1)(x2,y2)(x3,y3),其次每两个控制点之间的离散路径点的点间距需要是近乎固定的,这个点间距的参数是可以传参来调整的

代码:

import numpy as np
import matplotlib.pyplot as plt

#规定必定经过的点:(0,0)、(3,4)、(6,0)
#另外还规定了4个控制贝塞尔曲线光滑程度的点
P0, P1, P2, P3, P4, P5, P6= np.array([
    [0, 0],
    [-15/22, 20/22],
    [1.5, 4],
    [3, 4],
    [4.5, 4],
    [6+15/22, 20/22],
    [6, 0]
])

#define two bezier curves
F1 = lambda t: P0 * (1-t)**3 + 3 * P1 * t * (1-t)**2 + 3 * P2 * t **2*(1-t) + P3 * t**3
F2 = lambda t: P3 * (1-t)**3 + 3 * P4 * t * (1-t)**2 + 3 * P5 * t **2*(1-t) + P6 * t**3

#evaluate the curve on [0,1] sliced in 50 points
points1 = np.array([F1(t) for t in np.linspace(0,1,50)])
points2 = np.array([F2(t) for t in np.linspace(0,1,50)])


x1,y1 = points1[:,0], points1[:,1]
x2,y2 = points2[:,0], points2[:,1]

plt.plot(x1,y1,'o')
plt.plot(x2,y2,'o')
plt.plot(*P0,'r.')
plt.plot(*P1,'r.')
plt.plot(*P2,'r.')
plt.plot(*P3,'r.')
plt.plot(*P4,'r.')
plt.plot(*P5,'r.')
plt.plot(*P6,'r.')
plt.show()

解释一下,我使用的是2段3阶贝塞尔曲线最后拼接成一个光滑的轨迹,(x1,y1)、(x2,y2)、(x3,y3)分别为(0,0)、(3,4)、(6,0)

运行结果:
在这里插入图片描述
换成散点图:
在这里插入图片描述
点的个数减小:
在这里插入图片描述
参考网站:

  1. https://www.jb51.net/article/177375.htm
  2. https://baijiahao.baidu.com/s?id=1665653315494226271&wfr=spider&for=pc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值