python画图:根据已知数据画出的曲线来查找未知的点的坐标,x、y值(插值求近似值)

 过程如下:

from scipy import interpolate

# 创建一些数据点
y = '''2.3
3.7
6.7
11.3
17.7
25.0
37.7
47.0
63.0
83.0
104.0
125.3
150.3
171.3
192.0
210.3
224.0
229.7
226.0
217.3
202.0
187.3
171.3
157.3
138.0
116.3
95.0
77.0
61.7
45.3
34.0
24.3
15.7
11.0
7.0
4.0
2.3'''
x = '''8
7.8
7.6
7.4
7.2
7
6.8
6.6
6.4
6.2
6
5.8
5.6
5.4
5.2
5
4.8
4.6
4.4
4.2
4
3.8
3.6
3.4
3.2
3
2.8
2.6
2.4
2.2
2
1.8
1.6
1.4
1.2
1
0.8'''  # 注意不能留回车
y = y.split(sep='\n')
y = list(map(float, y))
x = x.split(sep='\n')
x = list(map(float, x))

# 创建插值对象
f = interpolate.interp1d(y, x)

# 需要插值的值
y_value_to_interpolate = 0.13533 * 229.7

# 计算插值的值
x_value_interpolated = f(y_value_to_interpolate)
print(x_value_interpolated)

 利用python库函数中scipy类中的interpolate函数,这个函数可以通过根据给出的x值来拟合计算y值或者根据y值算x值(x和y的值可以不是已知数据点)。

可以先通过excel或者文本或者origin、matlab等先把已知数据点给列出来,确保数据点正确无误后,再复制粘贴到代码中的长文本中。

这里用的间隔是回车键,因此我们先用split函数把他化成字符串列表,注意最开始和最后的点不能有回车,不然根据split函数定义会报错。

然后利用map强制转化成浮点数列表,再用interpolate函数中的interp1d函数进行插值运算。(即根据x查y或根据y查x)

interp1d函数的形参第一项为x第二项为y,即根据x求y的近似值。我们这里需要根据y求x,因此反转变量,因为用的是逼近方法求得近似值,因此也不会改变这一点的数据,只相当于换了xy的坐标,但是我们不通过interpolate函数作图,只使用这一点的数据,因此也不会影响图像。(这里没有画图,如果要画图再利用matplotlib中的plot即可,参考另一篇文章:《python画图实例:根据函数关系画出反射率与入射角的曲线图》)

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独白不白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值