You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GNU Octave或Matlab中返回方程的多个解?

嘿,这个问题我之前也碰到过!其实核心原因是大多数平方根相关的函数或者工具,默认只会返回算术平方根(也就是非负的那个解),要拿到全部两个解其实很简单,分两种情况来处理:

如何获取二次方程的全部两个解

情况1:你自己实现了解方程的逻辑

如果是你自己写代码求解类似 x² = n 这类方程,那只需要在算出正根后,把它的相反数也加入结果列表就行。举个Python的例子:

import math

def solve_square_eq(n):
    if n < 0:
        return []  # 实数范围内没有解
    positive_root = math.sqrt(n)
    return [positive_root, -positive_root]

调用 solve_square_eq(9) 就会得到 [3.0, -3.0],两个解都拿到手啦。

情况2:你用了内置/第三方库的函数

像Python的 math.sqrt()、Java的 Math.sqrt() 这类标准库函数,都只返回非负的算术平方根。这时候你只需要手动生成负解就行:
比如原来的代码可能是这样的:

import math
single_solution = math.sqrt(9)  # 只得到 3.0

修改成下面这样,就能得到两个解:

import math
positive_root = math.sqrt(9)
all_solutions = [positive_root, -positive_root]

拓展:处理通用二次方程(ax² + bx + c = 0)

如果你的方程是更通用的二次形式,直接用求根公式计算两个解就好,连重根的情况也能覆盖:

import math

def solve_quadratic(a, b, c):
    discriminant = b**2 - 4*a*c
    if discriminant < 0:
        return []  # 实数范围内无解
    sqrt_disc = math.sqrt(discriminant)
    root1 = (-b + sqrt_disc) / (2*a)
    root2 = (-b - sqrt_disc) / (2*a)
    return [root1, root2]

比如解 x² - 9 = 0(对应参数 a=1, b=0, c=-9),调用后会返回 [3.0, -3.0];如果是重根情况(比如 x² - 6x + 9 = 0),会返回 [3.0, 3.0],这也是正常的数学结果。

内容的提问来源于stack exchange,提问作者Thomas C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:46:44