当前位置: 首页 > 知识库问答 >
问题:

分别计算求和参数

陶英纵
2023-03-14

我尝试使用曲线拟合来定义以下形式的函数

Z = (Rth(1 - np.exp(- x/tau))

我想计算参数Rth和tau的第一个四个值。目前,它的作品罚款如果我使用整个功能像这样:

 Z = (a * (1- np.exp (- x / b))) + (c * (1- np.exp (- x / d)))+ (e * (1- np.exp (- x / f)))  + (g * (1- np.exp (- x / f)))

但这肯定不是一个好方法,例如,如果我有一个包含4个以上指数项的很长的函数,我想得到所有的参数。如何调整它,使其在曲线拟合后返回特定数量的Rth和tau值?

例如,如果我想从一个8项指数函数中得到16个参数,我不需要写完整的8项,只需要写一个一般形式,它就会给出所需的输出。

非常感谢。

共有2个答案

巫晋鹏
2023-03-14

我设法用以下方法解决了它,也许不是聪明的方法,但它对我有效。

def func(x,*args):
Z=0
for i in range(0,round(len(args)/2)):
    Z += (args[i*2] * (1- np.exp (- x / args[2*i+1])))
return Z

然后在一个单独的函数中调用参数,我可以调整参数的数量。

def func2(x,a,b,c,d,e,f,g,h):
return func(x,a,b,c,d,e,f,g,h)
popt , pcov = curve_fit(func2,x,y, method = 'trf', maxfev = 100000)

这对我来说很好。

楚硕
2023-03-14

使用least_squares可以非常简单地获得任意函数和。

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import least_squares

def partition( inList, n ):
    return zip( *[ iter( inList ) ] * n )

def f( x, a, b ):
    return a * ( 1 - np.exp( -b * x ) )

def multi_f( x, params ):
    if len( params) % 2:
        raise TypeError
    subparams = partition( params, 2 )
    out = np.zeros( len(x) )
    for p in subparams:
        out += f( x, *p )
    return out

def residuals( params, xdata, ydata ):
    return multi_f( xdata, params ) - ydata


xl = np.linspace( 0, 8, 150 )
yl = multi_f( xl, ( .21, 5, 0.5, 0.1,2.7, .01 ) )

res = least_squares( residuals, x0=( 1,.9, 1, 1, 1, 1.1 ), args=( xl, yl ) )

print( res.x )
yth = multi_f( xl, res.x )
fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1 )

ax.plot( xl, yl )
ax.plot( xl, yth )

plt.show( )
 类似资料:
  • 本文向大家介绍虚拟化和云计算的区别分析,包括了虚拟化和云计算的区别分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了虚拟化和云计算的区别。分享给大家供大家参考,具体如下: 经常有人讨论这两者的区别,在这个行业时间长,听到的也自然很多,这里做一个总结。下面的观点,我想没有对和错,只是理解不同。 所谓虚拟化,虚拟机,vps,其实是差不多一个意思 所谓云计算,广义上肯定是包括一切,不过狭义一点

  • 本文向大家介绍云计算和网格计算之间的区别,包括了云计算和网格计算之间的区别的使用技巧和注意事项,需要的朋友参考一下 云计算 云计算是指客户端-服务器计算框架,其中资源以集中方式进行管理。它作为按使用付费服务提供。云计算使系统始终可访问。 网格计算 网格计算是指由相同或不同类型的计算机组成的网络,其目标是提供一种环境,在该环境中可以由多个计算机根据需要一起执行任务。每台计算机也可以独立工作。网格计算

  • 问题内容: 我可以在不枚举的情况下计算每列的不同值吗? 说我有一个表,,,并没有其他的列。在没有明确提及这些列的情况下,我希望得到与以下结果相同的结果: 我怎样才能做到这一点 ? 问题答案: 我认为使用普通SQL可以轻松完成的最好工作就是运行这样的查询,以生成所需的查询,然后运行该查询。

  • 本文向大家介绍AI和软计算之间的区别,包括了AI和软计算之间的区别的使用技巧和注意事项,需要的朋友参考一下 人工智能 人工智能或人工智能是一门处理机器智能的科学。它利用图像处理,认知科学,神经系统,机器学习等技术。AI使机器能够以与人类在不同情况下的相似行为来表现。 软计算 软计算是为解决非线性问题而开发的计算模型。它有助于解决需要人类智能解决的问题。概率模型,模糊逻辑,神经网络,进化算法是软计算

  • 我有这个代码: 我必须用glFrustum替换glOrtho函数并得到相同的结果。 我阅读了khronos上的opengl指南,理解了glOrtho和glFrustum之间的区别,但我不知道如何计算参数。 如何计算传递给glFrustum函数的参数?

  • 本文向大家介绍需求分页和细分之间的区别,包括了需求分页和细分之间的区别的使用技巧和注意事项,需要的朋友参考一下 内存管理是必不可少的功能之一,它可以为执行过程分配内存,并在不再需要该进程时取消分配内存。为此,基本上有两种方法-需求分页和分段。两者之间的差异定义如下。 以下是需求分页和细分之间的重要区别- 序号 键 需求分页 分割 1 定义 分页是一种内存管理技术,其中,进程地址空间分为大小相同的块