scipy解非线性方程组报错TypeError: 'int' object is not callable

scipy解非线性方程组报错TypeError: 'int' object is not callable。网上说是参数和函数重名的缘故,但貌似我的并没有重名,代码如下:

from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import root,fsolve

def fun(x):
    for i in range(0,len(x)):
        x[i] = float(x[i])
    fy = np.array([(x[0]*2010**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2010**x[3])+(-75.2303)**2/(x[4]*2010**x[5])-6259)),(x[0]*2011**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2011**x[3])+(-75.2303)**2/(x[4]*2011**x[5])-5958)),(x[0]*2012**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2012**x[3])+(-81.4421)**2/(x[4]*2012**x[5])-2624)),(x[0]*2014**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2014**x[3])+(-75.2303)**2/(x[4]*2014**x[5])-4809)),(x[0]*2015**x[1])*np.exp(-1/2(39.701**2/(x[2]*2015**x[3])+(-84.2187)**2/(x[4]*2015**x[5])-3877)),(x[0]*2017**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2017**x[3])+(-81.4421)**2/(x[4]*2017**x[5])-7381))])
    return fy
res_fsolve = fsolve(fun,[1,1,1,1,1,1])
print(res_fsolve)

报错内容如下:

TypeError Traceback (most recent call last)
in
9 fy = np.array([(x[0]*2010**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2010**x[3])+(-75.2303)**2/(x[4]*2010**x[5])-6259)),(x[0]*2011**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2011**x[3])+(-75.2303)**2/(x[4]*2011**x[5])-5958)),(x[0]*2012**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2012**x[3])+(-81.4421)**2/(x[4]*2012**x[5])-2624)),(x[0]*2014**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2014**x[3])+(-75.2303)**2/(x[4]*2014**x[5])-4809)),(x[0]*2015**x[1])*np.exp(-1/2(39.701**2/(x[2]*2015**x[3])+(-84.2187)**2/(x[4]*2015**x[5])-3877)),(x[0]*2017**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2017**x[3])+(-81.4421)**2/(x[4]*2017**x[5])-7381))])
10 return fy
---> 11 res_fsolve = fsolve(fun,[1,1,1,1,1,1])
12 print(res_fsolve)

c:\users\anton\appdata\local\programs\python\python36\lib\site-packages\scipy\optimize\minpack.py in fsolve(func, x0, args, fprime, full_output, col_deriv, xtol, maxfev, band, epsfcn, factor, diag)
145 'diag': diag}
146
--> 147 res = _root_hybr(func, x0, args, jac=fprime, **options)
148 if full_output:
149 x = res['x']

c:\users\anton\appdata\local\programs\python\python36\lib\site-packages\scipy\optimize\minpack.py in _root_hybr(func, x0, args, jac, col_deriv, xtol, maxfev, band, eps, factor, diag, **unknown_options)
211 if not isinstance(args, tuple):
212 args = (args,)
--> 213 shape, dtype = _check_func('fsolve', 'func', func, x0, args, n, (n,))
214 if epsfcn is None:
215 epsfcn = finfo(dtype).eps

c:\users\anton\appdata\local\programs\python\python36\lib\site-packages\scipy\optimize\minpack.py in _check_func(checker, argname, thefunc, x0, args, numinputs, output_shape)
24 def _check_func(checker, argname, thefunc, x0, args, numinputs,
25 output_shape=None):
---> 26 res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))
27 if (output_shape is not None) and (shape(res) != output_shape):
28 if (output_shape[0] != 1):

in fun(x)
7 for i in range(0,len(x)):
8 x[i] = float(x[i])
----> 9 fy = np.array([(x[0]*2010**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2010**x[3])+(-75.2303)**2/(x[4]*2010**x[5])-6259)),(x[0]*2011**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2011**x[3])+(-75.2303)**2/(x[4]*2011**x[5])-5958)),(x[0]*2012**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2012**x[3])+(-81.4421)**2/(x[4]*2012**x[5])-2624)),(x[0]*2014**x[1])*np.exp(-1/2(39.9612**2/(x[2]*2014**x[3])+(-75.2303)**2/(x[4]*2014**x[5])-4809)),(x[0]*2015**x[1])*np.exp(-1/2(39.701**2/(x[2]*2015**x[3])+(-84.2187)**2/(x[4]*2015**x[5])-3877)),(x[0]*2017**x[1])*np.exp(-1/2(41.3866**2/(x[2]*2017**x[3])+(-81.4421)**2/(x[4]*2017**x[5])-7381))])
10 return fy
11 res_fsolve = fsolve(fun,[1,1,1,1,1,1])

TypeError: 'int' object is not callable

0

1个回答

我后来发现,是我大意了,在函数里面,np.exp()里面1/2与后面的部分相乘,我把*号省略了。python里面的数字与数字之间的*是不能省略的。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python Scipy求解非线性方程组和数值积分
#求解非线性方程组2x1-x2^2=1,x1^2-x2=2 from scipy.optimize import fsolve #导入求解方程组的函数 from scipy import integrate def func(x:list): x1=x[0] x2=x[1] xy=[2*x1-x2**2-1,x1**2-x2-2] result=fsolve(xy...
python scipy求解非线性方程组
求解非线性方程组,cos(a) = 1 - d^2 / (2*r^2) ,L = a * r,d = 140,L= 156; 导入参数雅克比矩阵, 再次进行求解。A、求解非线性方程组:#导入优化模块和余弦函数from scipy.optimize import fsolvefrom math import cos#定义函数def f(x):    d=140    l=156    a,r=x...
使用scipy来解非线性方程
我们有两个正态分布:N(2,4)和N(3,5),现在想求出靠近两者均值的等概率点,如图所示: 其中Difference=N(2,4)-N(3,5),即为我们下列代码中的函数f#! /usr/bin/python3 #-*-coding:utf-8-*-from scipy.optimize import fsolve import numpy as np import math#定义函数(方程f(
关于错误:'str' object is not callable可能的原因之一
今天写代码遇到了一个问题TypeError: 'str' object is not callable。 给大家看看我的代码:(代码说明:用正则表达式匹配数字并对数字进行+1操作,然后替换原数字) str='literal books=1000' def add1(match): val=match.group() num=int(val)+1 return str
PYTHON编程导论群问题汇总(五)
Q15.改变对象与绑定 P54:Univs和Univs1被绑定到不同的对象的原理不是很清楚。 bigjing: Univs = [Techs, Ivys] Univs1 = [['MIT', 'Caltech'], ['Harvard', 'Yale', 'Brown']] Univs绑定的是含有Techs和Ivys的列表。 Univs1绑定的是含有['MIT', 'Calt...
python 外星人入侵游戏的开发
游戏简介:玩家控制着一艘最初出现在屏幕底部中央的飞船,玩家可以使用箭头左右移动飞船,还可以使用空格键进行射击。游戏开始时,一群外星人出现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星人都消灭干净后,将会出现新的外星人,他们一定的速度更快。只要有外星人撞到了玩家的飞船或者到达了屏幕底部,玩家就损失一艘飞船,玩家损失三艘飞船后,游戏结束。 语言:python 平
scipy求解微分方程
scipy1.1.0版本的接口有很大,变化,也新增了函数。使用scipy求解微分方程主要使用scipy.integrate模块,函数是odeint,solve_ivp(初值问题),可以求解一阶、二阶以及高阶方程或方程组。 下面直接上代码,已有详细注释 ''' 使用scipy求解微分方程,包括一阶、二阶和高阶微分方程 从scipy1.1.0版本开始,相关的求解函数API变化比较大,也新增了...
python用fsolve、leastsq对非线性方程组进行求解
背景: 实现用python的optimize库的fsolve对非线性方程组进行求解。可以看到这一个问题实际上还是一个优化问题,也可以用之前拟合函数的leastsq求解。下面用这两个方法进行对比: 代码: from scipy.optimize import fsolve,leastsq from math import sin,cos def f(x): x0 = float(
多线程中传参错误,以及'list' object is not callable错误解决方法
最近编写一个多线程爬取的小脚本,遇到’list’ object is not callable这个错误,发觉不对,我并没有list的这个函数啊,怎么会出现这个错误呢,于是Google大法,发现问题所在,在此将解决问题的过程记录下,方便以后查看。错误代码如下:file = open('1.txt','r') threads = [] for line in file: thread = thr
python:使用scipy求解常微分方程
遇到一个物理问题,要求解如下微分方程组: d2xdt2=wdydt\frac{d^2x}{dt^2}=w\frac{dy}{dt}d2ydt2=−wdxdt\frac{d^2y}{dt^2}=-w\frac{dx}{dt}经参考相关资料后得知,需要用到scipy包中的odeint函数。 odeint函数使用方法如下:def sol(y,t,v0,w0): return (w0*y[1]+
基于Python利用Newton-Raphson方法求解非线性方程组
       Python第三方库scipy.optimize中的fsolve和root这两个函数可用于非线性方程组的求解。但其更适用于结构形式稍显简单的方程组求解。对于多变量结构复杂的非线性方程组的求解操作起来稍显困难。因此,自己动手编写求解非线性方程组的程序。       本文采用了Newton-Raphson求解方法,其中利用了一阶差商代替偏导数的求解得到雅可比矩阵。 算法流程:   ...
python 来搞定 非线性方程组和最小二乘拟合问题
scripy 中的optimize 真的处理数学问题,非常爽,以后再也不用算了 %matplotlib inline import pylab as pl import numpy as np 非线性方程组求解 {5x1+3=04x02−2sin(x1x2)=0x1x2−1.5=0 \left\{ \begin{array}{c} 5x_1+3=0 \\ ...
笔记:TypeError: 'module' object is not callable(“模块”对象不可调用)
看到别人代码用了什么库、方法,就来练练手,可是在练习random()模块的时候,程序报了一个错误: TypeError: ‘module’ object is not callable 先来介绍一下random(): random() 方法返回随机生成的一个实数,它在[0,1)范围内。 random()方法的语法: import random random.random() 实例: impor...
解非线性方程组
求解非线性方程组,计算机方式,动态排斥技术。 Solving Nonlinear Equations System With Dynamic Repulsion-Based Evolutionary Algorithms
matlab求解非线性方程组
matlab求解非线性方程组代码,用不动点迭代法,用牛顿法法,离散牛顿法法,牛顿-雅可比迭代法,牛顿-SOR迭代法,牛顿下山法,两点割线法,拟牛顿法等方法求非线性方程组的一个根。
matlab 数值分析 非线性方程与方程组的数值解法
feval function x=fun(a,b) x=a+b; 调用 1.feval(@fun,a,b); 2.feval(‘fun’,a,b); 作为参数时 function x=main(fun,y,yy) c=feval(fun,a,b); @(x) 表示f为函数句柄,@(x)为定义句柄的运算符,这样的函数句柄指向函数表达式。 f=@(x)acos(x) 相当...
笨方法学python(ex1-17)--%,input,解包,读取,写文件
1 %r 百分号非常规用法: formatter = "%r %r %r %r"  print formatter % (1, 2, 3, 4) 将 %r 和 %s 比较一下。注意到了吗?%r 打印出来的是你写在脚本里的内容,而 %s 打印的是你应该看到的内容 2input() python3中没有raw_input()函数了,直接用input()代替 可在括号中加提示语,如:a
tensorflow中的问题终结
tensorflow中的问题终结 问题1: File “D:/yinda/Python_machine_learning/detect-cell-edge-use-unet-master/unet.py”, line 46, in get_unet merge6 = merge([drop4, up6], mode=’concat’, concat_axis=3) TypeErr...
牛顿法解非线性方程组
1关于非线性方程组什么是非线性方程组,平时常见的是线性方程组,类似于:A*X=0;     (齐次方程)A*X=B;(非齐次方程)齐次方程的常见解法有很多,比如SVD分解,LU分解,求线性最小二乘解X=(A'*A)*A'*(-B); 非线性方程组也可以写成A*X=B的形式,只是其中A=A(x),B=B(x),只要A和B中元素依赖于一个或者多个Xi,那么此方程组就是一个非线性方程组。2牛顿法求解非线...
非线性方程(组)的求解
Example1:用solve命令求下列非线性方程(组)的解 %求解非线性方程(组)的solve命令 (1)x=solve('8*x^9+17*x^3-3*x=-1','x') (2)x=solve('sin(cos(2*x^3))=0','x') (3) E1=sym('x^x-4=0'); E2=sym('2*x*y+x=1'); [x,y]=solve(E1,E2); x1...
Newton法解非线性方程组
#P223 例7 import numpy as np def f1(x1,x2): return (4*x1**2+3*x2**2-1) def f2(x1,x2): return (x1**3-8*x2**3-1) def fd11(x1): return 8*x1 def fd12(x2): return 6*x2 def fd21(x1): r...
MATLAB 牛顿迭代法解非线性方程组
牛顿迭代法流程图: Newton迭代法计算步骤 : (1) 取初始点x0,最大迭代次数N和精 度 ε。 (2) 如果 f' (x0)=0, 则停止计算;否则计算  x1 = x0 -f(x0)/ f'(x0)。 (3) 如果|x1-x0|<ε, 则停止计算 ; 否 则 x0=x1, 转 到 (2)。 (4) 如果n=N, 则停止计算; 否 则 取 n=n+1, 转 到 (2)
使用matlab进行非线性方程组求解
今天,恰好遇到使用matlab进行了非线性方程组的求解。 情况是,一些无法手动表示,推导的方程组,比如像超越方程这种,可以用matlab进行直接求值,这在一些需要仿真数据的场景比较有用。 环境:matlab2015a 函数:Symbolic Math Toolbox里面的sym和solve函数。其中sym在第一个红框中,solve在第二个红框中。 1.sol
python求非线性方程的解/非线性方程组的解
用到的是scipy.optimize中的fsolve和root这两个函数,以下是简单使用:from scipy.optimize import root,fsolve import numpy as np from matplotlib import pyplot as plt #求多元非线性方程组的解 def f1(x): return np.array([2*x[0]**2+3*x[1
matlab-求解非线性方程/方程组
综述 使用matlab求解非线性规划 代码 目标函数们 == 0 %create by Zhiyang Dou %2019/4/10 %contact:sdudzy@163.com function F = target(D,r,J,B,sigma_J) F(1)= -J + ((J+D(1))*normcdf((log((J+D(1))./B)+ (r+0.5*D(2)*D(2)))./D(2...
MATLAB求解非线性方程组
function y=f_sb(x) %构造线性方程组 p=1025; g=9.8; y(1)=-p*g*x(1)*pi+12000+sin(x(2))*x(3); y(2)=-x(3)*cos(x(2))+0.625*pi*(2-x(1))*x(4)*x(4); y(3)=-x(3)*sin(x(2))-pi*0.025*0.025*p*g+100+x(5)*sin(x(6)); y(4)=-
C语言 Newton迭代法解非线性方程组
设计思想:非线性方程组包含两个非线性方程及两个位置元,按Newton迭代公式进行迭代求解,当迭代误差小于给定精度水平时,取最终的X1,X2为所得方程的解。
计算方法之非线性方程组求解
非线性方程求根数值解法 实验目的 (1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。 (2)编写割线迭代法的程序,求非线性方程的解,并于牛顿迭代法作比较。 一、实验内容 1、用牛顿迭代法求下列方程的根 (1) x^2-e^x=0 (2) xe^x-1=0 (3) lgx+x-2=0 2、二分法解以上问题 3、编写割线法程序求解第一问的方...
【Python 学习笔记】文件写入时遇到 TypeError 报错
在一个简单的文件写入之后: fileOBJ = open("text1.txt","wb") fileOBJ.write("It is just a text.\n") fileOBJ.close() 我遇到了 TypeError 类型的报错: Traceback (most recent call last): File "text.py", line 5, in
TypeError: 'MongoClient' object is not callable——一个小错误,数据库的名字没用中括号
今天在用Python爬虫存储到MongoDB数据库的时候,老是报这个错误:TypeError: 'MongoClient' object is not callable 仔细检查后,发现是我在声明数据库的时候,将中括号[ ]换成了圆括号() 错误: 修改完成后的代码: client = pymongo.MongoClient('localhost') db = client['
MATLAB fsolve求解非线性方程组源程序代码
MATLAB fsolve求解非线性方程组源程序代码
MATLAB解非线性方程组 雅可比 迭代
使用牛顿方法解非线性方程组 雅可比 迭代 jacobi matlab代码
非线性方程组求解matlab程序
mulStablePoint 用不动点迭代法求非线性方程组的一个根 mulNewton 用牛顿法法求非线性方程组的一个根 mulDiscNewton 用离散牛顿法法求非线性方程组的一个根 mulMix 用牛顿-雅可比迭代法求非线性方程组的一个根 mulNewtonSOR 用牛顿-SOR迭代法求非线性方程组的一个根 mulDNewton 用牛顿下山法求非线性方程组的一个根 mulGXF1 用两点割线法的第一种形式求非线性方程组的一个根 mulGXF2 用两点割线法的第二种形式求非线性方程组的一个根 mulVNewton 用拟牛顿法求非线性方程组的一组解 mulRank1 用对称秩1算法求非线性方程组的一个根 mulDFP 用D-F-P算法求非线性方程组的一组解 mulBFS 用B-F-S算法求非线性方程组的一个根 mulNumYT 用数值延拓法求非线性方程组的一组解 DiffParam1 用参数微分法中的欧拉法求非线性方程组的一组解 DiffParam2 用参数微分法中的中点积分法求非线性方程组的一组解 mulFastDown 用最速下降法求非线性方程组的一组解 mulGSND 用高斯牛顿法求非线性方程组的一组解 mulConj 用共轭梯度法求非线性方程组的一组解 mulDamp 用阻尼最小二乘法求非线性方程组的一组解
迭代法求解非线性方程组
#include #include using namespace std; int M;//允许迭代最大次数 double E;//允许的误差 /* 针对式子: x^2-10x+y^2+23=0 xy^2+x-10y^2+2=0 */ //计算范数||X-Y||的值 double getNorm(double *x, double *y){ dou
Matlab学习手记——非线性方程组求解:牛顿法
功能:牛顿法求解非线性方程组。 调用示例     命令行输入: [r, n]=mul_Newton([0 0 0], 1e-5)     得到结果: r = 0.4996 -0.0900 -0.5259 n = 5 源码 function [r, n] = mul_Newton(x0, eps) % 牛顿法求解非线性方程组 % 输入参数说明: % 初始迭代...
不动点迭代求解非线性方程组(C/C++)
// fixpt.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "stdlib.h"#include "math.h"int main(int argc, char* argv[]){    double* fcn(double [], int);    int fix...
Matlab非线性方程求解
Matlab求解 非线性方程求解 符号法 Newton法 二分法 弦位法 迭代法
十多种方法——求解非线性方程组MATLAB
mulStablePoint 用不动点迭代法求非线性方程组的一个根 mulNewton 用牛顿法法求非线性方程组的一个根 mulDiscNewton 用离散牛顿法法求非线性方程组的一个根 mulMix 用牛顿-雅可比迭代法求非线性方程组的一个根 mulNewtonSOR 用牛顿-SOR迭代法求非线性方程组的一个根 mulDNewton 用牛顿下山法求非线性方程组的一个根 mulGXF1 用两点割线法的第一种形式求非线性方程组的一个根 mulGXF2 用两点割线法的第二种形式求非线性方程组的一个根 mulVNewton 用拟牛顿法求非线性方程组的一组解 mulRank1 用对称秩1算法求非线性方程组的一个根 mulDFP 用D-F-P算法求非线性方程组的一组解 mulBFS 用B-F-S算法求非线性方程组的一个根 mulNumYT 用数值延拓法求非线性方程组的一组解 DiffParam1 用参数微分法中的欧拉法求非线性方程组的一组解 DiffParam2 用参数微分法中的中点积分法求非线性方程组的一组解 mulFastDown 用最速下降法求非线性方程组的一组解 mulGSND 用高斯牛顿法求非线性方程组的一组解 mulConj 用共轭梯度法求非线性方程组的一组解 mulDamp 用阻尼最小二乘法求非线性方程组的一组解
拟牛顿法 解非线性方程组 C++
//拟牛顿法 解非线性方程组 //徐世良主编 数值分析与算法 // C++接口 需要Eigen3支持
数值分析—二分法解非线性方程组—FORTRAN程序
数值分析—二分法解非线性方程组—FORTRAN程序 program main implicit none integer::i,n,k=-1 real8::a,b,c,x integer,dimension(