python - python:绘制和优化相同的函数
问题描述
可以说我有以下功能:
def f(x):
return log(3*exp(3*x) + 7*exp(7*x))
我想做两件事:
1) 在一系列 x 值上绘制函数
2)使用scipy中的Newton方法找到函数的根
我的问题是,似乎最好使用 numpy array 进行绘图x=np.linspace(-2,2,1000)
,但随后评估函数会导致错误TypeError: only size-1 arrays can be converted to Python scalars
。我可以通过简单地分别将和更改为log
和exp
来解决这个问题。np.log
np.exp
但是这样做会让 scipy.optimize.newton 不高兴。
似乎我需要定义函数两次,一次用于绘图(with np. ...
),一次用于以上面给出的形式进行优化。
我无法想象事实是这样的。任何提示将不胜感激。
解决方案
似乎合法,您只需要使用 numpy 函数而不是基本数学函数:
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
%matplotlib inline
def f(x):
return np.log(3*np.exp(3*x) + 7*np.exp(7*x))
x = np.linspace(-2,2,1000)
y = f(x)
plt.scatter(x, y)
optimize.root(f, 1)
推荐阅读
- javascript - 我怎样才能点击一个
- python - 如何使用 Python 正确遍历 Selenium Webdriver 中的 Web 元素列表?
- laravel - Laravel 路由中复杂模型名称的依赖注入
- python-3.x - AttributeError:当我使用 blaze 模块时,模块 'pandas' 没有属性 'tslib'
- python - 如何纠正我在石头剪刀布游戏中的错误
- json - Shell 脚本 - 如果在 Bash 中匹配,则迭代、比较和提取 JSON 的值
- typescript - 如何在 tsconfig 中声明库中包含的类型?
- javascript - 屏幕阅读器在 aria-valuetext 在任何时候都不会更改多个步骤后停止阅读
- swift - 我可以使用泛型协议来描述非泛型类型的委托吗?
- javascript - 在开关情况下无法识别对象的属性