扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import numpy as np
创新互联是一家专业提供岳阳县企业网站建设,专注与网站制作、网站设计、H5建站、小程序制作等业务。10年已为岳阳县众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
def solve_quad(a,b,c):
if a == 0:
print('您输入的不是二次方程!')
else:
delta = b*b-4*a*c
x = -b/(2*a)
if delta == 0:
print('方程有惟一解,X=%f'%(x))
return x
elif delta 0:
x1 = x-np.sqrt(delta)/(2*a)
x2 = x+np.sqrt(delta)/(2*a)
print('方程有两个实根:X1=%f,X2=%f'%(x1,x2))
return x1,x2
else:
x1 = (-b+complex(0,1)*np.sqrt((-1)*delta))/(2*a)
x2 = (-b-complex(0,1)*np.sqrt((-1)*delta))/(2*a)
print('方程有两个虚根,如下所示:')
print(x1,x2)
return x1,x2
import math
def erfenfa(function, a, b): #定义函数,利用二分法求方程的根,function为具体方程,a,b为根的取值范围
start = a
end = b
if function(a) == 0:
return a
elif function(b) == 0:
return b
elif function(a) * function(b) 0:
print("couldn't find root in [a,b]")
return
else:
mid = (start + end) / 2
while abs(start - mid) 0.0000001:
if function(mid) == 0:
return mid
elif function(mid) * function(start) 0:
end = mid
else:
start = mid
mid = (start + end) / 2
return mid
def f(x):#定义构造方程式函数
return math.pow(x, 5) -15*math.pow(x, 4) +85*math.pow(x, 3)-225*pow(x,2)+274*x - 121
print(round(erfenfa(f, 1.5, 2.4),6))
import numpy as np
def solve_quad(a,b,c):
if a == 0:
print('您输入的不是二次方程!')
else:
delta = b*b-4*a*c
x = -b/(2*a)
if delta == 0:
print('方程有惟一解,X=%f'%(x))
return x
elif delta 0:
x1 = x-np.sqrt(delta)/(2*a)
x2 = x+np.sqrt(delta)/(2*a)
print('方程有两个实根:X1=%f,X2=%f'%(x1,x2))
return x1,x2
else:
x1 = (-b+complex(0,1)*np.sqrt((-1)*delta))/(2*a)
x2 = (-b-complex(0,1)*np.sqrt((-1)*delta))/(2*a)
print(x1,x2)
return x1,x2
Python
是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
有很多大学生问我,学习python有什么用呢?我说:你至少可以用来解微分方程,如下面的例子,就是解决微分方程:
y"+a*y'+b*y=0
代码如下:
[python] view plain copy
#y"+a*y'+b*y=0
from scipy.integrate import odeint
from pylab import *
def deriv(y,t): # 返回值是y和y的导数组成的数组
a = -2.0
b = -0.1
return array([ y[1], a*y[0]+b*y[1] ])
time = linspace(0.0,50.0,1000)
yinit = array([0.0005,0.2]) # 初值
y = odeint(deriv,yinit,time)
figure()
plot(time,y[:,0],label='y') #y[:,0]即返回值的第一列,是y的值。label是为了显示legend用的。
plot(time,y[:,1],label="y'") #y[:,1]即返回值的第二列,是y’的值
xlabel('t')
ylabel('y')
legend()
show()
输出结果如下:
方法/步骤
用Python解数学方程,需要用到Python的一个库——SymPy库。
SymPy是符号数学的Python库,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。
如果你的电脑上还没有安装sympy库,那就赶紧安装吧,安装命令:
pip3 install sympy
请点击输入图片描述
先来解一个简单点的方程吧。
题目: 5x + 20 = 100
先直接上代码:
from sympy import *
x = Symbol('x')
print(solve([5*x + 20 - 100], [x]))
请点击输入图片描述
再来一个复杂点的二元一次方程吧。
题目:3x + 4y =49, 8x- y = 14
代码如下:
from sympy import *
x = Symbol('x')
y = Symbol('y')
print(solve([3*x + 4*y - 49, 8*x - y - 14], [x, y]))
请点击输入图片描述
有没有发现规律呢,简单总结一下:
1)变量赋值,使用symbol函数转换;
2)将方程式移到方程的左边,使右边等于0;
3)使用solve函数解方程。
当然了,python的基础语法必须掌握,至少需要掌握python最基础的算数运算符。
+ 加 ---- 两个对象相加
- 减 ----- 得到负数或是一个数减去另一个数
* 乘 ----- 两个数相乘或是返回一个被重复若干次的字符串
/ 除 ----- x 除以 y
% 取模 ----- 返回除法的余数
** 幂 ----- 返回x的y次幂
log() 对数-----对数 log()
下面来个难度大点的方程。
请点击输入图片描述
代码如下:
from sympy import *
t = Symbol('t')
x = Symbol('x')
m = integrate(sin(t)/(pi-t), (t, 0, x))
print(integrate(m, (x, 0, pi)))
请点击输入图片描述
编程最好的方法就是实践,当你能处理绝大多数例子之后,你会发现很多难懂的概念也就自然的解决了。python编程最好的方法就是实践,当你能处理绝大多数例子之后,你会发现很多难懂的概念也就自然的解决了。
一元二次方程为:ax^2+bx+c=0
我们先编写一个最简单的版本,我们成功的计算除了数值。下面这个程序不适合复数形式
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流