python编程解数学方程(纯字符串格式)
用Python编程来解数学方程(纯字符串格式),没想到出人意料的简单。
我们的目标是从字符串直接求解,而不是输入参数。
例如:
一次方程:3x+5=0
二次方程:x^2+2x+1=0
方程组:
3x+5y=11
6x+5y=23
解一次方程
这是最简单的一种情况,这样一个简单的函数就可以实现
def solv(func):p1, p2= func.split('=')a1, a2= p1.split('x')if a2=='':a2= '0'x= (float(p2)-float(a2))/ float(a1)return x
调用测试:
str1= '3x+5=0'
str1= '19x-38=0'
str1= '3x=9'
x= solv(str1)
print(f'{x=}')
解一次方程组
也很简单,这里增加了一个参数读取函数
def getParm(func):p1, p2= func.split('=')a1, a2= p1.split('x')b1, b2= a2.split('y')if b2=='':b2= '0'return float(a1), float(b1), float(b2), float(p2)def solv2(func1, func2):a1, b1, c1, d1= getParm(func1)a2, b2, c2, d2= getParm(func2)x= ((d1-c1)*b2-(d2-c2)*b1)/(a1*b2- a2*b1)y= ((d1-c1)*a2-(d2-c2)*a1)/(-a1*b2+ a2*b1)return x,y
调用测试:
str1= '3x+5y=11'
str2= '6x+5y=23'
x,y= solv2(str1,str2)
print(f'{x=},{y=}')
解二次方程
记得求根公式就没问题
def getParm(func):p1, p2= func.split('=')a1, a2= p1.split('x^2')b1, b2= a2.split('x')if a1=='':a1= '1'if b2=='':b2= '0'return float(a1), float(b1), float(b2), float(p2)def solv3(func):a, b, c, d= getParm(func)dt= b*b- 4*a*(c-d)if dt>=0:x1= (-b+ dt**(1/2))/(2*a)x2= (-b- dt**(1/2))/(2*a)return x1, x2else:return None,None
调用测试:
str1= '3x^2-10x-8=0'
# str1= 'x^2-2x+1=0'
# str1= '3x^2+14x+8=0'
x1,x2= solv3(str1)
print(f'{x1=},{x2=}')
扩展
进一步的扩展,是针对缺项的时候做相应的处理;对取参数的函数做通用化;对变量的位置甚至与字母的限制放宽,等等。
应该说,数学学习到这个程度的初中同学,完全可以编写这样的python程序,起到很好的python+数学的互相辅助,互相促进的作用。
python编程解数学方程(纯字符串格式)相关推荐
- python如何表示未知数_用Python如何解数学方程
原标题:用Python如何解数学方程 我们先从简单的来 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: x+1/5x=240 大家可以先口算一下,这道题里面的x的值为200 接下来 ...
- python解数学方程_用Python如何解数学方程
用Python如何解数学方程 我们先从简单的来 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码 ...
- 使用 Python 解数学方程
使用 Python 解数学方程 使用 Python 解数学方程 - 知乎 用python解中考数学规律题 用python解中考数学规律题 - 简书 如何看github上用python实现2019高考数 ...
- Python计算:sympy解数学方程
解方程 solve(f, *symbols, **flags) 函数说明: f: 转化成右端等于0 形式的表达式 symbols: 未知数 代码示例 # -*- coding: utf-8 -*-# ...
- python将数值代入方程_使用 Python 解数学方程
说到数学题,相信大家都不陌生,从小学到大学都跟数学打交道. 其中初中的方程组,高中的二次曲线,大学的微积分最为头疼,这个项目就使用python 来解决方程组问题,微积分问题,矩阵化简. SymPy库 ...
- 想学python编程-想学Python编程?你真的适合吗?
原标题:想学Python编程?你真的适合吗? 有的人说我想学什么.我想干什么,很多时候都是头脑发热,单凭一腔热血,可是这样的路即便走上去你又能坚持多久呢?所以,每每有人问我学Python编程怎么样,我 ...
- 学python编程-趣学python编程中文版 PDF 下载
相关截图: 资料简介: Python是一款解释型.面向对象.动态数据类型的高级程序设计语言.Python语法简捷而清晰,具有丰富和强大的类库,因而在各种行业中得到广泛的应用.对于初学者来讲,Pytho ...
- 学python编程-趣学Python编程
Python是一种强大并通俗易懂的编程语言,而且它易学又好用!但是关于学习Python语言的书大多很枯燥无趣,读起来没什么乐趣.本书把你带入一个鲜活的Python编程世界.作者Jason R. Bri ...
- 菜鸟能学python编程,菜鸟学Python编程文章阅读记录一
菜鸟学Python编程文章阅读记录 看的懵懵懂懂,感觉就是要把代码看懂到,这个代码块做了什么功能,了解到建了属性,定义了方法,这些方法与属性的关系 今天是js逆向专题,这个帖子,回头再好好看 回头再找 ...
最新文章
- 详解OpenCV中的Lucas Kanade稀疏光流单应追踪器
- “手机编码速度大 PK”,你玩程序猿撸月饼了么?
- 用Eclipse进行java学习的步骤
- » 欄位太小以致於無法接受您試圖加入的資料數量
- SpringBoot 源码解析 (一)----- SpringBoot核心原理入门
- tensorflow随笔-tf.decode_csv
- 你好同窗,我们开始吧,这是我们的第3次见面
- String和enum的互相转换
- [cocos2d]修改富文本文本和高度
- PCA主成分分析实战和可视化 | 附R代码和测试数据
- C---队列,栈的实现
- MTK驱动(53)---平台DTS文件匹配过程
- 【Flink】Flink1.12.0 FlinkSQL消费Kafka 使用 temporal join 关联维表Hive 最新分区数据 join 不上
- Linux内核TCP/IP协议栈运行时序 | 配图
- 蒙特卡洛方法习题_蒙特卡洛方法
- Unity-timeline(时间线)
- 未能加载文件或程序集
- mybatis.org/dtd/mybatis-generator-config_1_0.dtd标红
- fmc接口定义_FMC接口说明
- 针对网页开发者的滚动锚定功能
热门文章
- 音频噪声抑制(2):维纳(Wiener)滤波器篇
- 7月7日云栖精选夜读:专访 | 杨强教授谈CCAI、深度学习泡沫与人工智能入门
- RSSI in wifi
- 数值计算之 拟合法,线性拟合,多项式拟合
- 如何看待 2022 年秋招算法岗人间地狱?
- 游戏设计模式阅读笔记19——优化模式(空间分区)
- 【LeetCode】322. 零钱兑换 结题报告 (C++)
- linux中的fs文件夹,linux上使用eCryptFS加密文件夹的方法
- 爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)
- 物联网操作系统碎片化问题分析与思考