<!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>
I am curious to find out what blog system you’re working with?
I’m having some minor security problems with my latest blog and I would like
to find something more secure. Do you have
any suggestions?
I’m curious to find out what blog system you’re using?
I’m having some minor security issues with my latest site and I’d like to find something more safe.
Do you have any solutions?
I don’t even know how I ended up here, but I thought this
post was good. I do not know who you are but certainly you are going to a famous
blogger if you aren’t already 😉 Cheers!
I like it when folks come together and share thoughts.
Great site, continue the good work!
Wow that was odd. I just wrote an incredibly long comment but after I clicked submit my comment didn’t appear.
Grrrr… well I’m not writing all that over again. Anyways,
just wanted to say wonderful blog!