Python对分段函数求导+绘制位移s-t、速度v-t、加速度a-t曲线

import matplotlib.pyplot as plt
import numpy as np
import sympy as spfrom sympy.utilities.lambdify import lambdify
#-----------------------------连续数值离散化-便于绘图------------------------------------
def Curve_values(piecewise_function):derivative_func = lambdify(x, piecewise_function, 'numpy')# 创建x值向量并计算导数值derivative_values = derivative_func(x_values)return derivative_values###########################绘制、美化坐标轴函数(start)################################################
'''
index:要绘制在第几行第几列,
由于在前面定义的是plt.subplots(3, 1)
也就是说只有一列,所以是axes[index],
表示在该单列的第几行画这个图。如果在前面定义的是plt.subplots(3,2)
那么就会是axes[index_x][index_y]
表示在第几行第几列画这个图。func:要绘制的函数名称
Curve_name:曲线名称
x_name:x轴名称
y_name:y轴名称
'''
def axes_draw(index,func,Curve_name,x_name,y_name):axes[index].plot(x_values, Curve_values(func), 'r', label = Curve_name)axes[index].set_xlabel(x_name)axes[index].set_ylabel(y_name)axes[index].legend()axes[index].grid(True)def beautify_axes(index):axes[index].spines['right'].set_color('none')   # 将图像右边的轴设为透明axes[index].spines['top'].set_color('none')     # 将图像上面的轴设为透明axes[index].xaxis.set_ticks_position('bottom')    # 将x轴刻度设在下面的坐标轴上axes[index].yaxis.set_ticks_position('left')         # 将y轴刻度设在左边的坐标轴上axes[index].spines['bottom'].set_position(('data', 0))   # 将两个坐标轴的位置设在数据点原点axes[index].spines['left'].set_position(('data', 0))################################绘制、美化坐标轴函数(end)###########################################if __name__ == '__main__':#-----------------------------分段函数S-t、V-t、a-t(Start)定义------------------------------------x = sp.symbols('x')s_t = sp.Piecewise((0.25*x,          sp.And(x>=0,x<20)),(5,             sp.And(x>=20,x<50)),(-1.0/3.0*(x-65),sp.And(x>50,x<=65)))#位移曲线v_t = sp.diff(s_t, x)#速度曲线    a_t = sp.diff(v_t, x)#加速度曲线    #-----------------------------分段函数S-t、V-t、a-t(End)------------------------------------#-----------------------------x轴定义域----------------------------left=0right=70x_values = np.linspace(left, right, 1000)#这个1000个曲线上的点,并不是刻度上的点#----------------------------------------------------------------------fig, axes = plt.subplots(3, 1, figsize = (8, 7))#两行两列总共4个图#############################绘制s-t##############################################index=0Curve_name='s-t Curve'x_name='Time(min)'y_name='Displacement(km)'axes_draw(index,s_t,Curve_name,x_name,y_name)beautify_axes(index)################################绘制v-t###########################################index=1Curve_name='v-t Curve'x_name='Time(min)'y_name='Velocity(km/min)'axes_draw(index,v_t,Curve_name,x_name,y_name)beautify_axes(index)################################绘制a-t###########################################index=2Curve_name='a-t Curve'x_name='Time(min)'y_name='Acceleration(km/min2)'axes_draw(index,v_t,Curve_name,x_name,y_name)beautify_axes(index)# plt.grid(True)plt.show()

运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/424409.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言float 类型数如何与0值⽐较?

一、问题 写出 float a 与“0值”⽐较的if语句。 二、解答 1、问题分析与解答 ⼀般地&#xff0c;如果⽤证判断⼀个数值型变量(short、int、long 等)&#xff0c;应该⽤ if(a0)&#xff0c;表示的含义是a与0进⾏“数值”上的⽐较; 但 float 型变量并不精确&#xff0c;不能直…

字符串冲刺题(算法村第十二关黄金挑战)

最长公共前缀 14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow"…

保姆级CISP报考攻略,让你不再迷茫

信息安全领域越来越火&#xff0c;想要在这个行业闯出一片天&#xff1f;CISP认证就是你的“敲门砖”&#xff01;想知道如何顺利考取这个超牛的证书吗&#xff1f;下面就带你一起探索保姆级CISP报考流程&#xff01;&#x1f389; &#x1f393;报考条件&#x1f393; 学历专业…

聚观早报 | 苹果将开放第三方NFC支付;华为P70系列参数曝光

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月23日消息 苹果将开放第三方NFC支付 华为P70系列参数曝光 Celestiq已正式开始量产 岚图汽车官宣与华为合作 美…

C# CefSharp 根据输入日期段自动选择日期

1&#xff0c;前言 搞这个Demo整整搞几天通宵&#xff0c;爆肝了。后做的效果出来&#xff0c;还是不错的。给小伙伴看看效果图。 2, 遇到的问题 日期之间相差多少个月数。开始时间框点击对应月份要点击多少次&#xff0c;结束时间框点击对应月份要点击多少次Xpath获取问题。…

Bit Extraction and Bootstrapping for BGV/BFV

参考文献&#xff1a; [GHS12] Gentry C, Halevi S, Smart N P. Better bootstrapping in fully homomorphic encryption[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 1-16.[AP13] Alperin-Sheriff J, Pe…

MATLAB Fundamentals>>>Smoothing Data with Moving Average

MATLAB Fundamentals>Common Data Analysis Techniques>Smoothing Data> (2/5) Smoothing Data with Moving Average 例1&#xff1a; Smoothing method:Moving mean Moving window:Centered 2 代码2&#xff1a; % Smooth input data ySm smoothdata(y,"mov…

L1-091 程序员买包子(Java)

这是一条检测真正程序员的段子&#xff1a;假如你被家人要求下班顺路买十只包子&#xff0c;如果看到卖西瓜的&#xff0c;买一只。那么你会在什么情况下只买一只包子回家&#xff1f; 本题要求你考虑这个段子的通用版&#xff1a;假如你被要求下班顺路买 N 只包子&#xff0c;…

应聘软件测试,差点栽在了...这5道S级的测试用例设计题上... ...

1、 用例设计&#xff1a;根据下面需求&#xff0c;进行测试用例设计&#xff0c;请注意对测试点的表达。 &#xff08;网页端&#xff09;需求描述&#xff1a; 某项目的营养素配置页面&#xff0c;供用户用来配置营养素的相关信息&#xff0c;其中&#xff1a; l 项目可供…

java通过模板导出到Excel

依赖 依赖,该项目是gradle管理依赖&#xff0c;需要maven的可以去maven仓库找一下对应的依赖 implementation com.alibaba:easyexcel:2.2.10控制层 Operation(summary "导出excel")GetMapping("/export")public void exportExcel(RequestParam String sta…

得帆云X锦江酒店(中国区),iPaaS是传统ESB升级的最佳方案

锦江酒店&#xff08;中国区&#xff09;是锦江国际集团“深耕国内、全球布局、跨国经营”全球品牌战略的重要布局&#xff0c;旗下酒店品牌覆盖多元市场&#xff0c;致力于为消费者提供高品质和多样化的出行体验。 锦江酒店&#xff08;中国区&#xff09;目前旗下有维也纳国…

Mapbox加载浙江省天地图服务和数据处理

1. 加载影像服务 通过浙江省天地图官网申请所需服务&#xff0c;使用token获取服务数据 由于浙江省天地图使用的坐标系是 cgcs2000&#xff0c;需要使用 的框架对应为 cgcs2000/mapbox-gl&#xff0c;通过cdn引入或npm下载 影像服务地址为&#xff1a; ‘https://ditu.zjzw…