<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=Simula%C3%A7%C3%A3o_do_Modelo_de_Turing</id>
	<title>Simulação do Modelo de Turing - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="http://fiscomp.if.ufrgs.br/index.php?action=history&amp;feed=atom&amp;title=Simula%C3%A7%C3%A3o_do_Modelo_de_Turing"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Simula%C3%A7%C3%A3o_do_Modelo_de_Turing&amp;action=history"/>
	<updated>2026-04-20T17:03:28Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Simula%C3%A7%C3%A3o_do_Modelo_de_Turing&amp;diff=3033&amp;oldid=prev</id>
		<title>Pedhmendes: Criou página com '&lt;source lang = &quot;c&quot;&gt;  /********************************************************  * 			TURING MODEL			*  *******************************************************/ 		 /***********...'</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Simula%C3%A7%C3%A3o_do_Modelo_de_Turing&amp;diff=3033&amp;oldid=prev"/>
		<updated>2020-11-22T20:59:49Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;&amp;lt;source lang = &amp;quot;c&amp;quot;&amp;gt;  &lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;*******************************************************  * 			TURING MODEL			*  ******************************************************: &lt;/span&gt; 		 /***********...&amp;#039;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang = &amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 			TURING MODEL			*&lt;br /&gt;
 *******************************************************/ 		&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 	simulação do modelo de turing			*&lt;br /&gt;
 * 	modelo de reação-difusão			*&lt;br /&gt;
 * 							*&lt;br /&gt;
 * 	executar o programa inserindo   		*&lt;br /&gt;
 * 	os parametros na seguinte ordem 		*&lt;br /&gt;
 *	L a b c d Du Dv					*&lt;br /&gt;
 *							*&lt;br /&gt;
 *	exemplo de exec					*&lt;br /&gt;
 *	./a.out 100 1. -1. 2. -1.5 0.0001 0.0006	*&lt;br /&gt;
 *	./a.out L   a   b  c   d   Du	  Dv		*&lt;br /&gt;
 *							*&lt;br /&gt;
 *	se usar -DGNU tem que rodar 			*&lt;br /&gt;
 *	usando pipe pro gnuplot				*&lt;br /&gt;
 *	./a.out PARAMETROS | gnuplot			*&lt;br /&gt;
 *							*&lt;br /&gt;
 *	se usar -DDEBUG gera a mesma			*&lt;br /&gt;
 *	sequencia de numeros				*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 *			INCLUDES			*&lt;br /&gt;
 *******************************************************/&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
#include&amp;lt;time.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 		      DEFINITIONS			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
#define TMAX 5 &lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 		   GLOBAL VARIABLES			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
int L, L2;&lt;br /&gt;
double dh, dt;&lt;br /&gt;
double Du, Dv;&lt;br /&gt;
double a, b, c, d;&lt;br /&gt;
double h, k;&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 *	 	      FUNCTIONS				*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
void initialize(double *u, double *v, double *n_u, double *n_v, char *argv[ ]);&lt;br /&gt;
void update(double *u, double *v, double *n_u, double *n_v);&lt;br /&gt;
void gnuplot(double *vec);&lt;br /&gt;
double drand(double low, double high);&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 	 	    MAIN PROGRAM			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
int main(int argc, char *argv[ ])&lt;br /&gt;
{&lt;br /&gt;
	double t;&lt;br /&gt;
	double *u, *v;&lt;br /&gt;
	double *n_u, *n_v;&lt;br /&gt;
	int count = 0;&lt;br /&gt;
&lt;br /&gt;
	L = atoi(argv[1]);	&lt;br /&gt;
	L2 = L*L;&lt;br /&gt;
	&lt;br /&gt;
	size_t size = L*L*sizeof(double);&lt;br /&gt;
	&lt;br /&gt;
	u = (double*)malloc(size);&lt;br /&gt;
	v = (double*)malloc(size);&lt;br /&gt;
	n_u = (double*)malloc(size);&lt;br /&gt;
	n_v = (double*)malloc(size);&lt;br /&gt;
&lt;br /&gt;
#ifdef DEBUG&lt;br /&gt;
	srand(time(0));	&lt;br /&gt;
#else&lt;br /&gt;
	srand(time(NULL));&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
	initialize(u,v,n_u,n_v,argv);	&lt;br /&gt;
	&lt;br /&gt;
	while(t &amp;lt; TMAX)&lt;br /&gt;
	{&lt;br /&gt;
		update(u,v,n_u,n_v);&lt;br /&gt;
#ifdef GNU&lt;br /&gt;
		if(count % 10 == 0)&lt;br /&gt;
		{&lt;br /&gt;
			printf(&amp;quot;set title 'Tempo %.2lf'\n&amp;quot;, t);&lt;br /&gt;
			gnuplot(u);&lt;br /&gt;
		}&lt;br /&gt;
#endif&lt;br /&gt;
		t = t + dt;&lt;br /&gt;
		count += 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
#ifdef GNU&lt;br /&gt;
	gnuplot(u);&lt;br /&gt;
	printf(&amp;quot;pause 5\n&amp;quot;);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
	free(u);&lt;br /&gt;
	free(v);&lt;br /&gt;
	free(n_u);&lt;br /&gt;
	free(n_v);&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 	   	      INITIALIZATION			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
void initialize(double *u, double *v, double *n_u, double *n_v,char *argv[ ])&lt;br /&gt;
{&lt;br /&gt;
	for(int i=0; i&amp;lt;L2; i++)&lt;br /&gt;
	{&lt;br /&gt;
		u[i] = 1.0 + drand(-0.03, 0.03);	&lt;br /&gt;
		v[i] = 1.0 + drand(-0.03, 0.03);	&lt;br /&gt;
	&lt;br /&gt;
		n_u[i] = 0.0;&lt;br /&gt;
		n_v[i] = 0.0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	dh = 1.0/L;&lt;br /&gt;
	dt = 0.02;&lt;br /&gt;
&lt;br /&gt;
	h = 1.;&lt;br /&gt;
	k = 1.;&lt;br /&gt;
&lt;br /&gt;
	a = atof(argv[2]);&lt;br /&gt;
	b = atof(argv[3]);&lt;br /&gt;
	c = atof(argv[4]);&lt;br /&gt;
	d = atof(argv[5]);&lt;br /&gt;
	Du = atof(argv[6]);&lt;br /&gt;
	Dv = atof(argv[7]);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 *	 		  UPDATE			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
void update(double *u, double *v, double *n_u, double *n_v)&lt;br /&gt;
{&lt;br /&gt;
	int i;&lt;br /&gt;
	double uLap, vLap;&lt;br /&gt;
&lt;br /&gt;
	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
	{&lt;br /&gt;
		uLap = (u[(i-L+L2)%L2]+u[(i+1)%L + (i/L)*L]+u[(i+L)%L2]+u[(i-1+L)%L + (i/L)*L]-4*u[i])/(dh*dh);	&lt;br /&gt;
		vLap = (v[(i-L+L2)%L2]+v[(i+1)%L + (i/L)*L]+v[(i+L)%L2]+v[(i-1+L)%L + (i/L)*L]-4*v[i])/(dh*dh);&lt;br /&gt;
&lt;br /&gt;
		n_u[i] = u[i] + (a*(u[i]-h) + b*(v[i]-k) +Du*uLap)*dt;	&lt;br /&gt;
		n_v[i] = v[i] + (c*(u[i]-h) + d*(v[i]-k) +Dv*vLap)*dt;	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	for(i=0; i&amp;lt;L2; i++)&lt;br /&gt;
	{&lt;br /&gt;
		u[i] = n_u[i];&lt;br /&gt;
		v[i] = n_v[i];&lt;br /&gt;
	}	&lt;br /&gt;
	&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 * 			GNU VIEW			*&lt;br /&gt;
 *******************************************************/ &lt;br /&gt;
void gnuplot(double *vec)&lt;br /&gt;
{        &lt;br /&gt;
	printf(&amp;quot;set xrange [0:%d]\nset yrange [0:%d]\n&amp;quot;, (L-1), (L-1));&lt;br /&gt;
	printf(&amp;quot;unset xtics\nunset ytics\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;unset colorbox\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;set size square\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;set key off\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;plot \&amp;quot;-\&amp;quot; matrix w image\n&amp;quot;);&lt;br /&gt;
	&lt;br /&gt;
	for(int i=0; i&amp;lt;L; i++)&lt;br /&gt;
	{&lt;br /&gt;
		for(int j=0; j&amp;lt;L; j++)&lt;br /&gt;
		{&lt;br /&gt;
			printf(&amp;quot;%lf &amp;quot;, vec[i + j*L]);&lt;br /&gt;
		}&lt;br /&gt;
		printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;\n\n\ne\n\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/********************************************************&lt;br /&gt;
 *		   RANDOM IN A RANGE            	*&lt;br /&gt;
 *******************************************************/&lt;br /&gt;
double drand(double low, double high)&lt;br /&gt;
{&lt;br /&gt;
	return ((double)rand()*(high-low))/(double)RAND_MAX + low;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Pedhmendes</name></author>
	</entry>
</feed>