复数类
关于复数:https://oi-wiki.org/math/complex/
构造函数
const Complex({this.real = 0.0, this.imaginary = 0.0})
传入复数的实部和虚部,不传默认为0.0,虚数一旦创建就不可以修改。
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex(real: 1.5, imaginary: 2.1);
print(complex);
}
output
Complex(1.5, 2.1)
Complex.fromPolar
factory Complex.fromPolar({required double r, required double theta})
根据模和辐角来创建复数
test
import 'dart:math';
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromPolar(r: 2, theta: pi / 4);
print(complex);
}
output
Complex(1.4142135623730951, 1.4142135623730951)
Complex.fromList
factory Complex.fromList(List
data) 传入一个包含两个浮点数的列表来生成复数
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.3, 1.2]);
print(complex);
}
output
Complex(1.3, 1.2)
toString
String toString({int which = 0})
转toString,which函数提供了不同的复数展示格式
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.3, 1.2]);
print(complex.toString(which: 0));
print(complex.toString(which: 1));
print(complex.toString(which: 2));
print(complex.toString(which: 3));
print(complex.toString(which: 4));
complex = Complex.fromList([-1.3, -1.2]);
print(complex.toString(which: 0));
print(complex.toString(which: 1));
print(complex.toString(which: 2));
print(complex.toString(which: 3));
print(complex.toString(which: 4));
}
output
Complex(1.3, 1.2)
Complex(1.3, 1.2j)
1.3 + 1.2j
(1.3, 1.2j)
1.3+1.2j
Complex(-1.3, -1.2)
Complex(-1.3, -1.2j)
-1.3 - 1.2j
(-1.3, -1.2j)
-1.3-1.2j
bool operator == (Object other)
判断两个复数实部和虚部是不是各相同
import 'package:flutter_matrix/complex.dart'; main() { Complex complex = Complex.fromList([1.3, 1.2]); Complex complex1 = Complex(real: 1.3, imaginary: 1.2); print(complex1 == complex); }
output
true
+、-、*、/
复数的运算
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.3, 1.2]);
Complex complex1 = Complex(real: 1.3, imaginary: -1.2);
print(complex + complex1);
print(complex - complex1);
print(complex * complex1);
print(complex / complex1);
}
output
Complex(2.6, 0.0)
Complex(0.0, 2.4)
Complex(3.13, 0.0)
Complex(0.07987220447284353, 0.9968051118210863)
Complex get conjugate
获取对应的共轭复数
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.3, 1.2]);
Complex complex1 = Complex(real: 1.3, imaginary: -1.2);
print(complex.conjugate == complex1);
}
output
true
bool get isNan
判断实部或者虚部含有NaN
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.3, double.nan]);
print(complex.isNan);
}
output
true
double get mod
复数的模
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.6]);
print(complex.mod);
}
output
2.0
double get arg
复数的辐角
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.arg);
}
output
0.7853981633974483
Complex get exp
欧拉公式
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.exp);
}
output
Complex(1.203070112722819, 3.0944787419716917)
Complex get sqrt
平方根
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.sqrt);
}
output
Complex(1.20354814503777, 0.4985259646436252)
一些三角函数运算
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.sin);
print(complex.cos);
print(complex.tan);
}
output
Complex(1.6876017599704798, 0.546965027216471)
Complex(0.6561050855063479, -1.4068769820012117)
Complex(0.14015057356642455, 1.134177526770811)
deepcopy
复制一个复数
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.deepcopy == complex);
print(identical(complex.deepcopy, complex));
}
output
true
false
一些转换方法
test
import 'package:flutter_matrix/complex.dart';
main() {
Complex complex = Complex.fromList([1.2, 1.2]);
print(complex.toList);
print(complex.toFloat64x2);
print(complex.toPoint);
}
output
[1.2, 1.2]
[1.200000, 1.200000]
Point(1.2, 1.2)