<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<body>
<div align="center">例如输入:a=3, b=6, c=-123, d=-126 e=1080</div>
<form name="form1" action="">
ax<sup>4</sup> + bx<sup>3</sup> + cx<sup>2</sup> + dx + e = 0
<table border="0" align="center" colspan="4" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><input type="text" name="aIn" size="5" placeholder="a">x<sup>4</sup> +</td>
<td><input type="text" name="bIn" size="5" placeholder="b">x³ +</td>
<td><input type="text" name="cIn" size="5" placeholder="c">x² +</td>
<td><input type="text" name="dIn" size="5" placeholder="d">x +</td>
<td><input type="text" name="eIn" size="5" placeholder="e">e</td>
</tr>
</tbody>
</table>
<center>
<input type="button" name="button1" value="计算" onclick="quad4solve(this.form)">
</center>
<table border="0" class="innerc" cellspacing="0" cellpadding="3">
<tbody>
<tr align="center">
<td class="inner" colspan="4"><b>结果:</b></td>
</tr>
<tr>
<td>x<sub>1</sub>:
<input type="text" name="x1Re" size="25"> +
<input type="text" name="x1Im" size="25"> i
</td>
</tr>
<tr>
<td>x<sub>2</sub>:
<input type="text" name="x2Re" size="25"> +
<input type="text" name="x2Im" size="25"> i
</td>
</tr>
<tr>
<td>x<sub>3</sub>:
<input type="text" name="x3Re" size="25"> +
<input type="text" name="x3Im" size="25"> i
</td>
</tr>
<tr>
<td>x<sub>4</sub>:
<input type="text" name="x4Re" size="25"> +
<input type="text" name="x4Im" size="25"> i
</td>
</tr>
</tbody>
</table>
</form>
<script type="text/javascript">
function quad4solve(dataForm)
{
var a = parseFloat(dataForm.aIn.value);
var b = parseFloat(dataForm.bIn.value);
var c = parseFloat(dataForm.cIn.value);
var d = parseFloat(dataForm.dIn.value);
var e = parseFloat(dataForm.eIn.value);
if (a == 0)
{
alert("The coefficient of the power four of x is 0. Please use the utility for a third degree quadratic.");
return;
}
if (e == 0)
{
alert("One root is 0. Now divide through by x and use the utility for a third degree quadratic to solve the resulting equation for the other three roots.");
return;
}
if (a != 1)
{
b /= a;
c /= a;
d /= a;
e /= a;
}
//立方解算器系数
var cb, cc, cd;
var discrim, q, r, RRe, RIm, DRe, DIm, dum1, ERe, EIm, s, t, term1, r13, sqR, y1, z1Re, z1Im, z2Re;
cb = -c;
cc = -4.0*e + d*b;
cd = -(b*b*e + d*d) + 4.0*c*e;
if (cd == 0)
{
alert("cd = 0.");
}
q = (3.0*cc - (cb*cb))/9.0;
r = -(27.0*cd) + cb*(9.0*cc - 2.0*(cb*cb));
r /= 54.0;
discrim = q*q*q + r*r;
term1 = (cb/3.0);
if (discrim > 0)
{
// 1 实数, 2 复数
s = r + Math.sqrt(discrim);
s = ((s < 0) ? -Math.pow(-s, (1.0/3.0)) : Math.pow(s, (1.0/3.0)));
t = r - Math.sqrt(discrim);
t = ((t < 0) ? -Math.pow(-t, (1.0/3.0)) : Math.pow(t, (1.0/3.0)));
y1 = -term1 + s + t;
}
else
{
if (discrim == 0)
{
r13 = ((r < 0) ? -Math.pow(-r,(1.0/3.0)) : Math.pow(r,(1.0/3.0)));
y1 = -term1 + 2.0*r13;
}
else
{
q = -q;
dum1 = q*q*q;
dum1 = Math.acos(r/Math.sqrt(dum1));
r13 = 2.0*Math.sqrt(q);
y1 = -term1 + r13*Math.cos(dum1/3.0);
}
}
// 确定了y1 分解立方的实根
term1 = b/4.0;
sqR = -c + term1*b + y1;
RRe = RIm = DRe = DIm = ERe = EIm = z1Re = z1Im = z2Re = 0;
if (sqR >= 0)
{
if (sqR == 0)
{
dum1 = -(4.0*e) + y1*y1;
if (dum1 < 0){
z1Im = 2.0*Math.sqrt(-dum1);
} else {
z1Re = 2.0*Math.sqrt(dum1);
z2Re = -z1Re;
}
}
else
{
RRe = Math.sqrt(sqR);
z1Re = -(8.0*d + b*b*b)/4.0 + b*c;
z1Re /= RRe;
z2Re = -z1Re;
}
}
else
{
RIm = Math.sqrt(-sqR);
z1Im = -(8.0*d + b*b*b)/4.0 + b*c;
z1Im /= RIm;
z1Im = -z1Im;
}
z1Re += -(2.0*c + sqR) + 3.0*b*term1;
z2Re += -(2.0*c + sqR) + 3.0*b*term1;
//At this point, z1 and z2 should be the terms under the square root for D and E
if (z1Im == 0)
{ // Both z1 and z2 real
if (z1Re >= 0)
{
DRe = Math.sqrt(z1Re);
}
else
{
DIm = Math.sqrt(-z1Re);
}
if (z2Re >= 0)
{
ERe = Math.sqrt(z2Re);
}
else
{
EIm = Math.sqrt(-z2Re);
}
}
else
{
r = Math.sqrt(z1Re*z1Re + z1Im*z1Im);
r = Math.sqrt(r);
dum1 = Math.atan2(z1Im, z1Re);
dum1 /= 2; //Divide this angle by 2
ERe = DRe = r*Math.cos(dum1);
DIm = r*Math.sin(dum1);
EIm = -DIm;
}
dataForm.x1Re.value = -term1 + (RRe + DRe)/2;
dataForm.x1Im.value = (RIm + DIm)/2;
dataForm.x2Re.value = -(term1 + DRe/2) + RRe/2;
dataForm.x2Im.value = (-DIm + RIm)/2;
dataForm.x3Re.value = -(term1 + RRe/2) + ERe/2;
dataForm.x3Im.value = (-RIm + EIm)/2;
dataForm.x4Re.value = -(term1 + (RRe + ERe)/2);
dataForm.x4Im.value = -(RIm + EIm)/2;
return;
}
</script>
</body>
</html>
It’s appropriate time to make a few plans for the long run and it’s
time to be happy. I’ve learn this post and if I may just I desire to recommend you few fascinating issues or
tips. Maybe you could write next articles referring to this article.
I wish to read more things about it!
My brother suggested I might like this website.
He used to be entirely right. This submit actually made my day.
You cann’t imagine simply how much time I had spent for this information! Thanks!
With havin so much content do you ever run into any issues
of plagorism or copyright violation? My blog has a lot of unique content I’ve either authored myself or outsourced but it
appears a lot of it is popping it up all over the internet without my agreement.
Do you know any ways to help protect against content from being stolen? I’d genuinely
appreciate it.
Hi there excellent blog! Does running a blog similar to this take
a large amount of work? I have virtually no expertise in computer programming but
I had been hoping to start my own blog soon. Anyhow, if
you have any recommendations or tips for new blog
owners please share. I know this is off subject nevertheless I just wanted to ask.
Kudos!
Pretty nice post. I just stumbled upon your weblog
and wished to say that I have really enjoyed browsing your blog posts.
After all I will be subscribing to your rss feed and I hope you write again soon!