1-1 有关一元一次方程初步求根软件制作——基础篇

看过我专栏的朋友都知道,我写程序一般用Python,我们就直接言归正传了。

在了解一元一次方程求根软件制作之前,我们有必要了解一下一元一次方程的解法。一元一次方程指的是有一个未知数且未知数最高指数为1的方程,一般解法是先去分母,再去括号,然后移项、化简,变成ax+b=0(a≠0)的形式,得到x=-b/a。

我们写程序的算法如下:第一步,实现计算机自动去分母;第二步,实现自动去括号;第三步,实现移项和化简,变成ax+b=0(a≠0)的形式;第五步,运算成功后制作优质的GUI或者Web界面,提高实用性。

这几步当中最简单也是最重要的一步就是第四步。

我们可以看到,这里需要进行很多对字符串的运算,那么第一步,当然是让用户输入方程:

equation = input("请输入一元一次方程,目前支持ax+b=0(a≠0)形式的方程:")

接下来,我们需要一句输出,内容是告诉用户功能限制:

equation = input("请输入一元一次方程,目前支持ax+b=0(a≠0)形式的方程:")
print("备注:本工具暂时仅支持ax+b=0(a≠0)的形式,其他形式可能报错或者计算错误。")

然后,获取x和=的索引,因为方程的已知数a和b的值是不限定的,找起来很麻烦,我们可以通过确定的x和=的索引,获取a和b的索引。获取x和=的索引的代码如下:

x = int(equation.index('x'))
equat = int(equation.index('='))

这里需要注意,我们现在完全可以计算a和b的结果,但是提取a和b的结果之后,我们一般将未知数系数省略不写,计算机没有这个功能。也就是说,当我们想要求解x+3=0这类方程的时候,必须输入1x+3=0,如果直接输入x+3=0,会报错。

这也是有办法避免的。

如果x在开头,也就是x的索引值为0,那么默认x为1,其他情况根据x的索引值判断。

if equation.index('x') == 0:
    a = 1
else:
    a = float(equation[0 : x])

那么b呢?如果不输入b,给出形如5x=0的方程,计算机依旧会报错。然而b没有确定的索引值。其实这也很简单,如果=和x的索引之间的差值为1,也就是x紧挨着=,那么b默认为0。

if equat - x == 1:
    b = 0
else:
    b = float(equation[x + 1 : equat])

最后计算结果。

conclusion = -(b / a)

将结果末尾的小数点.0去掉,这部分代码详见我专栏的2.2。

if int(conclusion) == conclusion:
    conclusion = int(conclusion)
print('x=' + str(conclusion))

来看一下完整代码:

equation = input("请输入一元一次方程,目前支持ax+b=0(a≠0)形式的方程:")
print("备注:本工具暂时仅支持ax+b=0(a≠0)的形式,其他形式可能报错或者计算错误。")
x = int(equation.index('x'))
equat = int(equation.index('='))
if equation.index('x') == 0:
    a = 1
else:
    a = float(equation[0 : x])
if equat - x == 1:
    b = 0
else:
    b = float(equation[x + 1 : equat])
conclusion = -(b / a)
if int(conclusion) == conclusion:
    conclusion = int(conclusion)
print('x=' + str(conclusion))

但是,去分母、去括号、移项、化简都没有做到,我们计划在下一期推出化简的制作方法。

本文章制作不易,记得点赞关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值