double metodoPotencia(Matriz& A, vector<double>& x) { int length = x.size(); vector<double> y(length, 0.0); int k = 0; double c2; A.multiplicarVectorDer(x, y); double c1 = maxAbs(y); double aux = c1; do { c1 = aux; // La primera vez esto no surte efecto for (size_t i = 0; i < length; ++i) // Normalizo vector x[i] = y[i] / c1; Matriz::cerearVector(y); // Reseteo el vector y A.multiplicarVectorDer(x, y); c2 = maxAbs(y); aux = c2; ++k; } while(!igualdadConTolerancia(c1, c2) && k < 15000); // Experimentar con metodo de corte Y Epsilon para la tolerancia if (k >= 15000) std::cout << "estoy devolviendo fruta" << std::endl; return c2; }
Foam::tmp<Foam::volScalarField> Foam::populationBalanceSubModels::growthModels::constantGrowth::Kg ( const volScalarField& abscissa ) const { dimensionedScalar minAbs ( "minAbs", abscissa.dimensions(), minAbscissa_.value() ); dimensionedScalar maxAbs ( "maxAbs", abscissa.dimensions(), maxAbscissa_.value() ); dimensionedScalar CgND ( "CgND", inv(abscissa.dimensions())*inv(abscissa.dimensions())*Cg_.dimensions(), Cg_.value() ); return CgND*pos(-abscissa+maxAbs)*pos(abscissa-minAbs); }
void Widget::paintEvent(QPaintEvent *) { int i, nSteps, count; double t, tt, scale = ( width()/4 + height()/4 )/6, sum, k; double x, y, z, delta = 0.005, dxdt = 1, dydt = 1, tempDelta; my_vector4 xyz(0.0, 0.0, 0.0), xyz0(width()/2, height()/2, scale*5.0), xxyyzz(0.0, 0.0, 0.0), light_point(0.0, 0.0, scale*13.0), xyz_s(0.0,0.0,0.0), xxyyzz_s(0.0, 0.0, 0.0); QPainter p(this); if (!dF){ delta = inpDelta; nSteps = (2*pi) / delta + 1; } else{ delta = 0.05; count = 0; sum = 0; t = 0; tt = 0; k = 1; while (sum < 2*pi){ dxdt = -inpA * sin( t ) + inpB * inpC * sin ( inpC * t ); dydt = inpA * cos( t ) - inpB * inpC * cos ( inpC * t ); tempDelta = delta/maxAbs(dxdt, dydt); t += tempDelta; sum+=tempDelta; count++; } nSteps = count + 1; } k = 1; t = 0; tt = 0; dxdt = 1; dydt = 1; for (i = 0; i < nSteps; i++){ if(dF){ dxdt = -inpA * sin( t ) + inpB * inpC * sin ( inpC * t ); dydt = inpA * cos( t ) - inpB * inpC * cos ( inpC * t ); k = 1/maxAbs(dxdt, dydt); } tempDelta = delta * k; tt = t + tempDelta; x = inpA * cos( t ) - inpB * cos ( inpC * t ); y = inpA * sin( t ) - inpB * sin ( inpC * t ); z = cos ( sqrt( x * x + y * y ) ); t = t + tempDelta; xyz.setElem(0, x ); xyz.setElem(1, y ); xyz.setElem(2, z ); x = inpA * cos( tt ) - inpB * cos ( inpC * tt ); y = inpA * sin( tt ) - inpB * sin ( inpC * tt ); z = cos ( sqrt( x * x + y * y ) ); xxyyzz.setElem(0, x ); xxyyzz.setElem(1, y ); xxyyzz.setElem(2, z ); if (flag) { rotateX ( xyz , beta); rotateX ( xxyyzz, beta ); rotateY ( xyz, alpha ); rotateY ( xxyyzz, alpha ); } if (!flag){ rotateY ( xyz , alpha); rotateY ( xxyyzz, alpha ); rotateX ( xyz, beta ); rotateX ( xxyyzz, beta ); } xyz.numMul(scale); xxyyzz.numMul(scale); vecSum(xyz, xyz0); vecSum(xxyyzz, xyz0); getShadowXY(light_point, xyz, xyz_s); getShadowXY(light_point, xxyyzz, xxyyzz_s); p.setPen(Qt::darkMagenta); p.drawLine( xyz.getElem(0), xyz.getElem(1), xxyyzz.getElem(0), xxyyzz.getElem(1) ); p.setPen(Qt::darkGray); p.drawLine( xyz_s.getElem(0), xyz_s.getElem(1), xxyyzz_s.getElem(0), xxyyzz_s.getElem(1) ); } }