写一个python代码

not image

以下是使用 Python 实现的二次方程求根代码,包含对实数根和复数根的处理: ```python import cmath # 导入复数数学模块 def solve_quadratic(a, b, c): """ 解二次方程 ax² + bx + c = 0,返回两个根。 参数: a (float): x²项系数 b (float): x项系数 c (float): 常数项 返回: tuple: 两个根(可能为实数或复数) """ if a == 0: raise ValueError("a不能为0,否则不是二次方程") # 计算判别式 discriminant = (b**2 - 4*a*c) # 计算平方根部分(自动处理复数情况) sqrt Discriminant = cmath.sqrt(discriminant) # 计算两个根 root1 = (-b + sqrt_discriminant) / (2*a) root2 = (-b - sqrt_discriminant) / (2*a) return (root1, root2) # 示例用法 if __name__ == "__main__": # 示例1:实数根(判别式>0) a, b, c = 1, -3, 2 roots = solve_quadratic(a, b, c) print(f"方程 {a}x² + {b}x + {c} 的根为:{roots[0]} 和 {roots[1]}") # 示例2:重根(判别式=0) a, b, c = 1, 2, 1 roots = solve_quadratic(a, b, c) print(f"方程 {a}x² + {b}x + {c} 的根为:{roots[0]}(重根)") # 示例3:复数根(判别式<0) a, b, c = 1, 0, 1 roots = solve_quadratic(a, b, c) print(f"方程 {a}x² + {b}x + {c} 的根为:{roots[0]} 和 {roots[1]}") ``` ### 代码特点: 1. **复数支持**:通过 `cmath` 模块自动处理负判别式(复数根) 2. **输入验证**:检查 `a ≠ 0`(二次方程的必要条件) 3. **清晰输出**:直接返回元组形式的两个根,可直接用于后续计算 4. **可扩展性**:函数形式方便调用和集成到其他程序中 ### 运行结果示例: ``` 方程 1x² + -3x + 2 的根为:(2+0j) 和 (1+0j) 方程 1x² + 2x + 1 的根为:(-1+0j)(重根) 方程 1x² + 0x + 1 的根为:1j 和 -1j ``` ### 使用建议: - 如果只需要实数解,可以添加对判别式的检查: ```python if discriminant < 0: raise ValueError("无实数解") ``` - 如果需要更友好的输出格式,可以将复数的 `0j` 部分过滤掉: ```python def format_root(root): if root.imag == 0: return f"{root.real:.1f}" else: return f"{root.real:.1f}{root.imag:+.1f}j" ``` 这个代码实现了完整的二次方程求解功能,同时保持了代码的简洁性和可读性。

评论区:

评论:

请输入内容: