Enviado em 10/11/2019 - 19:29h
Tenho este programinha simples em C para plotar o Mandelbrot, o diferencial é que ele abre o XMGrace e mostra o gráfico sendo feito em tempo real./*
Autor: Ismael Felipe Ferreira dos Santos
Instituto de Fisica,
Universidade Federal de Alagoas
E-mail: ismaellxd@gmail.com
Copyright © 2019 MIT LICENCE
GIT: https://ismaeldamiao.blogspot.com/fisicacomputacional
Objetivo: Gerar os pontos no plano complexo que pertencem ao congunto de
Mandelbrot.
Escrito em: 14 de agosto de 2019
Compilar: g++ Mandelbrot_grace.c -lgrace_np -o Mandelbrot && ./Mandelbrot
*/
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<grace_np.h>
#include<complex.h>
#define TRUE 1
#define FALSE 0
#ifndef EXIT_SUCCESS
#define EXIT_SUCCESS 0
#endif
#ifndef EXIT_FAILURE
#define EXIT_FAILURE -1
#endif
void my_error_function(const char *msg)
{
fprintf(stderr, "library message: \"%s\"\n", msg);
}
int main(){
double _Complex PontoC = -2.0 + -1.0 * I,
sequencia = 0.0 + 0.0 * I;
double Inclemento = 1.0e-3, i, j;
int k, pertence = TRUE, interacoes = 500;
if (GraceOpen(2048) == -1) {
fprintf(stderr, "Can't run Grace. \n");
exit(EXIT_FAILURE);
}
GracePrintf("world xmax 0.5");
GracePrintf("world xmin -2");
GracePrintf("world ymax 1");
GracePrintf("world ymin -1");
GracePrintf("s0 on");
GracePrintf("s0 symbol 1");
GracePrintf("s0 symbol size 0.01");
GracePrintf("s0 symbol fill pattern 0");
for(i = -2.0; i <= 1.0; i += Inclemento){
for(j = -1.0; j <= 1.0; j += Inclemento){
/* Testar se nos primeiros interacoes termos da sequencia ela indica se
ira divergir*/
for(k = 1; k <= interacoes; ++k){
sequencia = cpow(sequencia, 2.0) + PontoC;
if(cabs(sequencia) > 2.0){
pertence = FALSE;/*A sequencia divergiu*/
break;
}
}
/*Caso nao tenha divergido, escreva o ponto no arquivo*/
if(pertence){
GracePrintf("g0.s0 point %f, %f", creal(PontoC), cimag(PontoC));
GracePrintf("redraw");
sleep(1);
}
PontoC += Inclemento * I; /* Teste com outro ponto*/
sequencia = 0.0 + 0.0 * I; /* Zere a sequencia*/
pertence = TRUE; /* A sequencia ainda nao divergiu*/
}
PontoC += Inclemento - 2.0 * cimag(PontoC) * I;/* Teste com outro
ponto*/
}
GracePrintf("saveall \"Mandelbrot.agr\"");
GraceClose();
exit(EXIT_SUCCESS);
}
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Pra quem contribui com artigos e dicas (4)
Meu PC perde o boot de várias distros Linux após ficar desligado (1)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (25)