<?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=Lax-Wendroff_de_dois_passos</id>
	<title>Lax-Wendroff de dois passos - 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=Lax-Wendroff_de_dois_passos"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Lax-Wendroff_de_dois_passos&amp;action=history"/>
	<updated>2026-04-07T17:09:52Z</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=Lax-Wendroff_de_dois_passos&amp;diff=1996&amp;oldid=prev</id>
		<title>Rodrigozferreira: Criou página com '&lt;source lang=&quot;c&quot;&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt;   void atualizar_onda(double u_new[],double u_now[],double u_old[],int jmax,double k...'</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Lax-Wendroff_de_dois_passos&amp;diff=1996&amp;oldid=prev"/>
		<updated>2018-01-24T17:49:56Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt; #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;math.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt;   void atualizar_onda(double u_new[],double u_now[],double u_old[],int jmax,double k...&amp;#039;&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;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include&amp;lt;math.h&amp;gt;&lt;br /&gt;
#include&amp;lt;string.h&amp;gt;&lt;br /&gt;
#include&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void atualizar_onda(double u_new[],double u_now[],double u_old[],int jmax,double k);&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    FILE *arq;&lt;br /&gt;
    arq = fopen(&amp;quot;laxw.txt&amp;quot;, &amp;quot;w+&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    int tmax,i,j,jmax;&lt;br /&gt;
&lt;br /&gt;
	//tamanho da corda: jmax-1&lt;br /&gt;
    jmax = 50;&lt;br /&gt;
&lt;br /&gt;
	//u: posicao da corda&lt;br /&gt;
	/*    u_old em t-1    */&lt;br /&gt;
	/*    u_now em t      */&lt;br /&gt;
	/*    u_new em t+1    */&lt;br /&gt;
    //k = dt/dx&lt;br /&gt;
    double u_new[jmax],t,u_old[jmax],u_now[jmax],k,erro;&lt;br /&gt;
&lt;br /&gt;
	//tmax: tempo final&lt;br /&gt;
    tmax = 100;&lt;br /&gt;
    k = 0.2;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    //condição inicial&lt;br /&gt;
    for (j = 0 ; j &amp;lt; jmax ; j++)&lt;br /&gt;
    {&lt;br /&gt;
        u_now[j] = sin(M_PI*j/(jmax - 1));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    //condição de contorno&lt;br /&gt;
    u_old[0] = 0;&lt;br /&gt;
    u_old[jmax-1] = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    u_new[0] = 0;&lt;br /&gt;
    u_new[jmax-1] = 0;&lt;br /&gt;
&lt;br /&gt;
//cálculo de u para t=-dt, utilizando o método de leapfrog - aqui usamos que du/dt = 0 em t=0&lt;br /&gt;
    for (j = 1; j&amp;lt; jmax-1 ; j++)&lt;br /&gt;
    {&lt;br /&gt;
        u_old[j] = u_now[j] + 0.5 * pow(k,2) * (u_now[j+1] - 2 * u_now[j] + u_now[j-1]);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//atualização da onda&lt;br /&gt;
    for(t = 0 ; t &amp;lt; tmax ; t+=k)&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        atualizar_onda(u_new,u_now,u_old,jmax,k);&lt;br /&gt;
&lt;br /&gt;
        memcpy(u_old,u_now, sizeof(double)*jmax);&lt;br /&gt;
        memcpy(u_now,u_new, sizeof(double)*jmax);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
	//onda no tempo t=tmax&lt;br /&gt;
    for(j=0; j&amp;lt;jmax; j++)&lt;br /&gt;
    {&lt;br /&gt;
        fprintf(arq,&amp;quot;%d %lf\n&amp;quot;, j, u_new[j]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    fclose(arq);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void atualizar_onda(double u_new_[],double u_now_[],double u_old_[],int jmax,double k)&lt;br /&gt;
{&lt;br /&gt;
    int j;&lt;br /&gt;
&lt;br /&gt;
    //para j=1 e j=jmax-2 (penultimas posicoes), necessitamos de u em x=-1 e x=jmax, respectivamente, sendo que essas posicoes ficam fora do vetor (vai de 0 a jmax-1). Aqui, foi feito u(x=-1)=-u(x=1) e u(x=jmax)=-u(x=jmax-2)&lt;br /&gt;
    j=1;&lt;br /&gt;
&lt;br /&gt;
    u_new_[j] = 2 * u_now_[j] - u_old_[j] + 0.5 * pow(k,2) * (0.5 * u_old_[j+2] - u_old_[j+1] + u_old_[j] - u_old_[j-1] - 0.5 * u_old_[j] + u_now_[j+1] - 2 * u_now_[j] + u_now_[j-1]);&lt;br /&gt;
&lt;br /&gt;
    for(j = 2 ; j &amp;lt; jmax-2 ; j++)&lt;br /&gt;
    {&lt;br /&gt;
        u_new_[j] = 2 * u_now_[j] - u_old_[j] + 0.5 * pow(k,2) * (0.5 * u_old_[j+2] - u_old_[j+1] + u_old_[j] - u_old_[j-1] + 0.5 * u_old_[j-2] + u_now_[j+1] - 2 * u_now_[j] + u_now_[j-1]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    j=jmax-2;&lt;br /&gt;
    u_new_[j] = 2 * u_now_[j] - u_old_[j] + 0.5 * pow(k,2) * (-0.5 * u_old_[j] - u_old_[j+1] + u_old_[j] - u_old_[j-1] + 0.5 * u_old_[j-2] + u_now_[j+1] - 2 * u_now_[j] + u_now_[j-1]);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rodrigozferreira</name></author>
	</entry>
</feed>