⑴ 如何用python化简方程组
用牛顿迭代法 + 多项式除法化简。
1)针对方程组 f(x),首先用牛顿迭代法得到方程的第一个根(a),那么 f(x) = (x-a)g(x)
2)用多项式除法,计算 g(x) = f(x)/(x-a)
重复第一步,得到 g(x) 的根,然后再重复第二步,进一步对方程降幂。
最终就可以化简整个方程。
⑵ python怎么实现方程组的解随参数变化
不是很明确你需要做到什么程度,但基本可以通过以下两个手段得到:
手工解方程得到解析解,然后套入公式
使用一些工具包例如numpy可以自动求解
以下都给出例子
importnumpyasnp
importmatplotlib.pyplotasplt
plt.axis("equal")
a=np.linspace(1,10,100)#a的变化范围可以自己挑,前两个参数控制,
#使用numpy自动求解
res=[]
forxina:
A=np.mat("1,2;{},-1".format(x))
b=np.mat("{},10".format(x)).T
res.append(np.linalg.solve(A,b))
#计算完毕后取出每对x和y
x1=[float(r[0])forrinres]
y1=[float(r[1])forrinres]
plt.plot(x1,y1)
#####################################
#手工计算过程很简单不放上来了,直接上结果
x2=[(a1+20)/(2*a1+1)fora1ina]
y2=[(a1**2-10)/(2*a1+1)fora1ina]
plt.plot(x2,y2)
⑶ 用python如何得到一个方程的多个解
方法/步骤
用Python解数学方程,需要用到Python的一个库——SymPy库。
SymPy是符号数学的Python库,它的目标是成为一个全功能的计算机代数系统,同时保持代码简洁、易于理解和扩展。
如果你的电脑上还没有安装sympy库,那就赶紧安装吧,安装命令:
pip3 install sympy
⑷ 用python如何求解非齐次线性方程组的一组正值特解,
其实更简单的“取值”方法是 令 x3 = x4 = 0,得特解 (1, 1, 0, 0)^T.
4 个未知数,2 个方程,任意给出 2 个未知数的值,
算出另 2 个未知数,都可以得到 1 组特解,
只不过形式越简单越好,例如取 特解 (1, 1, 0, 0)^T。
⑸ 求指教:Python怎样分别输出方程组的解
题主的问题没有毛病:solve([f],[x]),f是方程,x是变量,这个代码解的是关于x的方程f=0
其实很明显了,输出的是字典,也可以用type()确定变量类型,代码如下:
L
=
solve([2*x+3*y-8,3*x-y-1],[x,y])
print(L[x])
print(L[y])
要运算的话就是:
a
=
L[x]
b
=
L[y]
print(a+b)
⑹ python怎么求解一元二次方程的根
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编程求解二元一次方程组。如x+y=3;x-y=1
利用 numpy 很简单。可以利用pip安装
pipinstallnumpy
然后(以你的方程为例),python 下
Python2.7.10(default,Oct232015,19:19:21)
[GCC4.2.1CompatibleAppleLLVM7.0.0(clang-700.0.59.5)]ondarwin
Type"help","right","credits"or"license"formoreinformation.
>>>importnumpyasnp
>>>a=np.array([[1,1],[1,-1]])
>>>b=np.array([3,1])
>>>printnp.linalg.solve(a,b)
[2.1.]
如果你学过 线性代数,那么这段代码很好理解。
⑻ python解决jacob迭代法求解线性方程组
题主好. 经典的 Jacobi 迭代算法如下:
设 A = D - E, 则 x = D^{-1}*b + D^{-1}*E*x = C + T*x
可以参考如下代码(复制代码后请注意缩进):
import numpy as np
def linalg_solve_jacobi(A, b, x0, max_it, tol=1.0e-7):
# 判断 A, b 的维数是否正确
if A.shape[0]!=A.shape[1] or A.shape[0]!= b.shape[0]:
raise Exception('A must be square or A and b must be compatible!')
D = np.diag(A)
# 判断对角元素是否含零
if np.amin(np.absolute(D)) < 1e-14:
raise Exception('Diagonal elements of A must not be zeros!')
# 设置初始迭代步数为0
n = 0
#
# Jacobi 算法:
# 设 A = D - E, 则 x = D^{-1}*b + D^{-1}*E*x = C + T*x
#
invD = np.diag(1.0/D) # invD is inv(D)
C = np.dot(invD,b) # C is inv(D)*b
T = np.dot(invD, np.diag(D)-A) # T is inv(D)*E
while n < max_it:
x = C + np.dot(T, x0)
if np.linalg.norm(x-x0)<tol:
break
x0[:] = x
n+=1
# 如果超过最大迭代步数, 迭代失败
if n>max_it:
raise Exception('Failed to converge within {} steps!'.format(max_it))
# 成功, 返回
return x, n
if __name__ == "__main__":
A = np.array([[10, -1, 2, 0],[-1, 11, -1, 3],
[2, -1, 10, -1], [0, 3, -1, 8]], dtype=np.float64)
b = np.array([6, 25, -11, 15], dtype=np.float64)
x0 = np.array([0,0,0,0], dtype=np.float64)
max_it = 100
tol = 1.0e-7
x,n=linalg_solve_jacobi(A, b, x0, max_it, tol)
print(x,n)