Пример #1
0
 bool Complex::isLess(Complex comp2)
 {
     if(this->abs() < comp2.abs())
         return true;
     else
         return false;
 }
Пример #2
0
int main()
{
	Complex a(1,2);
	Complex *b = new Complex(3,-4);

	cout << "a=";
	a.print();
	cout << "; abs=" << a.abs() << endl;

	cout << "b=";
	b->print();
	cout << "; abs=" << b->abs() << endl;

	cout << "a+b=";
	cplx_plus(a, *b).print();
	cout << endl;

	Complex(1,2).print();
	cout << endl;

	cout << "a+b=";
	a.add(*b).print();
	cout << endl;

	Complex(1,2).add(Complex(3,4).add(Complex(5,6))).print();
	cout << endl;

	delete b;

	return 0;
}
Пример #3
0
    void Point::addForceContribution(const Point * & p, Vector<2> & force,
                                     Vector<2> & v2, Vector<3> & stress) {
        double thetaz = getDomain()->getModulus();
        double factor = getDomain()->getPassionsRatio();

        double cutOff = 2 * std::abs(this->getBurgersMagnitude());
        Complex b(this->getBurgersVector());
        Complex z(this->getLocation());

        double sig11 = 0;
        double sig22 = 0;
        double sig12 = 0;
        double sig11z = 0;
        double sig22z = 0;
        double sig12z = 0;


        Complex zSource(p->getLocation());
        Complex dz = z - zSource;
        double zd = dz.abs();


        if(zd > cutOff) {
            Complex phi1 = -1. * Complex::i * factor * b / dz;
            Complex phi11 = Complex::i * factor * b / (dz * dz);
            Complex phi2 = Complex::i * factor * b.conjugate() / dz;

            Complex tmp1 = 2. * Complex(phi1 * phi1.conjugate());
            Complex tmp2 = -2. * Complex(dz * phi11.conjugate() * phi2.conjugate());

            sig11 += Complex(0.5 * (tmp1 + tmp2)).real();
            sig22 += Complex(0.5 * (tmp1 - tmp2)).real();
            sig12 += Complex(.5 * tmp2).imag();

            Complex phi1z = Complex::i * factor * b / (dz * dz) * thetaz;
            Complex phi11z = -2. * Complex::i * factor * b / (dz * dz * dz) * thetaz;
            Complex phi2z = -1. * factor * b.conjugate() / (dz * dz) * thetaz;
            Complex tmp1z = 2. * (phi1z + phi1z.conjugate());
            Complex tmp2z = -2. * (dz * phi11z.conjugate() + phi2z.conjugate());

            sig11z += Complex(.5 * (tmp1z + tmp2z)).real();
            sig22z += Complex(.5 * (tmp1z - tmp2z)).real();
            sig12z += Complex(.5 * tmp2z).imag();
        }

        double cos2i = ::cos(2. * this->getSlipPlane()->getAngle());
        double sin2i = ::sin(2. * this->getSlipPlane()->getAngle());

        double bi = std::abs(getSlipPlane()->getBurgersMagnitude()) * getBurgersSign() *
                    ((sig22 - sig11) * .5 * sin2i + sig12 * cos2i);

        force += Vector<2>({bi, 0});
    }
int MainWindow::when_goes_to_infinity(Complex z)
{
    int iteration = 1;
    while ( z.abs() < infinity && iteration <= iterations )
    {
        z = func(z);
        ++iteration;
    }

//    return (z.abs() >= infinity ? iteration : 0);
    return iteration - 1;
}
Пример #5
0
bool operator <=(const Complex& left, const Complex& right){
	return left.abs() <= right.abs();;
}
Пример #6
0
bool operator >(const Complex& left, const Complex& right){
	return left.abs() > right.abs();
}
Пример #7
0
int main() {
 /*Queue<int> positive, negative;
 int num;
 cout << "write a zero-terminated sequence of integers" <<
endl;
 cin >> num;
 while (num) {
   if (num>0) positive.push(num);
   else negative.push(num);
   cin >> num;
 }
 cout << "positive numbers:" << endl;
 while (!positive.isEmpty()) {
    num = positive.pop();
    cout << num << ' ';
 }
 cout << "\nnegative numbers:" << endl;
 while (!negative.isEmpty()) {
    num = negative.pop();
    cout << num << ' ';
 }
 cout << endl;

 Queue<float> fpositive, fnegative;
 float fnum;
 cout << "write a zero-terminated sequence of floats" <<
endl;
 cin >> fnum;
 while (fnum) {
   if (fnum>0) fpositive.push(fnum);
   else fnegative.push(fnum);
   cin >> fnum;
 }
 cout << "positive numbers:" << endl;
 while (!fpositive.isEmpty()) {
    fnum = fpositive.pop();
    cout << fnum << ' ';
 }
 cout << "\nnegative numbers:" << endl;
 while (!fnegative.isEmpty()) {
    fnum = fnegative.pop();
    cout << fnum << ' ';
 }
 cout << endl;*/

 Queue<Complex> cpositive, cnegative;
 Complex cnum;
 cout << "write a zero-terminated sequence of complex numbers" <<
endl;
 cin >> cnum;
 while (cnum.abs()) {
   if (cnum.getRe()>0) cpositive.push(cnum);
   else cnegative.push(cnum);
   cin >> cnum;
 }
 //cpositive.push(Complex(1,1));
 //cnegative.push(Complex(-1,1));
 cout << "positive numbers:" << endl;
 while (!cpositive.isEmpty()) {
    cnum = cpositive.pop();
    cout << cnum << ' ';
 }
 cout << "\nnegative numbers:" << endl;
 while (!cnegative.isEmpty()) {
    cnum = cnegative.pop();
    cout << cnum << ' ';
 }
 cout << endl;
 return 0;
}