🔵میان پرده: میمون های برنامه نویس🔵
سطح پیچیدگی:⁉️
پیش نیاز: ذهن باز
برای: همه
اما چگونه می توان برنامه تصادفی تولید کرد؟ همه ما می دانیم که هر رشته از صفر ها و یک ها در کامپیوتر می تواند هم داده باشد و هم برنامه. ما همیشه در مورد داده های تصادفی صحبت می کنیم اما آیا به سرتان زده است که به جای تولید داده های تصادفی برای تولید مثلا یک عکس تصادفی(شبیه برفک) یا صدا (نویز) آن را به صورت برنامه ببینیم و به کامپایلر بدهیم (به کامپایلر هر زبانی مثل متلب). حتمن خواهید گفت این کار احمقانه است چون هیچوقت چنین برنامه هایی اجرا نمی شوند. نوشتن برنامه روند ساده ای نیست و نیاز به دقت زیاد دارد و در انتها هم با آن همه دقت ممکن است کدتان پر از خطا باشد. گفتن این حرف مانند این است که انتظار داشته باشیم یک میمون با ضربات تصادفی روی کیبورد شکسپیر را خلق کند. مهم نیست چند بار سعی کند نتیجه ای حاصل نخواهد شد. اما من می گویم یک لحظه تمام پیش فرض هایی که از "نظم" به خورد ذهنمان داده اند را دور بریزید و از آنچه آموخته اید بهره بگیرید: در عمل برنامه های تصادفی خیلی هم بد نیستند!! تمام حرف من این است که به جای باز کردن برنامه نوت پد(notepad) برای میمونتان، برنامه جاوا یا متلب یا هر زبان برنامه نویسی دیگری را که می دانید باز کنید!!!
این ایده ظاهرا احمقانه اولین بار توسط کولموگروف و چایتین مورد بررسی قرار گرفت. آنها می خواستند بدانند احتمال تولید تصادفی برنامه ای که بتواند یک میلیون رقم اول عدد پی را تولید کند چقدر است. تولید تصادفی این همه رقم در برنامه نوت پد(یا هر برنامه تکست ساده دیگری) توسط میمون ها برابر با 1 در 10 به توان یک میلیون است!(فقط اعداد کیبورد را در نظر بگیرید) اما این احتمال برای تولید عدد پی به روش میمون های پشت متلب(!) (یا تولید برنامه تصادفی) بسیار بسیار بزرگتر است این احتمال حداکثر برابر با ا در 10 به توان 100 است.(در نظریه تنها می توان کران بالا برای این احتمال تعیین کرد).
در دنیایی که میمون های پشت کامپیوتر به صورت مداوم برنامه خلق می کنند. تعداد زیادی برنامه های آشغال یا تصادفی تولید می شوند ولی برنامه های زیادی هم تولید می شوند که از قوانین ساده نظم خلق می کنند. شاید باورش برایتان سخت باشد ولی تقریبا تمامی پیچیدگی ها و زیبایی هایی که اطرافتان می بینید از قوانین فراکتال ها و قواعد ریاضی گرفته تا مدل استاندارد فیزیک (جامع ترین نظریه فیزیک تا به امروز که جهان را توضیح می دهد) و شیمی و فیزیک کوانتوم می تواند توسط برنامه های کوچک ساخته شود. دلیل این امر این است که بیشتر قوانین جهان ساده اند!
اگر به این موضوع علاقه مند شده اید یا سوالات زیادی برایتان پیش آمده است، می توانید منابع زیر را بررسی کنید.
[1] Lloyd, Seth. Programming the universe: a quantum computer scientist takes on the cosmos. Vintage Books, 2006.
[2] Chaitin, G. J. "Meta Math! The Quest for Omega." arXiv preprint math/0404335 (2004)
[3] Calude, Christian. "Randomness & Complexity, from Leibniz to Chaitin." (2007).
#Complexity #Infinite_Monkey_Theorem #Chaitin #Kolmogrov #Solomonof #Algorithmic_Probability
@MatlabTips
سطح پیچیدگی:⁉️
پیش نیاز: ذهن باز
برای: همه
اما چگونه می توان برنامه تصادفی تولید کرد؟ همه ما می دانیم که هر رشته از صفر ها و یک ها در کامپیوتر می تواند هم داده باشد و هم برنامه. ما همیشه در مورد داده های تصادفی صحبت می کنیم اما آیا به سرتان زده است که به جای تولید داده های تصادفی برای تولید مثلا یک عکس تصادفی(شبیه برفک) یا صدا (نویز) آن را به صورت برنامه ببینیم و به کامپایلر بدهیم (به کامپایلر هر زبانی مثل متلب). حتمن خواهید گفت این کار احمقانه است چون هیچوقت چنین برنامه هایی اجرا نمی شوند. نوشتن برنامه روند ساده ای نیست و نیاز به دقت زیاد دارد و در انتها هم با آن همه دقت ممکن است کدتان پر از خطا باشد. گفتن این حرف مانند این است که انتظار داشته باشیم یک میمون با ضربات تصادفی روی کیبورد شکسپیر را خلق کند. مهم نیست چند بار سعی کند نتیجه ای حاصل نخواهد شد. اما من می گویم یک لحظه تمام پیش فرض هایی که از "نظم" به خورد ذهنمان داده اند را دور بریزید و از آنچه آموخته اید بهره بگیرید: در عمل برنامه های تصادفی خیلی هم بد نیستند!! تمام حرف من این است که به جای باز کردن برنامه نوت پد(notepad) برای میمونتان، برنامه جاوا یا متلب یا هر زبان برنامه نویسی دیگری را که می دانید باز کنید!!!
این ایده ظاهرا احمقانه اولین بار توسط کولموگروف و چایتین مورد بررسی قرار گرفت. آنها می خواستند بدانند احتمال تولید تصادفی برنامه ای که بتواند یک میلیون رقم اول عدد پی را تولید کند چقدر است. تولید تصادفی این همه رقم در برنامه نوت پد(یا هر برنامه تکست ساده دیگری) توسط میمون ها برابر با 1 در 10 به توان یک میلیون است!(فقط اعداد کیبورد را در نظر بگیرید) اما این احتمال برای تولید عدد پی به روش میمون های پشت متلب(!) (یا تولید برنامه تصادفی) بسیار بسیار بزرگتر است این احتمال حداکثر برابر با ا در 10 به توان 100 است.(در نظریه تنها می توان کران بالا برای این احتمال تعیین کرد).
در دنیایی که میمون های پشت کامپیوتر به صورت مداوم برنامه خلق می کنند. تعداد زیادی برنامه های آشغال یا تصادفی تولید می شوند ولی برنامه های زیادی هم تولید می شوند که از قوانین ساده نظم خلق می کنند. شاید باورش برایتان سخت باشد ولی تقریبا تمامی پیچیدگی ها و زیبایی هایی که اطرافتان می بینید از قوانین فراکتال ها و قواعد ریاضی گرفته تا مدل استاندارد فیزیک (جامع ترین نظریه فیزیک تا به امروز که جهان را توضیح می دهد) و شیمی و فیزیک کوانتوم می تواند توسط برنامه های کوچک ساخته شود. دلیل این امر این است که بیشتر قوانین جهان ساده اند!
اگر به این موضوع علاقه مند شده اید یا سوالات زیادی برایتان پیش آمده است، می توانید منابع زیر را بررسی کنید.
[1] Lloyd, Seth. Programming the universe: a quantum computer scientist takes on the cosmos. Vintage Books, 2006.
[2] Chaitin, G. J. "Meta Math! The Quest for Omega." arXiv preprint math/0404335 (2004)
[3] Calude, Christian. "Randomness & Complexity, from Leibniz to Chaitin." (2007).
#Complexity #Infinite_Monkey_Theorem #Chaitin #Kolmogrov #Solomonof #Algorithmic_Probability
@MatlabTips
🔵دکی و آقای ریختنشتاین🔵
این متلبی که تو دست شماست، یه نسخه کرک شده است. تو این نسخه شما به خیلی از تولباکس ها دسترسی دارید. اما تو کشورایی که قانون وجود داره این شکلی نیست که اشخاص قبل از اینکه "مث ورک" نسخه جدید رو بده بیرون، نرم افزار رو تو گنجه داشته باشن. یه نسخه دانشجویی داره که خیلی از تولباکسها توش نیست و ارزون تره تا دانشجوها بتونن بخرن. حالا بشنوید این حکایت دردناک(داستان واقعی است و برای مصلحت از اسم مستعار استفاده شده است) :
شخصیت اصلی داستان: آقای ریختنشتاین
مدرک: دکتری مخابرات دانشگاه امام حسین
موقعیت: مدیر بخش یکی از شرکت های زیرمجموعه ... (العیاذ بالله)
آقای ریختنشتاین که تازه داشت دکتری مخابرات سیستم را میگذراند، مدیر افرادی بود که به لحاظ نبوغ در درجه بالایی بودند. حتی به تازگی آقای لتاخشیست که به آن دکی هم میگفتند زیر دست آقای ریختنشتاین کار میکرد. دکی یک اصفهانی نابغه بود و از تمامی اساتید خود در دانشگاه علم و صنعت یک سر و گردن بالاتر بود.
آقای ریختنشتاین دکی را استثمار کرده بود. برعکس آقای ریختنشتاین، دکی بیشتر وقت خود را صرف مطالعه کتابهایی روز دنیا در زمینه مخابرات دیجیتال، تخمین و ... را میکرد و کمتر وقت میکرد کتب دعا و احادیث معتبره را مرور کند. در عوض آقای ریختنشتاین "اسکرین سیور" صفحه نمایش کامپیوترش نیز احادیثی بود که ادعا میکرد مستحکم است و صحت و سقم آن با نرمافزار تشخیص جعل حدیث تایید شده است.
اصولا کسی که در حال حاضر دانشجوی دکتری مخابرات سیستم باشد باید نرم افزارهای مربوطه که در راس آن متلب است، مسلط باشد. اما آقای ریختنشتاین فرق "=" با "==" را هم نمیدانست و دومی را غلط میپنداشت و یا علامت "نقطه" در تعریف یک فیلد برای استراکچرها در متلب به عنوان ضرب نقطه ای تلقی میکرد.
دکی بعد از اینکه کارها را انجام میداد باید به آقای ریختنشتاین هم توضیح میداد و از این جهت آقای ریختنشتاین به عنوان یک نیروی اضافی بود، اما مدیر بود.
چیزی که باعث میشود آقای ریختنشتاین را هیچوقت فراموش نکنم، نحوه استدلال او بود در باب مسائل مختلف. اتفاقا از او در مورد شرعی بودن مسئله "کرک" متلب هم پرسیده شده بود و در حالی که تسبیحش را به هوا میچرخاند جواب داده بود: " از آنجایی که میخواهیم علیه دشمن از این نرم افزار استفاده کنیم مسئله ای نیست".
من حتم دارم تنها کاری که آقای ریختنشتاین میتواند انجام دهد این است که لباس سبز بپوشد و در مترو تهران افراد مسن و کم توان را هدایت کند که مسیرشان را بدرستی پیدا کنند. اما آقای ریختنشتاین با تمام تواناییهایش مدیر دکی است. او روح دکی را تسخیر کرده است. آقای ریختنشتاین اعتقاد دارد که میتواند میشل بسازد(او کلمه missile بخوانید میسایل به معنی موشک را میشل تلفط میکند) و بر دشمن فرضی پیروز شود. اما من معتقدم که آقای ریختنشتاین با تمام تواناییهایش روح دکی را تسخیر کرده است.
@MatlabTips
این متلبی که تو دست شماست، یه نسخه کرک شده است. تو این نسخه شما به خیلی از تولباکس ها دسترسی دارید. اما تو کشورایی که قانون وجود داره این شکلی نیست که اشخاص قبل از اینکه "مث ورک" نسخه جدید رو بده بیرون، نرم افزار رو تو گنجه داشته باشن. یه نسخه دانشجویی داره که خیلی از تولباکسها توش نیست و ارزون تره تا دانشجوها بتونن بخرن. حالا بشنوید این حکایت دردناک(داستان واقعی است و برای مصلحت از اسم مستعار استفاده شده است) :
شخصیت اصلی داستان: آقای ریختنشتاین
مدرک: دکتری مخابرات دانشگاه امام حسین
موقعیت: مدیر بخش یکی از شرکت های زیرمجموعه ... (العیاذ بالله)
آقای ریختنشتاین که تازه داشت دکتری مخابرات سیستم را میگذراند، مدیر افرادی بود که به لحاظ نبوغ در درجه بالایی بودند. حتی به تازگی آقای لتاخشیست که به آن دکی هم میگفتند زیر دست آقای ریختنشتاین کار میکرد. دکی یک اصفهانی نابغه بود و از تمامی اساتید خود در دانشگاه علم و صنعت یک سر و گردن بالاتر بود.
آقای ریختنشتاین دکی را استثمار کرده بود. برعکس آقای ریختنشتاین، دکی بیشتر وقت خود را صرف مطالعه کتابهایی روز دنیا در زمینه مخابرات دیجیتال، تخمین و ... را میکرد و کمتر وقت میکرد کتب دعا و احادیث معتبره را مرور کند. در عوض آقای ریختنشتاین "اسکرین سیور" صفحه نمایش کامپیوترش نیز احادیثی بود که ادعا میکرد مستحکم است و صحت و سقم آن با نرمافزار تشخیص جعل حدیث تایید شده است.
اصولا کسی که در حال حاضر دانشجوی دکتری مخابرات سیستم باشد باید نرم افزارهای مربوطه که در راس آن متلب است، مسلط باشد. اما آقای ریختنشتاین فرق "=" با "==" را هم نمیدانست و دومی را غلط میپنداشت و یا علامت "نقطه" در تعریف یک فیلد برای استراکچرها در متلب به عنوان ضرب نقطه ای تلقی میکرد.
دکی بعد از اینکه کارها را انجام میداد باید به آقای ریختنشتاین هم توضیح میداد و از این جهت آقای ریختنشتاین به عنوان یک نیروی اضافی بود، اما مدیر بود.
چیزی که باعث میشود آقای ریختنشتاین را هیچوقت فراموش نکنم، نحوه استدلال او بود در باب مسائل مختلف. اتفاقا از او در مورد شرعی بودن مسئله "کرک" متلب هم پرسیده شده بود و در حالی که تسبیحش را به هوا میچرخاند جواب داده بود: " از آنجایی که میخواهیم علیه دشمن از این نرم افزار استفاده کنیم مسئله ای نیست".
من حتم دارم تنها کاری که آقای ریختنشتاین میتواند انجام دهد این است که لباس سبز بپوشد و در مترو تهران افراد مسن و کم توان را هدایت کند که مسیرشان را بدرستی پیدا کنند. اما آقای ریختنشتاین با تمام تواناییهایش مدیر دکی است. او روح دکی را تسخیر کرده است. آقای ریختنشتاین اعتقاد دارد که میتواند میشل بسازد(او کلمه missile بخوانید میسایل به معنی موشک را میشل تلفط میکند) و بر دشمن فرضی پیروز شود. اما من معتقدم که آقای ریختنشتاین با تمام تواناییهایش روح دکی را تسخیر کرده است.
@MatlabTips
🔵رسم نمودار با برنامه نویسی سمبلیک🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
یکی از مزایای استفاده از جعبه ابزار برنامه نویسی سمبولیک استفاده از آن برای رسم انواع و اقسام نمودار ها است. نمودار هایی که رسم آن ها به صورت عادی قدری دشوارتر است. یکی از این توابع ezplot است که می توان نمودار های ساده تا پیچیده را با آن رسم کرد.
مثلا تابع y=x^2 را در بازه ی پیش فرض [-2pi 2pi] را می توان به صورت زیر رسم کرد:
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
یکی از مزایای استفاده از جعبه ابزار برنامه نویسی سمبولیک استفاده از آن برای رسم انواع و اقسام نمودار ها است. نمودار هایی که رسم آن ها به صورت عادی قدری دشوارتر است. یکی از این توابع ezplot است که می توان نمودار های ساده تا پیچیده را با آن رسم کرد.
مثلا تابع y=x^2 را در بازه ی پیش فرض [-2pi 2pi] را می توان به صورت زیر رسم کرد:
ezplot('x^2')
توابع پیچیده تر مانند x^2-y^4=0 را هم می توان رسم کرد. پیش فرض این است که یک طرف معادله برابر با صفر باشد.
ezplot('x^2-y^4')
همچنین می توان مقاطع مخروطی مختلفی رسم کرد. تابع زیر که به تابع pasha معروف است یکی از این نمونه هاست:
ezplot('x^2-x*y-x+1*y^2-4*y+2',[-10 10],[-10 10])
ممکن است در نسخه 2015 شما باخطای گرافیک مواجه شوید و برنامه متلب بسته شود. دلیل این امر این است که Mathwork تابع ezplot را می خواهد از رده خارج کند و به جای آن تابع fplot را قرار دهد معمولا زمانی که یک عملکرد deprecated (مکروه!!) می شود می توان از آن استفاده کرد ولی ممکن است با خطا هم مواجه شوید. به زودی روش استفاده از fplot توضیح داده خواهد شد.
#ezplot #Symbolic_Programming
@MatlabTips
#ezplot #Symbolic_Programming
@MatlabTips
🔵رسم نمودار با برنامه نویسی سمبلیک(ادامه)🔵
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
تابع fplot دیگر گزینه ای است که در اختیار دارید و با آن می توانید توابع پارامتریک را رسم کنید. اما قبل از آن به یک نمونه ساده توجه کنید:
که به صورت زیر می شود:
سطح پیچیدگی:🌕🌑🌑🌑🌑
پیشنیاز: برنامه نویسی مقدماتی
برای: متوسط و پیشرفته
تابع fplot دیگر گزینه ای است که در اختیار دارید و با آن می توانید توابع پارامتریک را رسم کنید. اما قبل از آن به یک نمونه ساده توجه کنید:
fplot(@(x) sin(x))
که به صورت زیر می شود:
همچنین می توانید به صورت زیر نمودار پارامتری x=cos(3t) و y=sin(2t) را رسم کنید:
که نمودار آن به صورت زیر است:
xt = @(t) cos(3*t);
yt = @(t) sin(2*t);
fplot(xt,yt)
که نمودار آن به صورت زیر است:
همچنین می توانید توابع چند قسمتی را به راحتی رسم کنید:
و نمودار آن به صورت زیر است:
fplot(@(x) exp(x),[-3 0],'b')
hold on
fplot(@(x) cos(x),[0 3],'b')
hold off
grid on
و نمودار آن به صورت زیر است:
🔵نوع جدیدی از علم (ادامه)🔵
"...reaching out to embrace the random."
"Maynard James Keenan"
کاوش جهان محاسباتی
ولفرام تاکید می کند که مدل های محاسباتی ساده می بایست به صورت تک به تک مطالعه و رفتار های آن ها مستند شود. این مستند سازی باید مانند رشته هایی چون فیزیک و شیمی ادامه پیدا کند. همچنین او تاکید می کند که می توان از خود کامپیوتر ها برای مطالعه محاسبه استفاده کرد. زیرا در نهایت مغز انسان هم یک دستگاه محاسباتی است.
اصل کاهش ناپذیری محاسباتی (computational irreducibility) پیشنهاد می دهد که این پیچیدگی ها به روال های ساده تری قابل شکستن نیستند. یک مورد آن قاعده 30 است که اوتوماتای سلولی است که رفتار آشوبی و پیچیده از خود نشان می دهد. شکل آن به صورت زیر است:
"...reaching out to embrace the random."
"Maynard James Keenan"
کاوش جهان محاسباتی
ولفرام تاکید می کند که مدل های محاسباتی ساده می بایست به صورت تک به تک مطالعه و رفتار های آن ها مستند شود. این مستند سازی باید مانند رشته هایی چون فیزیک و شیمی ادامه پیدا کند. همچنین او تاکید می کند که می توان از خود کامپیوتر ها برای مطالعه محاسبه استفاده کرد. زیرا در نهایت مغز انسان هم یک دستگاه محاسباتی است.
اصل کاهش ناپذیری محاسباتی (computational irreducibility) پیشنهاد می دهد که این پیچیدگی ها به روال های ساده تری قابل شکستن نیستند. یک مورد آن قاعده 30 است که اوتوماتای سلولی است که رفتار آشوبی و پیچیده از خود نشان می دهد. شکل آن به صورت زیر است:
این الگو در طبیعت هم یافته شده است. یکی از موارد آن صدفی به نام Conus textile است که شکل آن به صورت زیر است: