
正文
java求解方程组代码 java解析数学算式
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用Java语言编写求解一元二次方程的解,方程系数从键盘输入若a为零输出
1)简介
一元二次方程 ax2+bx+c=0 的a、b、c三个参数由用户自行定义,通过该程序输出该一元二次方程的根。
对于该程序需要在“应声虫”的基础上进行参数的自定义,在定义完成后需要通过求根公式实现结果的输出,其中Math.sqrt()为对括号的内容进行开平方根。
2)任务代码
关于该程序的代码如下:
import java.util.Scanner;//导入java.util包下的Scanner类
public class Test2{//类名
public static void main(String[] args) {//程序主入口函数,带命令行参数
System.out.print("求ax^2+bx+c=0的根"+"\n");//输出标题
Scanner in=new Scanner(System.in);//创建scanner,控制台会一直等待输入,直到敲回车结束
System.out.print("请输入a的值:");//输出“提示”
int a=in.nextInt();//用户可自行定义a的值
System.out.print("请输入b的值:");//输出“提示”
int b=in.nextInt();//用户可自行定义b的值
System.out.print("请输入c的值:");//输出“提示”
int c=in.nextInt();//用户可自行定义c的值
double x1=((-b+Math.sqrt(b*b-4*a*c))/(2*a));//运用求根公式,并且Math.sqrt()为开平方根
double x2=((-b-Math.sqrt(b*b-4*a*c))/(2*a));//运用求根公式,并且Math.sqrt()为开平方根
System.out.print("x1="+x1+"\n"+"x2="+x2);//输出两个根的结果
}
}
3)运行结果
使用LICEcap进行动图的制作,运行结果动图如下:
相关问答
Q1: 用JAVA定义一个一元二次方程?
以下是定义一元二次方程类、封装系数及其求根方法的示例代码:
public class Equation {
private double a;
private double b;
private double c;
// 封装系数
public void setA(double a) {
this.a = a;
}
public double getA() {
return a;
}
public void setB(double b) {
this.b = b;
}
public double getB() {
return b;
}
public void setC(double c) {
this.c = c;
}
public double getC() {
return c;
}
// 求根方法
public void solve() {
double delta = b * b - 4 * a * c;
if (delta 0) {
double x1 = (-b + Math.sqrt(delta)) / (2 * a);
double x2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("方程的两个解分别为:" + x1 + "和" + x2);
} else if (delta == 0) {
double x = -b / (2 * a);
System.out.println("方程的解为:" + x);
} else {
System.out.println("方程无解");
}
}
}
在main()方法中定义一个一元二次方程对象并调用求根方法,可以这样写:
public static void main(String[] args) {
// 创建一个一元二次方程对象
Equation eq = new Equation();
// 设置系数
eq.setA(1);
eq.setB(2);
eq.setC(1);
// 调用求根方法
eq.solve();
}
上面的代码会输出:方程的解为:-1.0。
Q2: 怎么用java解二元一次方程?
这是个二元一次方程 解出的结果应该是 x=1 y=1 代码可以这样写 用的方法是穷举。 为了节省程序运行时间 在这里把X和Y的取值定在了10以内 其实多了也没用 答案只有可能是1 。 穷举会按程序的意思去一一例举 占用时间较长 。 代码如下: public class abc { public static void main(String args[]) { for(int x=0;x10;x++) /*定义X取值*/ for(int y=0;y10;y++) /*定义Y取值*/ { if(x+y==2x*y==1) /*定义条件公式*/ System.out.println("x="+x+" y="+y); /*输出结果*/ } } }
Q3: 用java语言编写追赶法求解n阶三对角方程组
可以这样写,代码如下
#include "pch.h"
#include iomanip
#include iostream
# include fstream
#include iomanip
#include math.h
void Chasing_method(double **a, double *b, double *xx, int N_num);
using namespace std;
//*****************************
//追赶法求解AX=B矩阵
//*****************************
void Chasing_method(double **a, double *b, double *xx, int N_num)
{
int i, j, k;
double *gamma = new double[N_num]();
double *alpha = new double[N_num]();
double *beta = new double[N_num]();
double *y = new double[N_num]();
alpha[0] = a[0][0];
beta[0] = a[1][0] / alpha[0]; y[0] = b[0] / alpha[0];
for (i = 1; i N_num; i++)
{
gamma[i] = a[i - 1][i];
alpha[i] = a[i][i] - gamma[i] * beta[i - 1];
if (i N_num - 1)
{
beta[i] = a[i + 1][i] / alpha[i];
}
y[i] = (b[i] - gamma[i] * y[i - 1]) / alpha[i];
}
xx[N_num - 1] = y[N_num - 1];
for (i = N_num - 2; i = 0; i--)
{
xx[i] = y[i] - beta[i] * xx[i + 1];
}
}
int main()
{
int N_num = 4;
double **a = new double*[N_num]();
for (int i = 0; i N_num; i++) //AX=B方程a[n][n]为系数矩阵
a[i] = new double[N_num]();
double *b = new double[N_num](); //AX=B方程b[n]为右侧列矩阵
double *x = new double[N_num](); //AX=B方程x[n]为方程解
ifstream fin("ab.txt");
for (int i=0; i N_num; i++)
{
for (int j=0; j N_num; j++)
{
fin a[i][j]; //读取数
cout fixed setw(8) setprecision(4) a[i][j];
}
fin b[i];
cout fixed setw(8) setprecision(4) b[i] endl;
}
Chasing_method(a, b, x, N_num);
cout "追赶法求得方程组解为:" endl;
for (int i = 0; i N_num; i++)
{
cout"x["i"]=" fixed setw(8) setprecision(4) x[i] endl;
}
}
Q4: 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求解方程组代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java解析数学算式、java求解方程组代码的信息别忘了在本站进行查找喔。






