terça-feira, 20 de setembro de 2016
Resolvendo o problema da haste regulável do aspirador de pó
Recentemente tive um problema com a haste do aspirador, ela deixou de travar. O jeito que resolví foi usando grafite em pó, o mesmo que usa para lubrificar fechadura, etc. Não usem óleos nessas coisas, pois vai grudar muito pó.
sexta-feira, 12 de agosto de 2016
Putting hypergeometric function in gnuplot with GSL (patching)
My gnuplot version with hypergeometric function using GNU Scientific Library
hyperg_2F1.patch
--- ./src/eval.c.orig 2016-08-12 17:06:35.250145505 -0300
+++ ./src/eval.c 2016-05-03 12:34:08.000000000 -0300
@@ -191,6 +191,7 @@
{"lambertw", f_lambertw}, /* HBB, from G.Kuhnle 20001107 */
{"airy", f_airy}, /* janert, 20090905 */
{"expint", f_expint}, /* Jim Van Zandt, 20101010 */
+ {"hyperg_2F1",f_hyperg_2F1},
#ifdef HAVE_LIBCERF
{"cerf", f_cerf}, /* complex error function */
--- ./src/specfun.c.orig 2016-08-12 17:06:35.248145450 -0300
+++ ./src/specfun.c 2016-05-03 12:20:14.000000000 -0300
@@ -49,6 +49,7 @@
#include "specfun.h"
#include "stdfn.h"
#include "util.h"
+#include "gsl/gsl_sf_hyperg.h"
#define ITMAX 200
@@ -3031,9 +3032,11 @@
extern double p1evl ( double, void *, int );
extern double sin ( double );
extern double cos ( double );
+extern double gsl_sf_hyperg_2F1( double , double, double, double);
#else
double fabs(), exp(), sqrt();
double polevl(), p1evl(), sin(), cos();
+double gsl_sf_hyperg_2F1();
#endif
int
--- ./src/standard.c.orig 2016-08-12 17:06:35.255145644 -0300
+++ ./src/standard.c 2016-05-03 14:40:24.741731493 -0300
@@ -39,6 +39,7 @@
#include "gadgets.h" /* for 'ang2rad' and 'zero' */
#include "gp_time.h" /* needed by f_tmsec() and friendsa */
#include "util.h" /* for int_error() */
+#include "gsl/gsl_sf_hyperg.h"
static double carlson_elliptic_rc(double x,double y);
static double carlson_elliptic_rf(double x,double y,double z);
@@ -57,7 +58,7 @@
static double yone __PROTO((double x));
static double rj1 __PROTO((double x));
static double ry1 __PROTO((double x));
-
+extern double gsl_sf_hyperg_2F1(double,double,double,double);
/* The bessel function approximations here are from
* "Computer Approximations"
* by Hart, Cheney et al.
@@ -841,6 +842,30 @@
}
}
+void
+f_hyperg_2F1(union argument *arg)
+{
+ struct value a1;
+ double aa,bb,cc,zz;
+
+ (void) arg; /* avoid -Wunused warning */
+ zz=real(pop(&a1));
+ cc=real(pop(&a1));
+ bb=real(pop(&a1));
+ aa=real(pop(&a1));
+// if (fabs(imag(&a1)) > zero || fabs(imag(&a2)) > zero)
+// int_error(NO_CARET, "can only do elliptic integrals of reals");
+
+ if (zz < 1.0 && zz > 0)
+ push(Gcomplex(&a1, gsl_sf_hyperg_2F1(aa,bb,cc,zz), 0.0));
+ else if (zz < 0) {
+ push(Gcomplex(&a1, pow(1-zz,-aa)*gsl_sf_hyperg_2F1(aa,cc-bb,cc,zz/(zz-1)), 0.0));
+ } else {
+ undefined=TRUE;
+ push(&a1);
+ }
+
+}
/* Terminate the autoconversion from string to numeric values */
#undef pop
--- ./src/standard.h.orig 2016-08-12 17:06:35.252145560 -0300
+++ ./src/standard.h 2016-05-03 12:37:23.000000000 -0300
@@ -93,5 +93,6 @@
void f_tmyear __PROTO((union argument *x));
void f_tmwday __PROTO((union argument *x));
void f_tmyday __PROTO((union argument *x));
+void f_hyperg_2F1 __PROTO((union argument *x));
#endif /* GNUPLOT_STANDARD_H */
hyperg_2F1.patch
--- ./src/eval.c.orig 2016-08-12 17:06:35.250145505 -0300
+++ ./src/eval.c 2016-05-03 12:34:08.000000000 -0300
@@ -191,6 +191,7 @@
{"lambertw", f_lambertw}, /* HBB, from G.Kuhnle 20001107 */
{"airy", f_airy}, /* janert, 20090905 */
{"expint", f_expint}, /* Jim Van Zandt, 20101010 */
+ {"hyperg_2F1",f_hyperg_2F1},
#ifdef HAVE_LIBCERF
{"cerf", f_cerf}, /* complex error function */
--- ./src/specfun.c.orig 2016-08-12 17:06:35.248145450 -0300
+++ ./src/specfun.c 2016-05-03 12:20:14.000000000 -0300
@@ -49,6 +49,7 @@
#include "specfun.h"
#include "stdfn.h"
#include "util.h"
+#include "gsl/gsl_sf_hyperg.h"
#define ITMAX 200
@@ -3031,9 +3032,11 @@
extern double p1evl ( double, void *, int );
extern double sin ( double );
extern double cos ( double );
+extern double gsl_sf_hyperg_2F1( double , double, double, double);
#else
double fabs(), exp(), sqrt();
double polevl(), p1evl(), sin(), cos();
+double gsl_sf_hyperg_2F1();
#endif
int
--- ./src/standard.c.orig 2016-08-12 17:06:35.255145644 -0300
+++ ./src/standard.c 2016-05-03 14:40:24.741731493 -0300
@@ -39,6 +39,7 @@
#include "gadgets.h" /* for 'ang2rad' and 'zero' */
#include "gp_time.h" /* needed by f_tmsec() and friendsa */
#include "util.h" /* for int_error() */
+#include "gsl/gsl_sf_hyperg.h"
static double carlson_elliptic_rc(double x,double y);
static double carlson_elliptic_rf(double x,double y,double z);
@@ -57,7 +58,7 @@
static double yone __PROTO((double x));
static double rj1 __PROTO((double x));
static double ry1 __PROTO((double x));
-
+extern double gsl_sf_hyperg_2F1(double,double,double,double);
/* The bessel function approximations here are from
* "Computer Approximations"
* by Hart, Cheney et al.
@@ -841,6 +842,30 @@
}
}
+void
+f_hyperg_2F1(union argument *arg)
+{
+ struct value a1;
+ double aa,bb,cc,zz;
+
+ (void) arg; /* avoid -Wunused warning */
+ zz=real(pop(&a1));
+ cc=real(pop(&a1));
+ bb=real(pop(&a1));
+ aa=real(pop(&a1));
+// if (fabs(imag(&a1)) > zero || fabs(imag(&a2)) > zero)
+// int_error(NO_CARET, "can only do elliptic integrals of reals");
+
+ if (zz < 1.0 && zz > 0)
+ push(Gcomplex(&a1, gsl_sf_hyperg_2F1(aa,bb,cc,zz), 0.0));
+ else if (zz < 0) {
+ push(Gcomplex(&a1, pow(1-zz,-aa)*gsl_sf_hyperg_2F1(aa,cc-bb,cc,zz/(zz-1)), 0.0));
+ } else {
+ undefined=TRUE;
+ push(&a1);
+ }
+
+}
/* Terminate the autoconversion from string to numeric values */
#undef pop
--- ./src/standard.h.orig 2016-08-12 17:06:35.252145560 -0300
+++ ./src/standard.h 2016-05-03 12:37:23.000000000 -0300
@@ -93,5 +93,6 @@
void f_tmyear __PROTO((union argument *x));
void f_tmwday __PROTO((union argument *x));
void f_tmyday __PROTO((union argument *x));
+void f_hyperg_2F1 __PROTO((union argument *x));
#endif /* GNUPLOT_STANDARD_H */
sexta-feira, 5 de agosto de 2016
Edamame soja verde cozida ainda na vajem
A soja não é ruim, a proteina texturizada de soja que é horrivel. A forma gostosa de comer seria ela ainda verde, cozida na água com sal. Quase como se faz com o amendoin cru na casca muito comum na Bahia.
Mas é muito mais fácil para comer a soja, que é só precionar com os dedos a vagem da soja próximo a boca que os grãos voam. hehehe
Mas é muito mais fácil para comer a soja, que é só precionar com os dedos a vagem da soja próximo a boca que os grãos voam. hehehe
As primeiras cervejas que fiz
junho de 2012 |
+/-Pilsen 08/2012 |
Primeira IPA 10/2012 |
Segunda IPA 12/2012 |
Essa usei malte melanoidina, essa é a foto melhor que tenho dela, depois que envelheci e todo aquele fermento decantou no fundo e não sujou. Foto de Maio de 2013. Em abril ainda estava suja.
sexta-feira, 3 de junho de 2016
Homebrew Calc v.3 (SG, SRM, IBU, alcohol, CO2)
IBU (International Biterness Unit)
Calculate Alcohol
Calculate Carbonation Pressure/Priming Sugar
|
Com essa calculadora você poderá
estimar quanto brix e a cor da cerveja vai obter, estimar também a
amargura, calcular o grau alcoólico usando apenas o
refratômetro em brix, e por fim, a pressão de carbonatação.
O refratômetro é bem mais fácil de se usar e não
desperdiça a sua breja, pois só precisa de algumas gotas.
Lembrar que é apenas uma estimação, se precisar de valores exatos vai precisar mandar para algum laboratório especializado.
Como usar:
Como usar:
- Coloque o volume que deseja produzir, e a eficiencia que acha que vai obter, coloque a quantidade de malte e selecione o malte, poderá modificar os valores se achar que estiverem errados, (Clique em Add para por mais linhas/ Remove para tirar linhas) ponha quantos maltes que desejar e por fim calculate, assim terá uma estimativa do SG/Brix/Cor do seu mosto.
- Ponha o valor do Brix/SG que obteve e veja qual foi a eficiencia real.
- Coloque a quantidade do lúpulo e selecione o lúpulo, se o valor do ácido alfa estiver errado, o corrija, ponha o tempo. Se tiver mais lúpulo, clique em Add, e clique em Remove para tirar. Clique em Calculate IBU para obter uma estimativa da amargura.
- Depois de fermentado poderá por o Brix final e calcular o alcool da sua cerveja. Se quiser só usar a calculadora do álcool, basta por o valor do Brix : e Final Brix:
- Carbonatação: Calcula a pressão de carbonatação para o estilo de cerveja que esteja preparando, não está interligado com as demais calculadoras. Coloque a temperatura que vai carbonatar e escolha o estilo, se quiser mude o volume de CO2. Para o priming com açúcar coloque o volume final e calcule.
Usei os dados do mate e do lúpulo extraidos do EZ Brew 1.95 e de vários sites, andei modificando alguns valores que achei muito baixos, e as formulas para estimar grau alcoolico do site:
http://www.primetab.com/formulas.htmlPara o primiming usei a formula do artigo: http://www.homebrewersassociation.org/attachments/0000/2497/Math_in_Mash_SummerZym95.pdf
A formula do cálculo da amargura é a mesma que postei no post anterior.
A formula do cálculo da pressão é a mesma que postei no post anterior que calcula o volume de CO2, só que a modifiquei para calcular a pressão a partir da temperatura e volume do estilo desejado.
sexta-feira, 29 de abril de 2016
Patch for qtiplot 0.9.8.9 ImageWidget error
icons/../src/plot2D/ImageWidget.h:73:7: error: 'virtual void ImageWidget::paintEvent(QPaintEvent*)' is private
void paintEvent(QPaintEvent *e);
patch link qwidget.patch
void paintEvent(QPaintEvent *e);
patch link qwidget.patch
Assinar:
Postagens (Atom)