JS 一元四次方程计算器

<!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"> + &nbsp;
				<input type="text" name="x1Im" size="25"> i 
			</td>
		</tr>
		<tr>
			<td>x<sub>2</sub>: 
				<input type="text" name="x2Re" size="25"> + &nbsp;
				<input type="text" name="x2Im" size="25"> i 
			</td>
		</tr>
		<tr>
			<td>x<sub>3</sub>: 
				<input type="text" name="x3Re" size="25"> + &nbsp;
				<input type="text" name="x3Im" size="25"> i 
			</td>
		</tr>
		<tr>
			<td>x<sub>4</sub>: 
				<input type="text" name="x4Re" size="25"> + &nbsp;
				<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>

1,886 thoughts on “JS 一元四次方程计算器”

  1. В современную цифровую эпоху все больше владельцев техники сталкиваются с сложным выбором: что делать со старым домашним кинотеатром при покупке современного телевизора? Многие ошибочно полагают, что придется покупать новую акустическую систему. Однако существует несколько работающих способов объединения прежней, но качественной техники с новыми устройствами. Такое решение не только сбережет значительную сумму, но и позволит дальше пользоваться проверенным временем оборудованием. Если вам захотелось узнать больше, то по url можно прочитать о том [url=https://1wyws.top/ ]как выбрать домашний кинотеатр проектор [/url] и другие интересные статей в дневнике 1wyws.top.

    В материале подробно разбираются различные варианты подключения старых домашних кинотеатров к современным телевизорам – от использования HDMI-интерфейса с поддержкой технологии ARC до подключения через оптический выход или традиционные аналоговые разъемы. Каждый метод дополняется детальными руководствами и практическими советами. Особое внимание уделяется совместимости различных типов соединений и возможным техническим ограничениям. Читатели найдут полезную таблицу совместимости разъемов, которая поможет быстро определить оптимальный способ подключения.

    Материал также включает подробное описание типичных затруднений, возникающих при подключении устройств разных поколений, и действенные способы их решения. Авторы предлагают практическими советами по настройке звука и оптимизации работы системы. Пошаговые инструкции помогут даже неопытным пользователям успешно выполнить подключение самостоятельно. Особенно ценным является раздел с описанием возможных сложностей и методов их устранения, что поможет избежать многих распространенных ошибок при настройке оборудования.

    Источник: [url=https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ ]https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ [/url]

    Не стесняйтесь обратиться ко мне за помощью по вопросам как удлинить домашний кинотеатр – стучите в Telegram hvm34

  2. В современную цифровую эру все больше владельцев техники сталкиваются с сложным выбором: что делать со старым домашним кинотеатром при покупке нового телевизора? Многие заблуждаются, что придется приобретать новую акустическую систему. Однако есть несколько действенных способов объединения старой, но качественной техники с новыми устройствами. Такое решение не только сохранит значительную сумму, но и позволит продолжить использование проверенным временем оборудованием. Если вам любопытно, то по url можно узнать о том [url=https://1wyws.top/ ]как подключить домашний кинотеатр 2007 [/url] и другие интересные публикаций в журнале 1wyws.top.

    В статье подробно описываются различные варианты соединения старых домашних кинотеатров к современным телевизорам – от использования HDMI-интерфейса с поддержкой технологии ARC до соединения через оптический выход или традиционные аналоговые разъемы. Каждый метод дополняется детальными руководствами и практическими советами. Особое внимание уделяется совместимости различных типов соединений и возможным техническим ограничениям. Пользователи найдут полезную таблицу совместимости разъемов, которая поможет быстро выбрать оптимальный способ подключения.

    Статья также содержит подробное описание типичных затруднений, возникающих при подключении устройств разных поколений, и действенные способы их решения. Авторы предлагают практическими советами по настройке звука и оптимизации работы системы. Пошаговые инструкции помогут даже неопытным пользователям успешно произвести подключение самостоятельно. Особенно ценным является раздел с описанием возможных сложностей и методов их устранения, что поможет не допустить многих распространенных ошибок при настройке оборудования.

    Источник: [url=https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ ]https://1wyws.top/tehnologii/330-kak-podklyuchit-staryj-domashnij-kinoteatr-k-novomu-televizoru/ [/url]

    Не буду равнодушен к вашей просьбе о помощи по вопросам как включить звук через домашний кинотеатр – обращайтесь в Telegram tua77

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back To Top

鄂ICP备17008157号-1