本文目錄一覽:
JAVA編寫求解一元多次方程的程序,要求如下:
import java.io.*;
import java.util.*;public class SolveEquation
{
void print()throws IOException
{
char ch=’y’;
System.out.println(“求解幾次方程?1:一次 2:二次 3:三次”);
Scanner sLine=new Scanner(System.in);
int pm=sLine.nextInt();
if(pm==1)
{
System.out.println(“你選擇的是一元一次方程:”);
SolveEquation.SolveSimpleEquation fc=new SolveEquation().new SolveSimpleEquation();
fc.SolveSimpleEquation();
}
else if(pm==2)
{
System.out.println(“你選擇的是一元二次方程:”);
SolveEquation.SolveQuadraticEquation fc=new SolveEquation().new SolveQuadraticEquation();
fc.SolveQuadraticEquation();
}
else if(pm==3)
{
System.out.println(“你選擇的是一元三次方程:”);
SolveEquation.SolveCubicEquation fc=new SolveEquation().new SolveCubicEquation();
fc.SolveCubicEquation();
}
else
{
print();
}
System.out.println(“你是否想繼續:(y/n)”);
ch=(char)System.in.read()
System.in.skip(2);
if(ch==’y’)
{
print();
}
else if(ch==’n’)
{
System.out.println(“Good luck!”);
}
else
{
print();
}
public static void main (String args[]) throws IOException
{
SolveEquation se=new SolveEquation();
se.print();
}
interface I1
{
void SolveCubicEquation();
}
interface I2
{
void SolveQuadraticEquation();
}
interface I3
{
void SolveSimpleEquation();
}
class SolveCubicEquation implements I1
{
public void SolveCubicEquation()
{
System.out.println(“請輸入形如一元三次方程mx^3+nx^2+tx+s=0的四個係數”);
Scanner sce=new Scanner(System.in);
double m=sce.nextDouble();
double n=sce.nextDouble();
double t=sce.nextDouble();
double s=sce.nextDouble();
if(m==0)
{
System.out.print(“輸入錯誤!”);
}
else
{
double a=n/m;
double b=t/m;
double c=s/m;
double q=(a*a-3*b)/9;
double r=(2*a*a*a-9*a*b+27*c)/54;
if(r*rq*q*q)
{
System.out.println(“此方程有三個解:”);
t=Math.acos(r/Math.sqrt(q*q*q));
double x1=-2*Math.sqrt(q)*Math.cos(t/3)-a/3;
double x2=-2*Math.sqrt(q)*Math.cos((t+2*Math.PI)/3)-a/3;
double x3=-2*Math.sqrt(q)*Math.cos((t-2*Math.PI)/3)-a/3;
System.out.println(“x1=”+x1+”,”+”x2=”+x2+”,”+”x3=”+x3);
}
else
{
System.out.println(“此方程只有一個解:”);
int sgn=(r=0)?1:-1;
double u=-sgn*Math.pow((Math.abs(r)+Math.sqrt(r*r-q*q*q)),1./3);
double v=(u!=0)?q/u:0;
double x1=u+v-a/3;
System.out.println(“x=”+x1);
}
}
}
}
class SolveQuadraticEquation implements I2
{
public void SolveQuadraticEquation()
{
System.out.println(“請輸入形如一元二次方程ax^2+bx+c=0的三個係數”);
Scanner sce=new Scanner(System.in);
double a=sce.nextDouble();
double b=sce.nextDouble();
double c=sce.nextDouble();
if(a==0)
{
System.out.print(“輸入錯誤!”);
}
else
{
double d=b*b-4*a*c;
if(d0)
{
double x1=(-b+Math.sqrt(d))/2*a;
double x2=(-b+Math.sqrt(d))/2*a; System.out.println(“有兩個實根x1=”+x1+”,”+”x2=”+x2);
}
else if(d==0)
{
System.out.println(“有一個實根”+(-b/2*a));
}
else if(d0)
{
double Re=-b/(2*a);
double Im=Math.sqrt(-d)/(2*a);
System.out.println(“實部=”+Re+” “+”虛部=”+Im);
}
}
}
}
class SolveSimpleEquation implements I3
{
public void SolveSimpleEquation()
{
System.out.println(“請輸入形如一元一次方程ax+b=0的兩個係數”);
Scanner sce=new Scanner(System.in);
double a=sce.nextDouble();
double b=sce.nextDouble();
if(a==0)
{
System.out.print(“輸入錯誤!”);
}
else
{
System.out.println(“方程的根是x=”+(-b/a));
}
}
}
}
java編程求一元三次方程a*x*x*x+b*x*x+c*x+d=0的根
import java.io.*;
public class Test1
{
public static void main(String[] args) throws IOException
{
double a,b,c,d,x,y;
System.out.println(“一元三次方程求解:y=ax3+bx2+cx+d”);
System.out.println(“請輸入a值:”);
BufferedReader in1=new BufferedReader(new InputStreamReader(System.in));
a=Double.parseDouble(in1.readLine());
System.out.println(“請輸入b值:”);
BufferedReader in2=new BufferedReader(new InputStreamReader(System.in));
b=Double.parseDouble(in2.readLine());
System.out.println(“請輸入c值:”);
BufferedReader in3=new BufferedReader(new InputStreamReader(System.in));
c=Double.parseDouble(in3.readLine());
System.out.println(“請輸入d值:”);
BufferedReader in4=new BufferedReader(new InputStreamReader(System.in));
d=Double.parseDouble(in4.readLine());
System.out.println(“請輸入x值:”);
BufferedReader in5=new BufferedReader(new InputStreamReader(System.in));
x=Double.parseDouble(in5.readLine());
y=a*Math.pow(x, 3)+b*Math.pow(b,2)+c*x+d;
System.out.println(“y值為:”+y);
}
}
Java中 如何寫一個解三次函數的程式… 求大神…
比如一個三次方程: a * x * x * x + b * x * x + c * x + d = 0;
程序是非常強大的,直接上代碼,用最基本的方法:
public static void main(String[] args) {
// 這是從鍵盤輸入的4個參數
int a = args[0];
int b = args[1];
int c = args[2];
int d = args[3];
// 可以把等式堪稱a * x * x * x + b * x * x + c * x + d = 0;
// 求0到1000的整數根
for(int i = 0; i 1000; i ++) {
int result = a * i * i * i + b * i * i + c * i + d;
if(result == 0) {
// 此處應該有掌聲
System.out.println(“找到一個根:” + i);
}
}
}
希望我的答案能幫助你, 謝謝。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/311253.html