低成本开源火箭
已开源!部分更新只会发到这里(除非进度比较大)
文号922216
2903
0
收藏(2)

Python实现冯·卡门曲线计算并显示图例

关键词

计算器python冯·卡门头锥设计曲线计算

基于百度的公式

基于numpy等库进行开发

可以直接下载打包好的程序

但还是推荐复制代码自行编译,代码在最后

以下是介绍

冯·卡门曲线的功用不再赘述,因为百度比我更准确

以下是程序(不更新)

attachment icon 冯·卡门曲线计算器(仅供娱乐).zip 39.33MB ZIP 30次下载


以下是算式

\[\begin{array}{l} \theta {\rm{ = }}{\cos ^{ - 1}}(1 - \frac{{2x}}{L})\\ y = \frac{R}{{\sqrt \pi  }}\sqrt {\theta  - \frac{{\sin (2\theta )}}{2} + C{{\sin }^3}\theta } \end{array}\]

解析

L是长度

R是半径

在之后可能会继续更新


以下是效果图

在显示图标之后命令行窗口弹出的数据即为取样点和计算结果

Snipaste_2023-06-24_11-43-38.png

C = 1/3时的图像-20230909更新

image.png image.png

新添功能:自动比较出于目标直径最靠近的点

以下是代码(暂时停止同步,最近一次同步发生在20230910)

import math
import numpy as np
import matplotlib.pyplot as plt

print("冯·卡门曲线计算器——仅供娱乐"
      "\n版本号0.0.0.dev\n"
      "LD-Haack C= 0\n"
      "暂未启用(LV-Haack C= 1/3)\n"
      "长度最长30单位,宽度无限制,命令行输出即为结果")
PLong = 30 + 1#长度为30
#PLong = int(input("长度:")) +1
Xlab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]#取样点,长度
#
ROP = 20#末端直径
#ROP = int(input("半径:"))
Syssign = 1
Count = 0
XOIP = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]#暂时存储数据的容器,取样点有多少它就得有多少
Yout = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]#输出点,同上要求
pai = [3.14159265]

MODEset = 2# 如果模式设置为2 ,则C=1/3 1则为C=0

while(Syssign):
    SentPL = 0.00
    SentPL = 2*Xlab[Count]/PLong
    #print(SentPL)
    XOIP[Count] = 1-SentPL
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0
ARCX = np.arccos(XOIP)

plt.plot(Xlab, ARCX,
         color='yellow', marker="o")
Syssign = 1
while(Syssign):
    XOIP[Count] = ARCX[Count] * 2
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0
XOIP = np.sin(XOIP)

Syssign = 1
while(Syssign):
    XOIP[Count] = XOIP[Count] / 2
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0


Syssign = 1
while(Syssign):
    XOIP[Count] = ARCX[Count]  - XOIP[Count]
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0
#如果情况是C = 0则忽略该段,如果是1/3还需要加一个1/3Sin角度的三次方
Syssign = 1
CSINT = ARCX
Count = 3
while(Count >=1):
    CSINT = np.sin(CSINT)
    Count -= 1
print(Count)
Count = 0
if MODEset == 2:
    while(Syssign):
        CSINT[Count] = CSINT[Count]/3
        XOIP[Count] = XOIP[Count] + CSINT[Count]
        Count += 1
        if(Count == PLong):
            Syssign = 0
            Count = 0
#
XOIP = np.sqrt(XOIP)
pai = np.sqrt(pai)

Syssign = 1
while(Syssign):

    Yout[Count] = XOIP[Count] * ROP/pai#注意,这里是根号pai
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0

Syssign = 1
while(Syssign):
    print("\n\nX:")
    print(Xlab[Count])
    print("Y:")
    print(Yout[Count])
    Count += 1
    if(Count == PLong):
        Syssign = 0
        Count = 0

plt.plot(Xlab, Yout,
         color='blue', marker="o")

#plt.plot(Xlab, out_array2,
#         color='red', marker="o")

plt.title("BLUE:OUTPUT\nyellow:rad")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

以下是实现临近匹配的,由于属于另一个项目,因而只把部分功能实现到这里

while(Syssign):
   print("\n\nX:")
   print(Xlab[Count])
   print("Y:")
   print(Yout[Count])
   if Yout[Count] <= FOPC:
       ZDsign = 1
   if ZDsign == 1:
       if Yout[Count] >= FOPC:
           ZDsign = 2
           print("数据的最近似点已采集")
           #由于是最靠近的较大数字,因此用减去较小数字来实现逐步逼近的效果

           EPSD = Count
           print(EPSD)
   Count += 1
   if(Count == PLong):
       Syssign = 0
       Count = 0

可以自行寻找合适的点进行替换(但其实不如自己插入进去)

20230910

[修改于 6 个月前 - 2023/09/10 01:00:00]

0
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
空空如也
主体信息
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:广东
 内容统计
2023年
7 篇
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
ID: {{user.uid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
回复
设为精选取消精选
评学术分
鼓励
编辑
查看历史
通过审核
加入收藏取消收藏
退修或删除
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
回复
加入收藏取消收藏