簡體   English   中英

如何在Python中獲取數學函數作為輸出

[英]How to obtain a math function as an output in python

我想做這樣的事情

def gaussian(x, amp):
    return amp * exp(-(x-cen)**2 /wid)

我只想替換amp和x並獲得一個方程作為輸出

例如:

gaussian(1,3)

3 * exp(-(1-cen)**2 /wid)作為輸出。

我可以為幾個列表執行此操作嗎,在幾個振幅值中,另一個在各自的x中

我不確定您所說的“我需要一個方程式”是什么意思。 您是否需要評估? 然后可能您可以返回一個lambda對象,然后可以對其進行評估。 或者您可以使用閉包之類的東西:

import math

def gaussian(x, amp): 
    def _gauss( cen,wid):
        return amp * math.exp(-(x-cen)**2 /wid)

    return _gauss

g = gaussian(10,1)
print g(2,4)

g現在是一個可調用函數,其中x和amp已被替換,因此您只需要傳遞cen和wid

進行此工作的原因是,每次調用包裝函數時都會對內部函數_gauss進行評估,因此將使用父函數傳遞的參數對函數進行評估,並將其用作“靜態”。 從那時起,您就可以返回一個函數,然后對其求值並傳遞所有剩余的參數,這是一種常見的技術,適用於庫強制您使用parameterlles回調的情況。 僅退回就比簡單的函數調用(即生成子函數而不是對其求值)更昂貴。

我會將您的return轉換為字符串:

def gaussian(x, amp):
    return str(amp) + '* exp(-(' + str(x) + '-cen)**2 /wid)'

這應該返回您想要的值:

gaussian(1,3)

回報

'3 * exp(-(1-cen)**2 /wid)'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM