gpt4 book ai didi

算法 二次方程 MATLAB

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:27:48 26 4
gpt4 key购买 nike

我应该在 matlab 代码中加入什么条件才能使用这些公式得到二次方程的精确解:

x1=(-2*c)/(b+sqrt(b^2-4*a*c))
x2=(-2*c)/(b-sqrt(b^2-4*a*c))

在某些情况下直接实现这些公式我没有得到正确的解决方案,例如 x^2-1000001x+1

非常感谢您的帮助

最佳答案

正确的公式是

w = b+sign(b)*sqrt(b^2-4*a*c)

x1 = -w/(2*a)

x2 = -(2*c)/w

其中,如果 b>=0,则 sign(b)=1,如果 b<0,则 sign(b)=-1。

您的公式以及标准公式导致 b 的一个根中的灾难性抵消是大 wrt。 a和c。


如果你想走极端,你还可以在计算平方根下的项时防止上溢和下溢。

设 m 表示 |a|、|b| 的最大尺寸和 |c|,例如它们浮点表示中指数的最大值,或者它们的绝对值...然后

w = b+sign(b)*m*sqrt( (b/m)*(b/m)-4*(a/m)*(c/m) )

在根下面有一个介于 -10 和 10 之间的项。如果此项为零,则不是由下溢引起。

关于算法 二次方程 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com