2024年Python最全使用Python求解方程_python解方程,2024年最新面试高分实战

简介: 2024年Python最全使用Python求解方程_python解方程,2024年最新面试高分实战

已剪辑自: https://zhuanlan.zhihu.com/p/24893371

新年第一篇,搞起.

这回写一个好久之前想做,一直搁着没做的东西—— Python 解方程(其实是放假回家,趁着家里电脑重装 LOL 的时间过来写一篇). 咱这回用三种不同的方法,来应对平常碰到的简单方程.

Numpy 求解线性方程组

例如我们要解一个这样的二元一次方程组:

x + 2y = 3
4x + 5y = 6

当然我们可以手动写出解析解,然后写一个函数来求解,这实际上只是用 Python 来单纯做“数值计算”. 但实际上,numpy.linalg.solve 可以直接求解线性方程组.

一般地,我们设解线性方程组形如 Ax=b,其中 A 是系数矩阵,b 是一维(n 维也可以,这个下面会提到),x 是未知变量. 再拿上面地最简单的二元一次方程组为例,我们用 numpy.linalg.solve 可以这样写:

In [1]: import numpy as np
   ...: A = np.mat('1,2; 4,5')    # 构造系数矩阵 A
   ...: b = np.mat('3,6').T       # 构造转置矩阵 b (这里必须为列向量)
   ...: r = np.linalg.solve(A,b)  # 调用 solve 函数求解
   ...: print r
   ...:
Out[1]: [[-1.]
         [ 2.]]

那么前面提到的“ n 维”情形是什么呢?实际上就是同时求解多组形式相同的二元一次方程组,例如我们想同时求解这样两组:

x + 2y = 3
4x + 5y = 6

x + 2y = 7
4x + 5y = 8

就可以这样写:

In [2]: import numpy as np
   ...: A = np.mat('1,2; 4,5')          # 构造系数矩阵 A
   ...: b = np.array([[3,6], [7,8]]).T  # 构造转置矩阵 b (这里必须为列向量),
   ...: 注意这里用的是 array
   ...: r = np.linalg.solve(A,b)        # 调用 solve 函数求解
   ...: print r
   ...:
Out[2]: [[-1.         -6.33333333]
         [ 2.          6.66666667]]

SciPy 求解非线性方程组

先看官方文档的介绍:

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)[source]

一般来说,我们只需要用到 func 和 x0 就够了. func 是自己构造的函数,也就是需要求解的方程组的左端(右端为 0),而 x0 则是给定的初值.

我们来看一个具体的例子,求解:

x + 2y + 3z - 6 = 0
5 \* (x \*\* 2) + 6 \* (y \*\* 2) + 7 \* (z \*\* 2) - 18 = 0
9 \* (x \*\* 3) + 10 \* (y \*\* 3) + 11 \* (z \*\* 3) - 30 = 0

就可以这么写:

In [3]: from scipy.optimize import fsolve
   ...:
   ...: def func(i):
   ...:     x, y, z = i[0], i[1], i[2]
   ...:     return [
   ...:             x + 2 \* y + 3 \* z - 6,
   ...:             5 \* (x \*\* 2) + 6 \* (y \*\* 2) + 7 \* (z \*\* 2) - 18,
   ...:             9 \* (x \*\* 3) + 10 \* (y \*\* 3) + 11 \* (z \*\* 3) - 30
   ...:            ]
   ...:
   ...: r = fsolve(func,[0, 0, 0])
   ...: print r
   ...:
Out[3]: [ 1.00000001  0.99999998  1.00000001]

当然,SciPy 也可以用来求解线性方程组,这是因为 scipy.optimize.fsolve 本质上是最小二乘法来逼近真实结果.

SymPy 通吃一切

例如求解一个:

x + 2 * (x ** 2) + 3 * (x ** 3) - 6 = 0

直接就是:

In [4]: from sympy import \*
   ...: x = symbols('x')
   ...: solve(x + 2 \* (x \*\* 2) + 3 \* (x \*\* 3) - 6, x)
Out[4]: [1, -5/6 - sqrt(47)\*I/6, -5/6 + sqrt(47)\*I/6]

另外,

@Wayne Shi

的这篇 使用 Python 解数学方程 ,就重点讲述了 SymPy 解线性方程组的方法,所以我也就不再赘述了。

其实 SymPy 能干的太多了,有兴趣的可以看一看 GitHub上的 Quick examples.



SymPy简介

SymPy的官方教程:

https://github.com/sympy/sympy/wiki/Quick-examples

https://docs.sympy.org/latest/tutorial/index.html

已剪辑自: https://blog.csdn.net/starter_____/article/details/81989835

SymPy是符号数学的Python库。它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。

In [1]:from sympy import *
In [2]:x = Symbol('x')
In [3]:y = Symbol('y')123
展开与折叠

expand( )展开方程

In [8]: ((x+y)**2).expand()
Out[8]: x**2 + 2*x*y + y**212

facrot( )折叠方程

In [13]: factor(x**2 + 2*x*y + y**2)
Out[13]: (x + y)**212
分离与合并

apart( )分离整式

In [14]: together(1 + 2/(x - 1))
Out[14]: (x + 1)/(x - 1)12

together( )合并整式

In [10]: together(1/x+1/y+1/z)
Out[10]: (x*y + x*z + y*z)/(x*y*z)12
简化表达式

simplify( )普通的化简

In [15]: simplify((x**3 + x**2 - x - 1)/(x**2 + 2*x + 1))
Out[15]: x - 112

trigsimp( )三角化简

In [18]: trigsimp(sin(x)/cos(x))
Out[18]: tan(x)12

powsimp( )指数化简

In [21]: powsimp(x**a*x**b)
Out[21]: x**(a + b)12
solve( )解方程

