迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中使用 Fsolve

作者:迹忆客 最近更新:2023/06/28 浏览次数:

本文将探讨如何使用 fsolve 在 Python 中求解。 我们还将探索它的使用场景和一些示例代码,以更好地理解如何以及何时使用它来达到某种结果。

让我们首先了解 fsolve 是什么以及为什么使用它。


Python 中的 fsolve 函数

方程是数据科学的根源,它们帮助数据科学家、数学家、化学工程师和医生理解他们日常处理的各种场景。 现在,随着计算机融入我们的日常生活,连续求解更大规模的方程变得越来越困难。

Python 的 fsolve 使这些专业人士和其他人可以更轻松地使用 Python 库提供的不同模块来求解这些方程。 fsolve 本质上是一个返回非线性方程根的 SciPy 模块。

fsolve 为各种场景提供了各种参数。 这些可以直接从在线提供的 SciPy 文档中轻松找到。

这是 fsolve 的整个参数列表:

示例代码:

scipy.optimize.fsolve (func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)

您可以在 SciPy 文档中找到所有参数及其含义的详细说明。 然而,我们将对这些参数进行简短但易于理解的总结:

参数 说明
func, callable f(x, *args)  
x0, ndarray 该参数表示函数 f(x)=0 的根的初始估计值。
args、tuple(可选) 这些是函数可能需要的任何额外参数。
fprime,callable f(x, *args) (可选) 这是一个用于计算函数雅可比行列式与行间导数的估计值的函数。
full_output, bool(可选) 如果满足条件或 True,则返回任何可选输出值。
col_deriv, bool (可选) 通过此参数,您可以指定雅可比函数是否计算列的导数。 根据 SciPy 文档,由于没有转置操作,因此速度更快。
xtol, float(可选) 此参数将允许函数根据两个连续迭代值之间相对误差的最大 xtol 终止计算。
maxfev, int (可选) 这定义了函数调用的最大次数。
band、tuple(可选) 这适用于 fprime 设置为 None 时。 如果参数设置为包含矩阵内子对角线和超对角线数量的二序列,则雅可比矩阵被视为带状。
epsfcn, float(可选) 如果 fprime 设置为 None,则此参数将包含用于近似雅可比行列式前向差的合适步长长度。 如果 epsfcn 小于机器精度,则函数中的相对误差被假定为机器精度的量级。
factor,float(可选) 此参数确定初始步长界限,并且必须介于 (0.1, 100) 之间。
diag、sequence(可选) 这些 N 正条目用作变量的比例因子。

使用 fsolve 函数在 Python 中求解

您现在可能已经知道,fsolve 可用于不同场景中的各种非线性方程。 让我们探索一些简单的代码示例,以更好地掌握如何使用 fsolve:

以 -0.2 为起点求方程 x+2cos(x) 的根

示例代码:

from math import cos
import scipy.optimize
def func(x):
    y = x + 2*cos(x)
    return y
y = scipy.optimize.fsolve(func,0.2)
print (y)

在此代码中,我们从 Python 中庞大的数学库导入 cos 函数,并从 scipy(fsolve 的来源)进行优化。 接下来,我们定义方程并将其存储在 func 方法中的 y 中。

正确初始化方程后,我们只需使用 fsolve 调用包含方程的方法 (func)。 在第二个参数中,我们定义方程的起点。

然后结果存储在变量 y 中,并打印输出。

代码的输出:

[-1.02986653]

求解起点为 0 和 2 的方程

示例代码:

from math import cos
import scipy.optimize
def func(x):
        y = [x[1]*x[0] - x[1] - 6, x[0]*cos(x[1]) - 3]
        return y
x0 = scipy.optimize.fsolve(func,[0, 2])
print(x0)

在此代码中,我们遵循与代码 1 相同的步骤,从 Python 的 math 和 scipy 库导入 cos 和 scipy.optimize。 我们通过在名为 func 的方法中定义方程来继续下一步。

然后,我们将此方法称为 fsolve 函数中的参数,并为其提供两个起点 0 和 2,然后将其存储并打印在名为 x0 的变量中。

