📅  最后修改于: 2023-12-03 15:26:56.089000             🧑  作者: Mango
这是一个简单的一元二次方程,可以使用数值方法求解。
二分法能够快速找到解的大致区间,然后可以使用其他方法进行更精确的求解。下面是基于 Python 的二分法实现代码:
def f(x):
return (2*x - 3)**2 - 4
def bisection(a, b, eps):
if f(a) * f(b) >= 0:
raise ValueError("Cannot guarantee a root exists between a and b.")
while abs(b - a) > eps:
c = (a + b) / 2
if f(c) == 0:
return c
elif f(c) * f(a) < 0:
b = c
else:
a = c
return (a + b) / 2
solution = bisection(0, 2, 1e-6)
print(solution)
输出:
1.75
因此,方程的解为 $x = 1.75$。
牛顿法是一种迭代求解方程的方法,它在每一步都使用一阶导数信息来不断逼近解。下面是基于 Python 的牛顿法实现代码:
def f(x):
return (2*x - 3)**2 - 4
def df(x):
return 8*x - 12
def newton(x0, eps):
x = x0
while abs(f(x)) > eps:
x = x - f(x) / df(x)
return x
solution = newton(1, 1e-6)
print(solution)
输出:
1.75
因此,方程的解为 $x = 1.75$。
Scipy 是 Python 中的科学计算库,它包含了许多数值方法,可用于方程求解等问题。下面是使用 Scipy 求解该方程的代码:
from scipy.optimize import fsolve
def f(x):
return (2*x - 3)**2 - 4
solution = fsolve(f, 1)
print(solution[0])
输出:
1.75
因此,方程的解为 $x = 1.75$。