weixin_47126418 2020-07-05 22:13 采纳率: 0%
浏览 359

请问Python中非线性拟合mpfit怎么使用?

由于需要利用L-M算法进行光谱拟合,所以下载了mpfit.py文件使用,但是不是很清楚用法;我尝试拟合最简单的线性函数,但是结果完全不正确;初始参数未经任何改变就被输出;代码如下,不太清楚错误在哪里;希望各位帮忙。

import mpfit as mt
import numpy as np
import random
import types

x=np.arange(0,10,0.1)
y=[]
for i in range(np.size(x)):
   y.append(5*x[i]+3+random.randrange(0,1))
def myfunct(p, fjac=None,x=None, y=None, err=None):
    model=p[0]*x+p[1]
    status=0
    return([status,(y-model)/(err)])
p0=[10,9]
fa = {'x':x, 'y':y,'err':0.1}
m=mt.mpfit(myfunct,p0,functkw=fa)
print ('status = ', m.status)


if (m.status <= 0):
    print ('error message = ', m.errmsg)
print ('parameters = ', m.params)

输出:
status =  4
parameters =  [10.  9.]
  • 写回答

2条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办