如何在Python中绘制隐式方程:基于不同L值的V-t曲线
隐式方程曲线绘制实现方案
问题说明
需要绘制以t(时间)为X轴、V(速度)为Y轴的曲线,参数设定:
L取5个值:[5, 10, 15, 20, 25]b = 0.0032- 隐式方程:
(b*V*0.277*t) - (b*L) = log(1 + b*V*0.277*t)
实现思路
先通过变量替换简化方程:令x = b*V*0.277*t,方程转化为x - bL = ln(1+x)。固定V的取值范围,对每个L,通过数值方法求解对应的t值,最终绘制曲线。
Python 代码实现
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import root # 定义参数 b = 0.0032 L_values = [5, 10, 15, 20, 25] V_range = np.linspace(0, 120, 200) # 速度范围匹配参考图 # 定义隐式方程(针对t求解) def equation(t, V, L, b): x = b * V * 0.277 * t return x - b * L - np.log(1 + x) # 初始化绘图 plt.figure(figsize=(8, 6)) # 遍历每个L值求解并绘图 colors = ['blue', 'orange', 'green', 'red', 'purple'] # 对应不同L的颜色 for L, color in zip(L_values, colors): t_values = [] for V in V_range: # 初始猜测值,避免log(0)问题 initial_guess = 0.1 if V == 0 else (b*L)/(b*V*0.277) sol = root(equation, initial_guess, args=(V, L, b)) if sol.success: t_values.append(sol.x[0]) else: t_values.append(np.nan) # 求解失败标记为NaN plt.plot(t_values, V_range, color=color, label=f'L={L}') # 设置图形样式,匹配参考图 plt.xlabel('Time (t)') plt.ylabel('Velocity (V)') plt.title('Velocity vs Time for Different L Values') plt.legend() plt.grid(True) plt.xlim(0, 120) # X轴范围匹配参考图 plt.ylim(0, 120) # Y轴范围匹配参考图 plt.show()
代码说明
- 变量替换与方程定义:将原方程转化为便于数值求解的形式,传入
t、V、L、b参数,返回方程的残差值。 - 数值求解:使用
scipy.optimize.root对每个V值求解对应的t,确保求解稳定。 - 绘图设置:设置坐标轴标签、标题、图例、网格,调整坐标轴范围以匹配参考图样式,用不同颜色区分不同
L的曲线。
内容的提问来源于stack exchange,提问作者Aryaman
相关产品推荐
相关产品推荐

