`
E,我卡了
  • 浏览: 31167 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

程序-math

阅读更多

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)
 

 

分享到:
评论

相关推荐

    fmath-mathml-java-latex-mathml.jar.zip

    在Java环境中,这个工具包为开发者提供了一种方便的方式,可以将LaTeX代码转换成MathML格式,反之亦然,极大地丰富了Java程序处理数学公式的可能性。 首先,我们来看LaTeX到MathML的转换。LaTeX以其强大的公式排版...

    fmath-mathml-java.zip

    此外,这个库还提供了API,使得在程序中动态生成和处理MathML公式变得更加便捷。 MML2OMML.XSL则是一个XSLT(Extensible Stylesheet Language Transformations)转换样式表。XSLT是一种强大的语言,用于将XML文档...

    fmath-mathml-java-v2.1

    MathML是一种XML标准,用于表示数学符号、表达式和数学文本,它使得在网页、应用程序和其他数字文档中嵌入复杂的数学内容成为可能。 在这款fmath-mathml-java-v2.1包中,我们可以找到两个主要的部分:`META-INF`和`...

    common-math3.rar

    它适用于需要进行高级数学运算的科学、工程和金融应用程序。 二、主要模块 1. **线性代数**:包括矩阵操作(如创建、求逆、解线性方程组)、向量计算、特征值和特征向量计算等。此外,还支持稀疏矩阵,这对于处理...

    matlab经典算法的程序-math_exp.zip

    《MATLAB经典算法程序解析——math_exp.zip内容详解》 MATLAB,全称为“Matrix Laboratory”,是数学计算、数据分析和科学工程领域广泛使用的高级编程环境。它以其强大的矩阵运算功能和直观的用户界面深受科研人员...

    具体如下: fmath-latex-mathml-0.5.jar fmath-mathml-1.0.jar fmath-math

    这些库通常用于在Java应用程序中渲染LaTeX或MathML(Math Markup Language)表达式,使得开发者能够方便地在程序中展示复杂的数学公式。 1. **LaTeX**:LaTeX是一种基于TeX的文字处理系统,广泛用于科学、技术、...

    commons-math3-3.2-bin

    这个库是开源的,由Apache软件基金会维护,广泛应用于需要进行复杂数学运算的Java应用程序中。"commons-math3-3.2-bin"是Apache Commons Math 3.2版本的二进制发布包,包含了编译好的Java类库,可以直接在项目中使用...

    apache开源项目源码commons-math-2.0-src(全部高质量数学函数math的java源程序)

    apache开源项目源码commons-math-2.0-src 全部高质量数学函数math的java源程序 java,math,数学函数,java函数源码 各种数学函数开发(math)的工具类源码,你会从中得到意想不到的效果! apache开源组织开发的开源...

    PyPI 官网下载 | pelican-math-svg-0.2.0.tar.gz

    **PyPI 官网下载 | pelican-math-svg-0.2.0.tar.gz** PyPI(Python Package Index)是Python编程语言的官方软件仓库,它提供了大量的第三方库供开发者下载和使用。在本例中,我们关注的是一个名为`pelican-math-svg...

    commons-math-2.2--源码

    这个"commons-math-2.2--源码"是Apache Commons Math库的2.2版本的源代码,它允许我们深入理解库内部的工作原理,进行自定义修改或学习高级算法。 Apache Commons Math库涵盖了以下几个主要领域: 1. **基本数学...

    ckeditor5-math:CKEditor 5的数学功能

    import Mathematics from 'ckeditor5-math/src/math' ; 将其添加到内置插件 InlineEditor . builtinPlugins = [ // ... Mathematics ] ; 将数学按钮添加到工具栏 InlineEditor . defaultConfig = { toolbar : {...

    Cloudsim-Math

    1. **云计算仿真**:云计算仿真是通过计算机程序模拟真实的云计算环境,以研究和预测云服务的行为和性能。它可以帮助我们理解和优化复杂的云架构,如虚拟机调度、负载均衡、资源分配等。 2. **CloudSim框架**:...

    Python语言程序设计教程 北理工Python课程W03V07-math库和random库 共9页.pdf

    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

    在现代软件开发中,算法扮演着至关重要的角色,它们是解决问题的核心逻辑,是计算机程序的智慧所在。"Algorithm-mathtoolbox.zip"这个压缩包,提供了一个基于C++11的数学工具集,特别利用了Eigen库来实现包括插值、...

    前端开源库-math-kit

    《前端开源库-math-kit:探索数学工具包的无限可能》 在当今互联网技术日新月异的时代,前端开发人员面临着各种复杂计算和数据处理的需求。为了满足这些需求,一个强大的数学工具包——"math-kit"应运而生。这款...

    Algorithm-math-advanced-data-structures-and-algorithms.zip

    Algorithm-math-advanced-data-structures-and-algorithms.zip,数学、高级数据结构和算法-使用前请检查,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。

    2011-cmc-math.zip_site:www.pudn.com

    标题中的“2011-cmc-math.zip”可能指的是2011年的一个数学竞赛(CMC可能是China Mathematical Competition的缩写)的资料集,它被压缩成一个ZIP文件以便于下载和存储。该文件源自www.pudn.com,这是一个知名的中国...

    每天分享几个python项目 —— simple-math-app-using-python

    在本项目"simple-math-app-using-python"中,我们将探讨如何使用Python开发一个简单的数学应用程序。这个项目适合初学者和有经验的开发者,它能够帮助巩固Python基础,并且实践编程技巧,尤其是对于后端开发的理解。...

    IQ-math函数库需要的库文件

    在CCS环境中,如果尝试使用IQ_math函数库而未安装相应的库文件,编译和运行程序时可能会遇到链接错误或找不到函数定义的问题。 为了安装IQ_math函数库,你需要执行压缩包中的"setup_C28x_IQmath_Library.exe"文件。...

Global site tag (gtag.js) - Google Analytics