根据一个参数的变化给出若干输出的方程

2024-05-17 08:09:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的公式:

import math 
import pandas as pd
import numpy as np

ha = 8.14
k = 0.0187
Do = 0.1738
Di = 0.0138
L = 3
F = 20 
Ta = 293
Ts = 113
pi = 3.14159265

Q = (pi*(Ta-Ts))/(((1/ha*Do))+(1/(2*k))*math.log(Do/Di)) * L

h = (Q*3600)/F

基本上,我想要F=np.arange(20100,10)时的输出

这可能吗

我试过了

 a = np.arange(20,100,10)
 F = 20 + i 
 for i in range(a):
    print h

不知道为什么这样不行

有什么想法吗


Tags: importnumpypandasasnppimathdo
3条回答

使用numpy时,应该尽量不要使用显式循环,因为numpy的主要优点是以编译语言的速度隐式执行循环

说到我们的问题,很简单

F = np.arange(20,100,10) 
h = Q*3600/F
print h

在这里,我将数组F作为一个普通的Python变量来使用,并由numpymagics来识别循环的需要

记住:您可以在表达式中使用numpy的数组,就像使用标量一样,as far as your usage is a sensible one,Python将计算数组结果


旁注使用np.pi而不是3.14159...

您需要定义一个接受参数的函数。然后可以基于一组参数调用该函数。下面我向您展示一个带有sin(x)函数的示例,因为我确信您可以找出hwo来适应您的需要

import math

points = np.arange(20, 100, 10)

def sine(x, a=1.0, b=2.0):
    return a*math.sin(b*x)

for i in points:
    print(sine(i,b=i), end=" ")

-0.8509193596391765 0.9978032744219705 -0.8012247906768953 -0.6501275235748956 -0.2620839590180966 -0.7736233386803075 -0.5444763096196569 0.8272184413093554 

这将使用各种参数b调用sin函数,并在不同的点x计算它

你这样做应该总是打印出完全相同的数字。因为你已经计算过了。任何地方都没有函数,把它放在for循环中不会自动改变任何东西

除非是我不知道的翻译中的熊猫魔术(如果是那样的话,对不起,我不是大熊猫的使用者)

当前您的代码正在给Qh一个特定的值,并且不再更改该值

说明:

在下面的代码中

Q = 4
W = Q

print(Q)
print(W)

您的意思是:名称Q表示值4,名称W表示Q的当前值(即4,不管Q以后是否改变)

如果键入Q = 10,W将不会更改:

Q = 10

print(Q)
print(W)

因此,每次调用函数时都需要计算这些函数:

def Q():
    return (pi*(Ta-Ts))/(((1/ha*Do))+(1/(2*k))*math.log(Do/Di)) * L


def h():    
    return (Q()*3600)/F    


for i in np.arange(20,100,10):
    F = 20 + i
    print h()

上面的解释有点过于简单化了,所以您可能需要检查这个link

相关问题 更多 >