python - 我能为谁做这个?对象太深,无法满足所需数组
问题描述
谁是你的?...对不起我的英语翻译,但我来自西班牙,我的英语很糟糕,对不起。我正在尝试为我的计算物理编程课程制作一个程序。我需要研究两相火箭的位置和速度,改变第一相气体的百分比(很明显,改变两相气体的百分比,Masa1 = 1phase 的质量,Masa 2 = 2phase 的质量) . 改变气体,改变飞行时间。我希望像这样将所有数据放在 odeint 中:
from numpy import * #importamos todo lo que
from scipy.integrate import odeint #podamos necesitar a lo largo
import matplotlib.pyplot as plt #del programa
#funciones
def funder (M,t,u,D,m0): #funcion para calcular luego
'''funcion derivada''' #la integral de la funcion
y, v=M[0],M[1]
return array([v,u*D/(m0-(D*t))])
#constantes
ni=100 #numero de intervalos
#cohete de una fase
#Datos propuestos en el enunciado para una primera prueba
D=13840. #Kg/s cantidad de combustible que se quema por segundo
m0=2.85e6 #Kg masa total inicial
u=2.46 #km/s velocidad de salida de los gases
r=0.05 #proporcion de la masa recipiente
mu=0.47*m0 #masa util
mc=(m0-mu)/(1+r) #masa combustible
t0=mc/D #tiempo que tarda en quemar el cobustible en una etapa
#condiciones iniciales
y0, v0 =0, 0 #posicion y velocidades iniciales igual
ListaPorce=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9] #lista de #porcentajes,luego se convertira
#en un array
Intervalos=[] #lista con los #intervalos de tiempo de los
#distintos porcentajes de combustible
for i in ListaPorce: #para los i en ListaPorce, haz:
Combustible=mc*i #multiplicara los indices por #el combustible
#asi sabemos que cantidad de #combustible para cada porcentaje
tempo=linspace(0,(Combustible/D),ni) #tempo es el array de tiempos #para cada porcentaje de combustible
Intervalos.append(tempo) #añade tempo a la lista #Intervalos, que luego sera un array
Duracion=array(Intervalos) #convertimos la lista #Intervalos al array Duracion
Porcentaje=array(ListaPorce) #convertimos la lista #ListaPorce al array Porcentaje
Usado=mc*Porcentaje
masa1=mu+(1+r)*Usado #masa de la fase 1
masa1.shape=(masa1.size,1)
masa2=mu+(1+r)*(mc-Usado) #masa de la fase 2
Comparacion01=odeint(funder,array([y0,v0]),Duracion, args=(u,D,masa1))
print Comparacion01
但是当我运行时,程序说我:
Traceback (most recent call last):
File "Trabajo IFC.py", line 278, in <module>
Comparacion01=odeint(funder,array([y0,v0]),Duracion, args=(u,D,masa1))
File "/usr/lib/python2.7/dist-packages/scipy/integrate/odepack.py", line 144, in odeint
ixpr, mxstep, mxhnil, mxordn, mxords)
ValueError: object too deep for desired array
错误是为 odeint 使用非一维数组,对吗?我谁能做到?我希望有一个像 [%,times,position,velocity] 这样的“巨型阵列”(Comparacion01) 我能做到吗?需要更改功能“资助者”非常感谢所有用户。我会继续努力...
解决方案
推荐阅读
- xml - 如何将 Windows 环境变量设置为 XML 属性
- android - How to change item position of a recycle view from within its adapter?
- python - 使用 Apache Beam io.jdbc.ReadFromJdbc 时出现错误 beam:logical_type:javasdk:v1
- react-native - 如何仅在特定屏幕(例如主屏幕)上启用抽屉导航 [react native] [react navigation]
- rest - 如何使用文件本身生成 OpenAPI 规范 YML(例如 petsore.yaml)的精简版本?
- database - 锻炼日志的正确数据结构是什么?
- admob - AdMob 中介 - Facebook Audience Network “我们尚未收到投标请求” (Swift)
- elasticsearch - 有没有办法以elasticsearch为源解析Grafana中的消息?
- ansible - 我如何知道主机是否属于组?
- react-native - React Native Expo AuthSession;谷歌认证