第一个参数为要解的方程,要求右端等于0,第二个参数为要解的未知数

一元一次方程

In [7]:solve(x * 3 - 6, x)
[2]12

二元一次方程

In [8]: solve([2 * x - y - 3, 3 * x + y - 7],[x, y])
Out[8]: {x: 2, y: 1}12
limit( )求极限

dir=’+’表示求解右极限,dir=’-‘表示求解左极限

In [10]: limit(1/x,x,oo,dir='+')
Out[10]: 0
In [11]: limit(1/x,x,oo,dir='-')
Out[11]: 01234
integrate( )求积分

不定积分

In [12]: integrate(sin(x),x)
Out[12]: -cos(x)12

定积分

In [13]: integrate(sin(x),(x,0,pi/2))
Out[13]: 112
diff( )求导
In [14]: diff(x**3,x)
Out[14]: 3*x**2
In [15]: diff(x**3,x,2)
Out[15]: 6*x12345
dsolve( )解微分方程

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典

简历模板


相关文章
|
20天前
|
人工智能 安全 Shell
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
Jupyter MCP服务器基于模型上下文协议(MCP),实现大型语言模型与Jupyter环境的无缝集成。它通过标准化接口,让AI模型安全访问和操作Jupyter核心组件,如内核、文件系统和终端。本文深入解析其技术架构、功能特性及部署方法。MCP服务器解决了传统AI模型缺乏实时上下文感知的问题,支持代码执行、变量状态获取、文件管理等功能,提升编程效率。同时,严格的权限控制确保了安全性。作为智能化交互工具,Jupyter MCP为动态计算环境与AI模型之间搭建了高效桥梁。
89 2
Jupyter MCP服务器部署实战:AI模型与Python环境无缝集成教程
|
30天前
|
数据采集 自然语言处理 Java
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
本文以反面教材形式,剖析了在使用 Playwright 爬取懂车帝车友圈问答数据时常见的配置错误(如未设置代理、Cookie 和 User-Agent),并提供了 Python、Java 和 .NET 三种语言的修复代码示例。通过错误示例 → 问题剖析 → 修复过程 → 总结教训的完整流程,帮助读者掌握如何正确配置爬虫代理及其它必要参数,避免 IP 封禁和反爬检测,实现高效数据采集与分析。
Playwright 多语言一体化——Python/Java/.NET 全栈采集实战
|
29天前
|
监控 供应链 数据挖掘
淘宝商品详情API接口解析与 Python 实战指南
淘宝商品详情API接口是淘宝开放平台提供的编程工具,支持开发者获取商品详细信息,包括基础属性、价格、库存、销售策略及卖家信息等。适用于电商数据分析、竞品分析与价格策略优化等场景。接口功能涵盖商品基础信息、详情描述、图片视频资源、SKU属性及评价统计的查询。通过构造请求URL和签名,可便捷调用数据。典型应用场景包括电商比价工具、商品数据分析平台、供应链管理及营销活动监控等,助力高效运营与决策。
155 26
|
13天前
|
缓存 NoSQL Java
校招 Java 面试常见知识点及实战案例全解析
本文全面解析了Java校招面试中的常见知识点,涵盖Java新特性(如Lambda表达式、、Optional类)、集合框架高级应用(线程安全集合、Map性能优化)、多线程与并发编程(线程池配置)、JVM性能调优(内存溢出排查、垃圾回收器选择)、Spring与微服务实战(Spring Boot自动配置)、数据库与ORM框架(MyBatis高级用法、索引优化)、分布式系统(分布式事务、缓存应用)、性能优化(接口优化、高并发限流)、单元测试与代码质量(JUnit 5、Mockito、JaCoCo)以及项目实战案例(电商秒杀系统、社交消息推送)。资源地址: [https://pan.quark.cn/s
62 4
|
23天前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
208 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
27天前
|
机器学习/深度学习 人工智能 算法
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
本文介绍了如何使用 Python 和 YOLO v8 开发专属的 AI 视觉目标检测模型。首先讲解了 YOLO 的基本概念及其高效精准的特点,接着详细说明了环境搭建步骤,包括安装 Python、PyCharm 和 Ultralytics 库。随后引导读者加载预训练模型进行图片验证,并准备数据集以训练自定义模型。最后,展示了如何验证训练好的模型并提供示例代码。通过本文,你将学会从零开始打造自己的目标检测系统,满足实际场景需求。
282 0
Python+YOLO v8 实战:手把手教你打造专属 AI 视觉目标检测模型
|
20天前
|
数据采集 存储 数据可视化
2025python实战:利用海外代理IP验证广告投放效果
本文介绍了如何利用Python结合海外代理IP技术,验证广告在不同国家的实际投放效果。通过模拟各地网络环境访问广告页面,检查内容是否与计划一致,并生成曝光报告。具体实现包括:获取高质量代理IP、使用Selenium或Playwright模拟用户行为、解析广告内容及生成可视化报告。案例显示,该方法能有效确保广告精准投放,优化策略并节省预算。
|
29天前
|
人工智能 缓存 搜索推荐
1688图片搜索API接口解析与 Python实战指南
1688图片搜索API接口支持通过上传图片搜索相似商品,适用于电商及商品推荐场景。用户上传图片后,经图像识别提取特征并生成关键词,调用接口返回包含商品ID、标题和价格的相似商品列表。该接口需提供图片URL或Base64编码数据,还可附加分页与筛选参数。示例代码展示Python调用方法,调试时建议使用沙箱环境测试稳定性,并优化性能与错误处理逻辑。
|
Python
python求解一元二次方程
python求解一元二次方程
211 0
|
3月前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。

热门文章

最新文章

推荐镜像

更多
下一篇
oss创建bucket