代码的输出:

[6.49943036 1.09102209]

以 0.3 为起点求方程 4sin(y)-4 的根

示例代码:

from math import sin
import scipy.optimize
def func(y):
        x= 4*sin(y) - 4
        return x
x= scipy.optimize.fsolve(func,0.3)
print (x)

在此示例代码中,我们从数学库导入 sin 而不是 cos。 代码的结构与上面的示例相同,我们还为 fsolve 导入 scipy.optimize,然后在方法 func 中定义一个方程。

我们将此方法称为 fsolve 中的参数,起点为 0.3。 结果值存储在变量 x 中并打印输出。

代码的输出:

[1.57079633]

在本文中,我们了解了 fsolve 用于求非线性方程的根,了解了 fsolve 可以采用的不同类型的参数以及每个参数的含义。 此外,我们还浏览了 fsolve 的一些工作示例,并研究了如何在代码中使用它。

现在您已经了解了如何使用 fsolve 导出解决方案的理论和实际代码示例,现在是时候创建您自己的代码来进一步探索 fsolve 的工作原理了。

我们希望本文有助于您理解如何使用 fsolve 解决 Python 中的问题。

上一篇:在 Python 中创建 Getter 和 Setter

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中创建 Getter 和 Setter

发布时间:2023/06/28 浏览次数:172 分类:Python

这些行为在支持 OOP 的编程语言中很流行,Python 也支持它。 本文将讨论如何在 Python 中创建 getter 和 setter。Python 中的 Getter 和 Setter

从 Java 代码调用 Python 脚本

发布时间:2023/06/28 浏览次数:93 分类:Python

本篇文章介绍了从 Java 代码调用 Python 脚本的三种不同方法。从 Java 代码调用 Python 脚本 有时,我们必须从Java代码中调用Python脚本来满足项目需求。

Python 中的位掩码简介

发布时间:2023/06/27 浏览次数:125 分类:Python

本篇文章介绍了 Python 中的位掩码,并演示了如何使用按位运算符(例如 AND、OR、NOT 等)执行位掩码。Python 中的位掩码简介 位掩码是几乎所有编程语言的通用概念;

在 Ubuntu 中卸载 Python

发布时间:2023/06/27 浏览次数:158 分类:Python

本文演示如何从 Ubuntu 中删除或卸载 Python。检查你的系统中是否安装了Python 使用 Ctrl+Alt+T 打开终端。打开终端后,使用命令 python3 --version 检查您的系统是否安装了 python。

Python Teradata 连接

发布时间:2023/06/27 浏览次数:86 分类:Python

本文将讨论一些基本的正确准则,并在讨论连接方式之前了解 Teradata 模块的工作原理。Python 中的 Teradata 数据库 您可以使用 Python 和 Teradata 模块编写与 Teradata 数据库的强大交互脚本。

在 Python 中查找素因数

发布时间:2023/06/27 浏览次数:175 分类:Python

本篇文章将介绍如何在 Python 中执行素因数分解。质因数分解概述 在数学中,数字的因子是那些可以除以给定数字且余数为零的数字。

在 Python 中从 URL 中提取域

发布时间:2023/06/27 浏览次数:86 分类:Python

本文将通过实际例子来讲解Python的 urlparse() 函数从URL中解析并提取域名。 我们还将讨论提高解析 URL 和使用其不同组件的能力。使用 urlparse() 从 URL 中提取域

Python 中的省略号对象

发布时间:2023/06/27 浏览次数:158 分类:Python

本篇文章将介绍 Python 中省略号对象的使用。使用省略号作为未编写代码的占位符 省略号对象可以以不同的方式使用。 它主要充当未编写代码的占位符。

实现 Python Builder 模式的不同方法

发布时间:2023/06/27 浏览次数:70 分类:Python

构建器模式是一种允许对象的创建与其表示分离的模式。 这种模式可以创建和配置复杂的对象而无需继承,这是一种强大但不灵活的方法。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便