我试图用c生成mandlebrot集,但我得到了一些不正确的输出 . . . 这个代码有什么问题?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "dislin.h"
//generate jula set data for particular constant
static long double const_x;
static long double const_y;
static long double r_lim;
//handle complex number arithmetic
long double julia_x(long double x, long double y){
return x * x - y * y;
}
long double julia_y(long double x, long double y){
return 2 * x * y;
}
long double _abs(long double x, long double y){
return sqrt(x * x + y * y);
}
//method for determining if a point in the plane is in the julia set
int julia_element(float x, float y, int max_steps){
long double iter_x = (long double)x;
long double iter_y = (long double)y;
int i = 0;
while(i < max_steps && _abs(iter_x, iter_y) < r_lim){
long double x_temp = julia_x(iter_x, iter_y);
iter_y = julia_y(iter_x, iter_y) + const_y;
iter_x = julia_x(iter_x, iter_y) + const_x;
i++;
}
return i;
}
int main(void){
//constants for mandlebrot set
const_x = -0.61803398875; //1 - golden ratio
const_y = 0.0;
long double radius = _abs(const_x, const_y);
r_lim = 2; //solves r_lim(r_lim - 1) = radius
static int julia_lim = 1000;
//establish grid size and scale factor
int POINTS = 10000;
long double scale = 0.03;
//store points to be plotted
float * julia_set_x = malloc(POINTS * sizeof(float));
float * julia_set_y = malloc(POINTS * sizeof(float));
int current_x = 0;
int count = 0;
for(int i = 0; i < POINTS; i++){
if(i % 100 == 0){
current_x++;
}
float _x = (float)(-1.5 + current_x * scale);
float _y = (float)(-1.5 + (i % 100) * scale);
if(julia_element(_x, _y, julia_lim) == julia_lim){
julia_set_x[i] = _x;
julia_set_y[i] = _y;
count++;
}else{
julia_set_x[i] = 0.0;
julia_set_y[i] = 0.0;
}
}
//draw julia set
scrmod("revers");
setpag("da4l");
metafl("cons");
disini();
titlin("Julia Set", 1);
titlin("F(Z) = Z*Z - 0.8 + 0.156i", 3);
name("R-axis", "x");
name("I-axis", "y");
qplsca(julia_set_x, julia_set_y, 5 * count);
free(julia_set_x);
free(julia_set_y);
return 0;
}
这是输出
它只与这里的结果具有对称性:
https://en.wikipedia.org/wiki/Julia_set#/media/File:Time_escape_Julia_set_from_coordinate_(phi-2,_0). jpg
能得到一些想法会很棒
K
julia_element这看起来不太对:
long double x_temp = julia_x(iter_x, iter_y);
iter_y = julia_y(iter_x, iter_y) + const_y;
iter_x = julia_x(iter_x, iter_y) + const_x;
你是说
long double x_temp = julia_x(iter_x, iter_y);
iter_y = julia_y(iter_x, iter_y) + const_y;
iter_x = x_temp + const_x;
但是为什么不使用C复数呢?
DISLIN是一个高级别,易于使用的绘图库,支持曲线,条形图,饼图,三维彩色图,曲面,轮廓,和地图显示。支持多种输出格式,如X11的,VGA,PostScript , PDF格式,CGM, HPGL , TIFF和PNG等。绘图采用Perl解释语言 , 支持Python和Java,同时还支持大多数的操作系统。
我正在用C#开发一个加密用户和管理员密码的类项目。为了加密,我使用了< code > triplescryptoserviceprovider 。 在配置应用程序中,用户输入用于加密和解密密码的密钥。我想有一个按钮来生成密钥来帮助用户,但我不知道如何随机生成128位。如何生成128位的密钥?
本文向大家介绍windows中使用C# 调用 C语言生成的dll,包括了windows中使用C# 调用 C语言生成的dll的使用技巧和注意事项,需要的朋友参考一下 首先建立一个C语言源文件test.c 然后下载mingw64,解压,进入到bin目录,查看是否有gcc.exe ,只要下载正确肯定是有的,可以把这个bin目录加入环境变量,就可以在任意地方运行gcc。偷懒的做法是直接把刚才做好的test
我正在做一个C#项目,试图生成一个DocuSign信封。 作为起点,我试图在https://github.com/docusign/eg-01-csharp-jwt-framework.通过DocuSign JWT示例 我转到了控制台应用程序让我转到的URL。https://account-d.docusign.com/oauth/auth?response_type=code 完成该过程后,我确
本文向大家介绍C++ 使用CMake生成构建环境,包括了C++ 使用CMake生成构建环境的使用技巧和注意事项,需要的朋友参考一下 示例 CMake可以从单个项目定义为几乎所有编译器或IDE生成构建环境。以下示例将演示如何将CMake文件添加到跨平台的“ Hello World” C ++代码。 CMake文件始终被命名为“ CMakeLists.txt”,并且应该已经存在于每个项目的根目录中(可
我已经使用BouncyCastle来帮助创建基于RSA的证书,因此接下来的步骤或多或少遵循了创建RSA证书的方法。 (注意,前缀用于来自BouncyCastle的类,用于.NET类) 1生成密钥对:私钥和公钥 如果我可以使用没有私钥的证书,则可以执行以下操作: 我就完蛋了。 当试图设置私钥时会出现问题: