ملف:Newtroot 1 0 0 0 0 m1.png

من testwiki
اذهب إلى التنقل اذهب إلى البحث
الملف الأصلي (١٬٦٥٥ × ١٬٦٥٥ بكسل حجم الملف: ١٬٠٠٣ كيلوبايت، نوع MIME: image/png)

هذا الملف من ويكيميديا كومنز ويمكن استخدامه بواسطة المشاريع الأخرى. الوصف على صفحة وصف الملف هناك معروض بالأسفل.

نُقِلت من en.wikipedia إلى كُومُنز بواسطة Maksim.

صفحة الوصف الأصلية كانت هنا، تشير جميع أسماء المستخدمين التالية إلى en.wikipedia.

//

هذا العمل هو برمجيات مجانية ، ويمكنك إعادة توزيعه و / أو تعديله تحت شروط الباحث جنو للوثائق الحرة' والتي نشرتها منظمة مؤسسة البرمجيات الحرة ؛ إما الإصدار 2 من الرخصة ، أو أي إصدار لاحق. تم نشر هذا العمل على أمل أن يكون مفيدا ، ولكن دون أي ضمان ؛ حتى دون ضمان ضمني 'رواج 'أو 'الملاءمة لغرض معين. الإصدار 2 و الإصدار 3 من رخصة جنو للوثائق الحرة لمزيد من التفاصيل.


c src code

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define PI 3.1415926535897932
#define TAU (PI * 2)
#define SQ2 1.4142135623730950
#define SQ3 1.7320508075688772
#define PHI 1.6180339887498948

#define SX 1111
#define SY 1111

//////////////////MAKE PRETTY PATTERNS HERE. DPOLY must be POLY differentiated.

#define POLY(z) z *z *z *z *z + (-1)
#define DPOLY(z) 5 * z *z *z *z

// #define POLY(z)  z*z*z*z*z*z*z*z*z + (-1)
// #define DPOLY(z) 9*z*z*z*z*z*z*z*z

// #define POLY(z)  z*z*z*z*z + (-3i) * z*z*z + (-5-2i) * z*z + (3) * z + (1)
// #define DPOLY(z) 5*z*z*z*z + (-3i) * 3*z*z + (-5-2i) * 2*z + (3) * 1

// #define POLY(z)  z*z*z*z*z*z + (2-4i) * z*z*z*z*z + (-1) * z + (2+4i)
// #define DPOLY(z) 6*z*z*z*z*z + (2-4i) * 5*z*z*z*z + (-1) * 1

// #define POLY(z)  z*z*z*z*z + (-1) * z + (-1)
// #define DPOLY(z) 5*z*z*z*z + (-1) * 1

// #define POLY(z)  z*z*z*z*z + (-1) - (cos(__imag__ z)+1i*sin(__imag__ z))*exp(__real__ z)
// #define DPOLY(z) 5*z*z*z*z -         (cos(__imag__z)+1i*sin(__imag__ z))*exp(__real__ z)

#define RSD 1923879

#define BPL ((SX * 3 + 3) & ~3)

void seedr(unsigned int);
unsigned int rnd();
unsigned int rndm(unsigned int);

unsigned char bhdr[54] = {0x42, 0x4D, 0x36, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00,
                          0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
                          0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01,
                          0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                          0x30, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
                          0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

unsigned char po[BPL];

double gr[SY][SX][3];

void drawit();

int main(int a, char **b) {
  FILE *o;
  int x, y, c;
  double t;
  unsigned char *p; // fixed error due to conversion from unsigned char to char

  srand(time(0));
  drawit();

  p = bhdr + 2;
  *p++ = x = 54 + BPL * SY;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p = x >>= 8;
  p = bhdr + 18;
  *p++ = x = SX;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p++ = x = SY;
  *p++ = x >>= 8;
  *p++ = x >>= 8;
  *p = x >>= 8;

  if (!(o = fopen("newtroot.bmp", "wb"))) {
    fclose(o);
    printf("Couldn't open output file.\n");
    return (0);
  }

  fwrite(bhdr, 54, 1, o);

  for (x = SX * 3; x < BPL; ++x)
    po[x] = 0;

  for (y = SY - 1; ~y; --y) {
    for (x = 0, p = po; x < SX; ++x)
      for (c = 2; ~c; --c)
        *p++ = (t = gr[y][x][c]) <= 0 ? 0 : (t >= 1 ? 255 : t * 255);
    fwrite(po, BPL, 1, o);
  }

  fclose(o);
  return (0);
}

void drawit() {
  int x, y, c, n, bn, dx, dy, dz;
  unsigned int m, p;
  _Complex double z, w;
  double f, s;
  seedr(RSD);
  for (y = 0; y < SY; ++y)
    for (x = 0; x < SX; ++x) {
      z = (x * (10. / SX) - 5) - (y * (10. / SY) - 5) * 1i;
      w = POLY(z);

      for (f = s = 1; f > .01 && (__real__(w * ~w)) > .01;
           f *= .95, s = -s, w = POLY(z))
        z = z - w / (DPOLY(z));
      z = z - w / (DPOLY(z));

      for (n = 0; n < 10; ++n)
        z = z - (POLY(z)) / (DPOLY(z));

      z = f * (z * z) / (z * ~z);

      gr[y][x][0] = .5 * f /*+.02*s*f*/ + .24 * (__real__(z)) -
                    (SQ3 * .24) * (__imag__(z));
      gr[y][x][1] = .5 * f /*+.02*s*f*/ + .24 * (__real__(z)) +
                    (SQ3 * .24) * (__imag__(z));
      gr[y][x][2] = .5 * f /*+.02*s*f*/ - .48 * (__real__(z));
    }
}

unsigned int rseeda[624];
int rseedu;

void seedr(unsigned int s) {
  int n;
  rseedu = 624;
  rseeda[0] = s;
  for (n = 1; n < 624; ++n)
    rseeda[n] = s *= 69069u;
}

#define TEMPBLAH(x, y, z)                                                      \
  {                                                                            \
    v = (rseeda[x] & 0x80000000) | (rseeda[y] & 0x7fffffff);                   \
    rseeda[x] = rseeda[z] ^ (v >> 1) ^ (0x9908b0df & (0 - (v & 1)));           \
  }
void gennewr() {
  int n;
  unsigned int v;
  for (n = 0; n < 227; ++n)
    TEMPBLAH(n, n + 1, n + 397);
  for (; n < 623; ++n)
    TEMPBLAH(n, n + 1, n - 227);
  TEMPBLAH(623, 0, 396);
  rseedu = 0;
}
#undef TEMPBLAH

unsigned int rnd() {
  if (rseedu >= 624)
    gennewr();
  unsigned int v = rseeda[rseedu++];
  v ^= v >> 11;
  v ^= (v << 7) & 0x9d2c5680;
  v ^= (v << 15) & 0xefc60000;
  v ^= v >> 18;
  return (v);
}

unsigned int rndm(unsigned int m) {
  unsigned int v, c = (0u - m) / m;
  while ((v = rnd()) / m > c)
    ;
  return (v % m);
}
date/time username edit summary
13:01, 12 November 2005 en:User:129.177.30.18 (Fix bug: change x over [0, SY] to x over [0, SY]. Would only be a problem if SX != SY.)
05:07, 14 November 2004 en:User:Cyp (+Source)
05:06, 14 November 2004 en:User:Cyp (Finding roots with "Newton's method")

سجلُّ الرَّفع الأصيل

Legend: (cur) = this is the current file, (del) = delete this old version, (rev) = revert to this old version. Click on date to download the file or see the image uploaded on that date. * (del) (cur) 05:06, 14 November 2004 . . en:User:Cyp Cyp ( en:User_talk:Cyp Talk) . . 1111x1111 (527065 bytes) (Finding roots with "Newton's method") Further descriptions on en:Newton fractal and de:Newton-Fraktal.

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي١٠:٤٢، ٢٢ يونيو ٢٠٠٧تصغير للنسخة بتاريخ ١٠:٤٢، ٢٢ يونيو ٢٠٠٧١٬٦٥٥ × ١٬٦٥٥ (١٬٠٠٣ كيلوبايت)wikimediacommons>LutzLRecomputed with lower resolution, such that it does not break the thumbnail generation and thus existing uses of this image. Licence, source, ... remains unchanged

لا توجد صفحات تستخدم هذا الملف.