| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:[求助]复数的问题???
只看楼主 加入收藏
子阳
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-3-5
收藏
 问题点数:0 回复次数:4 
[求助]复数的问题???

设有复数a=(3,5);b=(4,8);3,4为复数的实部,5,8为复数的虚部.
编程求复数a,b,的加减乘除运算???

搜索更多相关主题的帖子: 复数 加减乘除 运算 
2007-04-27 16:19
cctvdaoge
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2007-3-25
收藏
得分:0 
等待eastsun的牛代码,新手上路我
[CODE]

/**
*写一个关于复数运算的类
*在java中sqrt(-1)的值为NaN,我们做如下约定:用数组[a,b]代表一个复数,其中
*a代表复数的实部,b代表复数的虚部。
*Complex类实现了复数的基本运算。
*/
import java.util.*;
public final class Complex{
public static double complexNorm(double[] a){
return Math.sqrt(a[0]*a[0]+a[1]*a[1]);
}

public static double[] complexAdd(double[] a,double[] b){
return new double[]{a[0]+b[0],a[1]+b[1]};
}

public static double[] complexSub(double[] a,double[] b){
return new double[]{a[0]-b[0],a[1]-b[1]};
}

public static double[] complexMuti(double[] a,double[] b){
return new double[]{a[0]*b[0]-a[1]*b[1],a[0]*b[1]+a[1]*b[0]};
}

public static double[] complexDvi(double[] a,double[] b){
double c=complexNorm(b)*complexNorm(b);
double[] d={b[0],-b[1]};
double[] e=complexMuti(a,d);
return new double[]{e[0]/c,e[1]/c};
}

public static void main(String[] args){
double[] a={1,2};
double[] b={3,4};
System.out.println(Arrays.toString(complexAdd(a,b)));
System.out.println(Arrays.toString(complexSub(a,b)));
System.out.println(Arrays.toString(complexMuti(a,b)));
System.out.println(Arrays.toString(complexDvi(a,b)));
}
}

[/CODE]

天外浪人
2007-04-27 20:35
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
收藏
得分:0 


/**
* By [url=http://eastsun.javaeye.com]Eastsun[/url]
*/

public class ComplexTest{
public static void main(String[] args){
Complex a =new Complex(1,2);
Complex b =new Complex(2,0);
System.out.println(a+\"+\"+b+\" = \"+a.add(b));
System.out.println(a+\"-\"+b+\" = \"+a.sub(b));
System.out.println(a+\"*\"+b+\" = \"+a.mul(b));
System.out.println(a+\"/\"+b+\" = \"+a.div(b));
}
}
/**
*一个Complex对象,提供add,sub,mul,div方法;并复写了toString方法
*注意,这是一个不可变类;就是说类一旦创建其表示的复数就不会改变
*/
class Complex{
private final double real,image;
public Complex(double r,double i){
real =r;
image =i;
}
/**
*返回一个Complex,代表this+c
*注意,该方法不会改变当前对象的值.其余方法类似
*/
public Complex add(Complex c){
return new Complex(real+c.real,image+c.image);
}
public Complex sub(Complex c){
return new Complex(real-c.real,image-c.image);
}
public Complex mul(Complex c){
return new Complex(real*c.real-image*c.image,real*c.image+image*c.real);
}
public Complex div(Complex c){
double squareL =c.real*c.real+c.image*c.image;
double r =real*c.real -image*c.image;
double i =real*c.image+image*c.real;
return new Complex(r/squareL,i/squareL);
}
public String toString(){
if(image==0) return \"\"+real;
else return \"(\"+real+(image<0?\"\"+image:\"+\"+image)+\"i)\";
}
}


My BlogClick Me
2007-04-27 20:44
子阳
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-3-5
收藏
得分:0 
写的都不错,
谢谢了,
值的去好好学习.
2007-04-27 22:34
tblovecj
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2006-9-20
收藏
得分:0 
请问什么是复数,好像是数学上的问题吧,是我的弱项啊!

2007-04-30 02:51
快速回复:[求助]复数的问题???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020372 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved