PDA

View Full Version : محاسبه ( sin(x با استفاده از درخت در c#



innocent_maill
جمعه 08 شهریور 1387, 15:45 عصر
من می خوام با استفاده از درخت های دودویی تابع ( sin(x رو در سی شارپ محاسبه کنم. نمی دونم ساختار درخت به چه شکلی بايد باشه. لطفا راهنماییم کنید.

اَرژنگ
جمعه 08 شهریور 1387, 19:17 عصر
من می خوام با استفاده از درخت های دودویی تابع ( sin(x رو در سی شارپ محاسبه کنم. نمی دونم ساختار درخت به چه شکلی بايد باشه. لطفا راهنماییم کنید.
لطفا یک منبع یا یک توضیح در مورد این روش بدید

innocent_maill
چهارشنبه 13 شهریور 1387, 16:26 عصر
بعضی از توابع رياضی رو می توان با استفاده از درختها محاسبه کرد. من این کار رو می خوام با ژنتیک پروگرمینگ انجام بدم. ولی نمی دونم ساختار درخت تابع ( sin(x بايد به چه شکلی باشه. لطفا راهنماییم کنيد. آیا برای تابع ( sin(x باید از بسط تیلور استفاده کنم؟ نحوه بیان درخت در C# چگونه هست؟
http://barnamenevis.org/forum/C:\a.jpg

اَرژنگ
چهارشنبه 13 شهریور 1387, 16:59 عصر
بعضی از توابع رياضی رو می توان با استفاده از درختها محاسبه کرد.
http://barnamenevis.org/forum/C:%5Ca.jpg
یک مثال بدید.


من این کار رو می خوام با ژنتیک پروگرمینگ انجام بدم. ولی نمی دونم ساختار درخت تابع ( sin(x بايد به چه شکلی باشه.

http://barnamenevis.org/forum/c:%5Ca.jpg

از چه لحاظ چه شکلی باشد؟ حداقل میشه ۴ نوع مختلف تعریفش کرد، یک مثال ، یک لینک یا هرچی که گواهی بر این باشد که چیزهایی که میگید معتبر است بفرستید.




لطفا راهنماییم کنيد. آیا برای تابع ( sin(x باید از بسط تیلور استفاده کنم؟ نحوه بیان درخت در C# چگونه هست؟
http://barnamenevis.org/forum/C:%5Ca.jpg

تا جایی که میبینم توضیح ندادید که درخت و سینوس چه ربطی به هم دارند. اگر واقعا میخواهید در این بحث ادامد بدند یکمی زحمت بدید و توضیح قانعتری بفرستید.

innocent_maill
شنبه 16 شهریور 1387, 19:16 عصر
مشکلم حل شد. ممنون.
همانطور که می دونيد ژنتيک پروگرمینگ روشی برای تولید مدل برای محاسبه و ارزیابی توابع با استفاده از بازنمایی درخت است. فرض کنید که ما برای محاسبه تابع سینوس بسط تیلور را نمی دانیم.پس با یک سری عملیات پایه ریاضی مثل جمع و تفریق و ضرب و تقسیم سعی می کنیم مقدار تابع ( sin(x را محاسبه کنیم. برای اینکار از بازنمایی درخت استفاده می کنیم. به این صورت که در داخل نودهای داخلی درخت عملگرهای ریاضی و در نود های برگ مقدار x یا اعداد 1 تا 9 قرار می گیرد و با تعریف یک سری عملگر های مخصوص ژنتیکی مثل بازترکیبی و جهش و در طی نسلهای متوالی سعی می کنیم درخت را تکامل داده و به درخت بهینه برای محاسبه این تابع برسیم.
الگوريتم های تکاملی یکی از دروس اصلی دوره کارشناسی ارشد هوش مصنوعی می باشد و برای فهیمدن این کاربرد الگوریتم های تکاملی ، شما باید در زمینه الگوریتم های ژنتیک و ژنتیک پروگرمینگ مطالعه کنید.

innocent_maill
شنبه 16 شهریور 1387, 19:22 عصر
البته محاسبه توابع ریاضی یکی از کاربردهای ژنتیک پروگرمینگ می باشد. از کاربردهای دیگر آن می توان به دسته بندی داده ها و پیش بینی و .. اشاره کرد

Xcalivorse
شنبه 16 شهریور 1387, 19:50 عصر
وقتی بوسیله دیفرانسیل میشه این کارو کرد چه نیازی به درخت دودویی وجود داره ؟

اَرژنگ
یک شنبه 17 شهریور 1387, 03:10 صبح
وقتی بوسیله دیفرانسیل میشه این کارو کرد چه نیازی به درخت دودویی وجود داره ؟
نیازی نیست ولی کار باحالیه.
از نظر تئوری جالبه، یکی هم اینکه یکی تکنیکهایه جدید یاد میگیره و برایه کارهایه دیگر استفاده میکند.

اَرژنگ
یک شنبه 17 شهریور 1387, 03:20 صبح
البته محاسبه توابع ریاضی یکی از کاربردهای ژنتیک پروگرمینگ می باشد. از کاربردهای دیگر آن می توان به دسته بندی داده ها و پیش بینی و .. اشاره کرد


مشکلم حل شد. ممنون.
همانطور که می دونيد ژنتيک پروگرمینگ روشی برای تولید مدل برای محاسبه و ارزیابی توابع با استفاده از بازنمایی درخت است. فرض کنید که ما برای محاسبه تابع سینوس بسط تیلور را نمی دانیم.پس با یک سری عملیات پایه ریاضی مثل جمع و تفریق و ضرب و تقسیم سعی می کنیم مقدار تابع ( sin(x را محاسبه کنیم. برای اینکار از بازنمایی درخت استفاده می کنیم. به این صورت که در داخل نودهای داخلی درخت عملگرهای ریاضی و در نود های برگ مقدار x یا اعداد 1 تا 9 قرار می گیرد و با تعریف یک سری عملگر های مخصوص ژنتیکی مثل بازترکیبی و جهش و در طی نسلهای متوالی سعی می کنیم درخت را تکامل داده و به درخت بهینه برای محاسبه این تابع برسیم.
الگوريتم های تکاملی یکی از دروس اصلی دوره کارشناسی ارشد هوش مصنوعی می باشد و برای فهیمدن این کاربرد الگوریتم های تکاملی ، شما باید در زمینه الگوریتم های ژنتیک و ژنتیک پروگرمینگ مطالعه کنید.
پس با اینکار که تمام فرمولهایه متفاوت را لیست میکنیم و اینکه هر کدام به جواب نزدیکتر است را ادامه میدیم.

innocent_maill
سه شنبه 19 شهریور 1387, 09:53 صبح
وقتی بوسیله دیفرانسیل میشه این کارو کرد چه نیازی به درخت دودویی وجود داره ؟

درسته که در این کار برد فرمول ریاضی برای محاسبه توابع ریاضی وجود دارد ولی در یک کاربرد دیگر فرض کنید يک دیتابیس بزرگ از داده ها داریم و می خواهیم داده ها را در چند کلاس دسته بندی کنیم برای اینکار نیاز به ابزاری داریم که مدلی را برای دسته بندی داده ها ارائه دهد بطوری که در صورت ورود داده جدید به دیتابیس قادر باشد کلاس داده جدید ر ا با توجه به مدل ، پیش گویی کند.

innocent_maill
سه شنبه 19 شهریور 1387, 09:53 صبح
برای ساخت این مدل روشهای مختلفی مثل درخت تصمیم گیری و ژنتیک پروگرمینگ و.. برای دسته بندی وجود دارد که هرکدام مزایا و معایبی دارند. از معایب درخت تصمیم گیری این است که در صورت ورود داده جدید امکان دارد مجبور به ساخت مجدد درخت باشیم که کار زمانبری است ولی با توجه به اینکه ژنتیک پروگرمینگ امکان پردازش موازی وجود دارد با اعمال چند عملگر ژنتیکی مثل Crossover و mutation می توان شایستگی درخت را افزایش داد. این کاربرد از ژنتیک پروگرمینگ بسیار مورد توجه دانشمندان data mining است با توجه به رشد زیاد اطلاعات در حال حاضر دسته بندی داده ها امری ضروری به نظر می رسد.

اَرژنگ
سه شنبه 19 شهریور 1387, 10:23 صبح
برای ساخت این مدل روشهای مختلفی مثل درخت تصمیم گیری و ژنتیک پروگرمینگ و.. برای دسته بندی وجود دارد که هرکدام مزایا و معایبی دارند. از معایب درخت تصمیم گیری این است که در صورت ورود داده جدید امکان دارد مجبور به ساخت مجدد درخت باشیم که کار زمانبری است ولی با توجه به اینکه ژنتیک پروگرمینگ امکان پردازش موازی وجود دارد با اعمال چند عملگر ژنتیکی مثل Crossover و mutation می توان شایستگی درخت را افزایش داد. این کاربرد از ژنتیک پروگرمینگ بسیار مورد توجه دانشمندان data mining است با توجه به رشد زیاد اطلاعات در حال حاضر دسته بندی داده ها امری ضروری به نظر می رسد.

میشه یک لینک به یک مقاله معتبر یا یک مثال با کد که کار میکند در این زمینه بفرستید؟

Legend M.A.R
پنج شنبه 17 دی 1388, 12:42 عصر
ممکنه الگوریتم خودتو اینجا قرار بدی؟