⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example1_4.java

📁 清华大学2002年出版的《科学与工程数值计算算法Java》配套源码
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

class Complex
{ double real,image;
  public static void init(double a,double b,Complex c)
  {c.real=a;c.image=b;}
  public static double abs(Complex a)
  {double x,y,r;
   x=Math.abs(a.real);y=Math.abs(a.image);
   if(x>y)r=x*Math.sqrt(1+(y/x)*(y/x));
   else r=y*Math.sqrt(1+(x/y)*(x/y));
   return r;
  }

  public static void cheng(Complex a,Complex b,Complex c)
  { c.real=a.real*b.real-a.image*b.image;
    c.image=a.real*b.image+a.image*b.real;
  }

  public static void chu(Complex a,Complex b,Complex c)
  { double w;
    if(Math.abs(b.real)>Math.abs(b.image))
    {w=b.real+b.image*(b.image/b.real);
     c.real=(a.real+a.image*(b.image/b.real))/w;
     c.image=(a.image-a.real*(b.image/b.real))/w;
    }
    else
	{w=b.real*(b.real/b.image)+b.image;
	 c.real=(a.real*(b.real/b.image)+a.image)/w;
	 c.image=(a.image*(b.real/b.image)-a.real)/w;
    }
 }
 public static void  Root(Complex a,Complex[] b,int n)
 {double r,sita,Pi=Math.PI,w=2*Pi/n,c,s,csita,ssita,cw,sw,tc;
  r=Complex.abs(a);
  if(a.image==0)
  {if (a.real>=0)sita=0;
   else sita=Pi/n;}
  else if(a.real==0)
  {if(a.real>0)sita=Pi/2/n;
   else sita=-Pi/2/n;}
  else {if (a.real>0) sita=Math.atan(a.image/a.real)/n;
        else sita=(Math.atan(a.image/a.real)+Pi)/n;}
  csita=Math.cos(sita);ssita=Math.sin(sita);
  cw=Math.cos(w);sw=Math.sin(w);
  c=1;s=0;r=Math.exp(Math.log(r)/n);
  for(int k=0;k<n;k++)
  {b[k].real=r*(csita*c-ssita*s);
   b[k].image=r*(ssita*c+csita*s);
   tc=c;c=c*cw-s*sw;s=s*cw+tc*sw;
  }
 }
}

public class Example1_4 extends Applet implements ActionListener
{TextField text1,text2,text3;
 TextArea text4;
 Button button1;
 public void init()
 {text1=new TextField(10);text2=new TextField(10);text3=new TextField(5);
  text4=new TextArea(10,50);
  button1=new Button("计算根");
  add(text1);add(text2);add(text3);add(button1);add(text4);
  text4.setEditable(false);
  button1.addActionListener(this);
 }
 public void actionPerformed(ActionEvent e)
 {double n1,n2,r;
  int i,n;
  Complex a;
  Complex[] b=new Complex[4];
  if(e.getSource()==button1)
  {n1=Double.valueOf(text1.getText()).doubleValue();
   n2=Double.valueOf(text2.getText()).doubleValue();
   n=Integer.parseInt(text3.getText());
   a=new Complex();Complex.init(n1,n2,a);
   for(i=0;i<4;i++)b[i]=new Complex();
   text4.setText("");
   text4.append("复数A=("+a.real+")+("+a.image+")I\n");
   Complex.Root(a,b,n);
   text4.append("它的"+n+"重根为:\n");
   for(i=0;i<n;i++)
   {text4.append("("+b[i].real+")+("+b[i].image+")I\n");}
  }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -