1.上次有人在百度发出求解a点坐标(i,j),b点坐标(m,n),c点坐标(x,y),c到a点的距离l,c到b点的距离k,求c点坐标,其中i,j,m,n,l,k都为已知,求c点坐标x,y。于是我就写了下面这个程序,之后看到别人的解答,不知道自己数学之心太重还是脑筋太死!
package com.tim.baidu;
/**
* 主函数
* @author Tim
*/
public class CPointMain {
//a点坐标(i,j),b点坐标(m,n),c点坐标(x,y),c到a点的距离l,c到b点的距离k,求c点坐标
public static void main(String[] args){
String result = FindCPoint.findC(1, 1, 4, -2, 5, 7);//已经写死,可以改为输入
System.out.println(result);
}
}
/**
* 求出c点坐标
* @author Tim
*/
class FindCPoint{
public static String findC(double i,double j,double m,double n,double l,double k){
//a点坐标(i,j),b点坐标(m,n),c点坐标(x,y),c到a点的距离l,c到b点的距离k
//(x-i)*(x-i)+(y-j)*(y-j)=l*l .....(1)
//(x-m)*(x-m)+(y-n)*(y-n)=k*k
//两式做差得:(2*i-2*m)*x+m*m-i*i+(2*j-2*n)*y+n*n-j*j=k*k-l*l
//得到x=(k*k-l*l-(m*m-i*i+n*n-j*j)-(2*j-2*n)*y)/(2*i-2*m)
//x=e+fy; .....(2)
double e = (k*k-l*l-(m*m-i*i+n*n-j*j))/(2*i-2*m);
double f = (2*n-2*j)/(2*i-2*m);
System.out.println("x="+e+"+"+f+"y");
//把(2)式带入第(1)个方程式,整理会得到一个标准的二元一次方程
//(f*f+1)*y*y+(2*(e-i)-2*i)*y+(e-i)*(e-i)+i*i-l*l=0
//来解方程
double[] result = UtilFunction.Equation12(f*f+1, 2*(e-i)-2*i, (e-i)*(e-i)+i*i-l*l);
if(result!=null){//有解
System.out.println(result[0]+""+result[1]);
double x0 = e+f*result[0];
double x1 = e+f*result[1];
if(x0!=x1){//有2个解
return "c点坐标有两个,分别为:("+x0+","+result[0]+"),("+x1+","+result[1]+")";
}else{//有1个解
return "c点坐标有一个,为:("+x0+","+result[0]+"),("+x1+","+result[1]+")";
}
}else{//无解
return "无解";
}
}
}
/**
* 辅助函数,解出ax2+bx+c=0两根
* @author Tim
*/
class UtilFunction{
//x1=(-b+Math.sqrt(b*b-4*a*c))/(2*a)
//x2=(-b-Math.sqrt(b*b-4*a*c))/(2*a)
public static double[] Equation12(double a,double b,double c){
//返回数组,double[0]
double[] returnDo = new double[2];
double d = b*b-4*a*c;
if(d>0){//有两个根
returnDo[0]=(-b+Math.sqrt(b*b-4*a*c))/(2*a);
returnDo[1]=(-b-Math.sqrt(b*b-4*a*c))/(2*a);
}else if(Math.abs(d) < 1E-5){//有一个根
returnDo[0]=(-b)/(2*a);
returnDo[1]=(-b)/(2*a);
}else{//无根
returnDo = null;
}
return returnDo;
}
}
//:~输出
x=-1.0+1.0y
5.0-2.0
c点坐标有两个,分别为:(4.0,5.0),(-3.0,-2.0)
分享到:
相关推荐
在Java环境中,这个工具包为开发者提供了一种方便的方式,可以将LaTeX代码转换成MathML格式,反之亦然,极大地丰富了Java程序处理数学公式的可能性。 首先,我们来看LaTeX到MathML的转换。LaTeX以其强大的公式排版...
此外,这个库还提供了API,使得在程序中动态生成和处理MathML公式变得更加便捷。 MML2OMML.XSL则是一个XSLT(Extensible Stylesheet Language Transformations)转换样式表。XSLT是一种强大的语言,用于将XML文档...
MathML是一种XML标准,用于表示数学符号、表达式和数学文本,它使得在网页、应用程序和其他数字文档中嵌入复杂的数学内容成为可能。 在这款fmath-mathml-java-v2.1包中,我们可以找到两个主要的部分:`META-INF`和`...
它适用于需要进行高级数学运算的科学、工程和金融应用程序。 二、主要模块 1. **线性代数**:包括矩阵操作(如创建、求逆、解线性方程组)、向量计算、特征值和特征向量计算等。此外,还支持稀疏矩阵,这对于处理...
《MATLAB经典算法程序解析——math_exp.zip内容详解》 MATLAB,全称为“Matrix Laboratory”,是数学计算、数据分析和科学工程领域广泛使用的高级编程环境。它以其强大的矩阵运算功能和直观的用户界面深受科研人员...
这些库通常用于在Java应用程序中渲染LaTeX或MathML(Math Markup Language)表达式,使得开发者能够方便地在程序中展示复杂的数学公式。 1. **LaTeX**:LaTeX是一种基于TeX的文字处理系统,广泛用于科学、技术、...
这个库是开源的,由Apache软件基金会维护,广泛应用于需要进行复杂数学运算的Java应用程序中。"commons-math3-3.2-bin"是Apache Commons Math 3.2版本的二进制发布包,包含了编译好的Java类库,可以直接在项目中使用...
apache开源项目源码commons-math-2.0-src 全部高质量数学函数math的java源程序 java,math,数学函数,java函数源码 各种数学函数开发(math)的工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源...
**PyPI 官网下载 | pelican-math-svg-0.2.0.tar.gz** PyPI(Python Package Index)是Python编程语言的官方软件仓库,它提供了大量的第三方库供开发者下载和使用。在本例中,我们关注的是一个名为`pelican-math-svg...
这个"commons-math-2.2--源码"是Apache Commons Math库的2.2版本的源代码,它允许我们深入理解库内部的工作原理,进行自定义修改或学习高级算法。 Apache Commons Math库涵盖了以下几个主要领域: 1. **基本数学...
import Mathematics from 'ckeditor5-math/src/math' ; 将其添加到内置插件 InlineEditor . builtinPlugins = [ // ... Mathematics ] ; 将数学按钮添加到工具栏 InlineEditor . defaultConfig = { toolbar : {...
1. **云计算仿真**:云计算仿真是通过计算机程序模拟真实的云计算环境,以研究和预测云服务的行为和性能。它可以帮助我们理解和优化复杂的云架构,如虚拟机调度、负载均衡、资源分配等。 2. **CloudSim框架**:...
3-turtle库和蟒蛇绘制程序2-4-蟒蛇绘制程序分析2-5-函数库的引用3-1-Python中类型的概念3-2-数字类型3-3-字符串类型3-4-字符串的操作3-5-元组类型3-6-列表类型及操作3-7-math库和random库3-8-π的计算4-1-1-程序基本...
在现代软件开发中,算法扮演着至关重要的角色,它们是解决问题的核心逻辑,是计算机程序的智慧所在。"Algorithm-mathtoolbox.zip"这个压缩包,提供了一个基于C++11的数学工具集,特别利用了Eigen库来实现包括插值、...
《前端开源库-math-kit:探索数学工具包的无限可能》 在当今互联网技术日新月异的时代,前端开发人员面临着各种复杂计算和数据处理的需求。为了满足这些需求,一个强大的数学工具包——"math-kit"应运而生。这款...
Algorithm-math-advanced-data-structures-and-algorithms.zip,数学、高级数据结构和算法-使用前请检查,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
标题中的“2011-cmc-math.zip”可能指的是2011年的一个数学竞赛(CMC可能是China Mathematical Competition的缩写)的资料集,它被压缩成一个ZIP文件以便于下载和存储。该文件源自www.pudn.com,这是一个知名的中国...
在本项目"simple-math-app-using-python"中,我们将探讨如何使用Python开发一个简单的数学应用程序。这个项目适合初学者和有经验的开发者,它能够帮助巩固Python基础,并且实践编程技巧,尤其是对于后端开发的理解。...
在CCS环境中,如果尝试使用IQ_math函数库而未安装相应的库文件,编译和运行程序时可能会遇到链接错误或找不到函数定义的问题。 为了安装IQ_math函数库,你需要执行压缩包中的"setup_C28x_IQmath_Library.exe"文件。...