Witam
Chciałbym zmodyfikować swój aby liczyć pierwiastki np równania \(\displaystyle{ x^2+2x+1+i=0}\)
z góry dziękuję za pomoc
[java] pierwiastki zespolone równania kwadratowego
-
- Użytkownik
- Posty: 735
- Rejestracja: 7 lis 2005, o 23:56
- Płeć: Mężczyzna
- Lokalizacja: Łódź
- Podziękował: 2 razy
- Pomógł: 133 razy
[java] pierwiastki zespolone równania kwadratowego
Najłatwiej - napisz klasę Complex (albo w javie jest, nie wiem) i zaimplementuj za jej pomocą wszystkie działania arytmetyczne.
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
[java] pierwiastki zespolone równania kwadratowego
Spróbuj może tak
Wynik dla Twojego trójmianu
Kod: Zaznacz cały
import java.io.IOException;
public class Complex {
public Double re = .0; // cześć rzeczywista
public Double im = .0; // cześć urojona
java.text.DecimalFormat df = new java.text.DecimalFormat("####.####");
private Complex() {
}
private Complex(Double re, Double im) {
this.re = re;
this.im = im;
}
public Complex add(Complex number) {
Complex result = new Complex();
result.re = this.re + number.re;
result.im = this.im + number.im;
return result;
}
public Complex mul(Complex number) {
Complex result = new Complex();
result.re = (this.re * number.re) + (this.im * number.im);
result.im = (this.re * number.im) + (this.im * number.re);
return result;
}
public Complex mul(Double number) {
Complex result = new Complex();
result.re = number * this.re;
result.im = number * this.im;
return result;
}
public Double getz() {
return Math.sqrt(re * re + im * im);
}
public Double geta() {
if (im == .0)
return .0;
if (re == 0)
return (Math.PI / 2);
return Math.atan2(re, im);
}
public Complex pow(Double exponent) {
Complex result = new Complex();
Double z = Math.pow(getz(), exponent);
Double a = geta() * exponent;
result.re = z * Math.cos(a);
result.im = z * Math.sin(a);
return result;
}
@Override
public String toString() {
return "(" + df.format(re) + "; " + df.format(im) + ") ";
}
public static void main(String[] arg) {
Complex a = new Complex();
Complex b = new Complex();
Complex c = new Complex();
java.io.BufferedReader kbd = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
try {
System.out.print("Współczynnik a część rzeczywista : ");
a.re = new Double(kbd.readLine()).doubleValue();
System.out.print("Współczynnik a część urojona : ");
a.im = new Double(kbd.readLine()).doubleValue();
if ((a.re == .0) && (a.im == .0)) {
System.out.print("Współczynnik a powinien być różny od zera");
return;
}
System.out.print("Współczynnik b część rzeczywista : ");
b.re = new Double(kbd.readLine()).doubleValue();
System.out.print("Współczynnik b część urojona : ");
b.im = new Double(kbd.readLine()).doubleValue();
System.out.print("Współczynnik c część rzeczywista : ");
c.re = new Double(kbd.readLine()).doubleValue();
System.out.print("Współczynnik c część urojona : ");
c.im = new Double(kbd.readLine()).doubleValue();
} catch (IOException ex) {
// Obsługa Błędu
}
Complex delta = new Complex();
Complex ac = new Complex();
ac = a.mul(c).mul(-4.0); // -4ac
delta = b.mul(b).add(ac); // b^2 - 4ac
delta = delta.pow(0.5); // pierwiastek z delty
Complex result = new Complex();
result = b.add(delta).mul(-0.5); //
System.out.print("Pierwiastki trójmianu to : " + result + " ");
result = b.add(delta.mul(-1.0)).mul(-0.5); //
System.out.println(result);
}
}
Kod: Zaznacz cały
Współczynnik a część rzeczywista : 1
Współczynnik a część urojona : 0
Współczynnik b część rzeczywista : 2
Współczynnik b część urojona : 0
Współczynnik c część rzeczywista : 1
Współczynnik c część urojona : 1
Pierwiastki trójmianu to : (-1,7071; -0,7071) (-0,2929; 0,7071)