صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 50

نام تاپیک: ارزش نرم افزاری که معادلات را حل کند ... !؟

  1. #1

    ارزش نرم افزاری که معادلات را حل کند ... !؟

    سلام دوستان
    من برنامه ای نوشتم ( در حال نوشتن هستم ) که میتونه معادلات ( فعلا معدلات درجه یک ) رو حل کنه ...
    نکته جالب برنامه اینه که فقط کافیه که معادله مورد نظر رو به صورت یک رشته به برنامه بدید و سایر کارها و محاسبه مقدار X به عهده برنامه هست ...
    میخواستم بدونم که چنین برنامه ای میتونه ارزشمند باشه ؟
    آیا امیدی هست که چنین برنامه ای رو در مثلا در جشنواره خوارزمی شرکت بدم ؟

    اگر کسی نظرش رو بگه ، خیلی کمکم کرده ...
    آیا ارزش داره که من برنامه رو ادامه بدم ...
    درضمن : در برنامه امکانات دیگه ای هم هست ، مثلا محاسبه جمع ، ضرب ، تفریق ، دترمینان و معکوس ماتریسهای 2*2 _ تبدیل اعداد اعشاری به کسر و بلعکس _ انجام محاسبات آنالیز ، احتمالات و فاکتوریل _ انجام محاسبات مربوط به تصاعد و حل چند مسئله و چند محاسبه دیگه ...
    درواقع این یک نرم افزار برای محاسبات بزرگ هست ...
    آیا میشه روی همچین برنامه ای حساب کرد ؟

    با تشکر از همگی ...
    موفق و پیروز باشید ...

  2. #2
    من خیلی اطلاعی ندارم از اینکه مثلا سطح خوارزمی چجوریه
    ولی به نظر میاد که چیزی که خیلی مهمه اینه که شما توی چه سطحی هستید.
    مثلا اگه یه دانش آموزید که بسیار عالیه. مثلا من کسی می شناختم که برنامه ای نوشت که مشتق می گرفت و تونست توی خوارزمی رتبه بیاره.

    اگر هم دانشجوی کامپیوترید به نظرم کار جالبیه و حتما توش چیز یاد می گیرید ولی اینکه چقدر این چیز ارزش داره و آیا میتونید کار بهتری انجام دهید نمی دونم.ولی از وت تلف کردن بسیار بسیار بهتره !!!

    ولی یه چیز باید بگم : خود مواردی که مطرح کردید خیلی جالب نیست. مثلا محاسبات روی ماتریس های 2*2 که این حرفها را نداره و ارزش زیادی نداره ولی اگه امکان بدید که بعد ماتریس آزاد باشه و البته الگوریتم های سریعی مثل الگوریتم های matlab را بکار ببرید ارزشمند تر میشه.

    کلا به نظرم اگر کارهای جالب تر و مهم تر به همراه interface زیبا و خلاقیت را چاشنی کار کنید و البته مسائل حل نشده را (مثل مشتق که گفتم) در اون بیارید کار جالبی می تونه باشه.
    موفق باشید

  3. #3
    سلام دوست عزیز ...
    ممنون از این که نظر دادید ...
    ولی به نظر میاد که چیزی که خیلی مهمه اینه که شما توی چه سطحی هستید.
    مثلا اگه یه دانش آموزید که بسیار عالیه. مثلا من کسی می شناختم که برنامه ای نوشت که مشتق می گرفت و تونست توی خوارزمی رتبه بیاره.
    من در همون سطحی هستم که گفتید ...
    ولی یه چیز باید بگم : خود مواردی که مطرح کردید خیلی جالب نیست. مثلا محاسبات روی ماتریس های 2*2 که این حرفها را نداره و ارزش زیادی نداره ولی اگه امکان بدید که بعد ماتریس آزاد باشه و البته الگوریتم های سریعی مثل الگوریتم های matlab را بکار ببرید ارزشمند تر میشه.
    درسته ...
    من برای این برنامه چند قسمت گذاشتم :
    1. کار با ماتریسها ( شامل محاسباتی مثل ضرب ، جمع ، تفریق و معکوس و دترمینان و حل معادلات ماتریسی ( پیدا کردن ماتریس مجهول ) و ... )
    2. تبدیل اعداد اعشاری به کسر ( شاید این قسمت رو برداشتم ، چون زیاد سخت نیست )
    3. آنالیز و احتمالات و فاکتوریل
    4. تصاعد ( حسابی / هندسی ) ، شامل پیدا کردن جملات مجهول ، درج واسطه ها و پیدا کردن مجموع جملات و ...
    5. معادلات درجه یک و دو

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

    در قسمت معادلات هم دارم روی معادلات درجه 2 کار میکنم ، در این قسمت هم مثل قسمت بالا ، ورودی فقط یک مقدار به صورت رشته است ...

    مورد بعدی که قصد دارم روش کار کنم ولی مطمئن نیستم ، کار با توابع و رسم اونها هست ... و همین طور رسم ماتریسهای شبکه ( یه خورده سخت میشه )

    نکته مهم : تمام توابع مورد استفاده در این برنامه رو خودم دارم مینویسم و از جایی بر نداشتم ...

    به هر حال کمک زیادی بهم کردید ...
    ممنون و موفق باشید ...

  4. #4
    کاربر دائمی آواتار Microsoft.net
    تاریخ عضویت
    آبان 1382
    محل زندگی
    مشهد
    پست
    584
    البته یه چیز دیگه ای که ارزش داره اینه که از چه الگوریتم هایی استفاده میکنی مثلا می دونی که الگوریتمهای محاسباتی روی ماتریسهای آزاد در ابعداد بزرگ خیلی زمانبره و اگه برنامت از مثلا الگوریتم استراسن که سریعترین روش شناخته شده فعلی است استفاده کنه خوب خیلی کاره ارزش داره در موارد دیگه هم به همین صورت ...

  5. #5
    نکته مهم : تمام توابع مورد استفاده در این برنامه رو خودم دارم مینویسم و از جایی بر نداشتم ...
    محمود جان، عملا این کار چندان فایده ای نداره! بهتره که تا جایی که میتونی از توابع نوشته شده موجود که اعتبار بیشتری دارن استفاده بشه. اینجوری هم سریعتر پیش میری و هم تمرکزت بر روی این هست که برنامه ات متمایز بشه و هم باگ کمتری خواهی داشت.

  6. #6
    محمود جان، عملا این کار چندان فایده ای نداره! بهتره که تا جایی که میتونی از توابع نوشته شده موجود که اعتبار بیشتری دارن استفاده بشه. اینجوری هم سریعتر پیش میری و هم تمرکزت بر روی این هست که برنامه ات متمایز بشه و هم باگ کمتری خواهی داشت.
    به نظرتون اگعه خودم بنویسم نمیتونم بیشتر روش مانور بدم ، مثلا دستکاریش راحتتره ، اگه یه کد آماده بردارم ، ممکنه جاییش رو نفهمم یا تقریبا اون چیزی که میخوام نباشه ، اون موقع توی بررسی کد ممکنه به مشکل بر بخورم ...
    یه چیز دیگه : اگه این برنامه رو در جشنواره شرکت بدم ، بعد از دیدن برنامه ، سورس اون رو ازم نمیخوان ؟ یا مثلا نمی پرسن که روش چیه یا ...
    اگه این طور باشه بهتر می تونم توضیح بدم ... ، این طور نیست ؟ ( ولی سعی می کنم از کدهای آماده هم در برخی مواقع استفاده کنم ) ...
    ولی فکر نکم سورس چنین توابع یا برنامه هایی توی اینترنت یا ... باشه ...
    من الان تابعی که برای حل معادله درجه یک نوشتم حدود 400 خط هست ... ( هنوز کامل کامل نیست ! )
    فکر نکنم چنین برنامه ای رو ( اگه باشه ) به همین سادگی در جایی با سورس بزارن ولی در مورد سایر کدها ، مثل کار با ماتریسها درسته ، میشه از کدهای آماده استفاده کرد که البته این قسمتها رو دیگه تموم کردم و خیلی هم تست شده ...

    از این که نظراتتون رو گفتید ممنونم ...
    با تشکر از همگی ...

    موفق باشید ...

  7. #7
    سلام
    من درست متوجه نشدم شما برای حل معادله (درجه ی 1) 400 خط برنامه نوشتید؟؟؟
    میشه بگید الگوریتمتون چی بوده؟
    فکر کنم اگه از روش نیوتن استفاده کنید بیشتر از 50-60 خط لازم نباشه
    تازه فکر کنم با یکم بازی کردن با بازه ها تون می تونید از روش نیوتن برای هر تابعی استفاده کنید

  8. #8
    منظورم این نیست که بدون اینکه بفهمی چیه استفاده کنی. فقط میگم اگر در موردی که الگوریتم مشخص وجود داره و یک پیاده سازی خوب هم هست، لزومی به تکرار کد تو نیست.
    در مورد سورس خواستن هم تا جایی که من میدونم جشنواره خوارزمی که کلا دنبال کاربرده و چندان براش مهم نیست که ابزار چطور تهیه شده.

  9. #9
    سلام
    من درست متوجه نشدم شما برای حل معادله (درجه ی 1) 400 خط برنامه نوشتید؟؟؟
    میشه بگید الگوریتمتون چی بوده؟
    خوب دوست عزیز ، در این زمینه باید کل حالتها رو بررسی کرد ، البته در برخی موارد باید ساده نویسی هم شده باشه ، مثلا این معادله رو نگاه کنید : X + 2 + 4 = 0 ، یک همچین چیزی رو باید به برنامه به صورت X + 6 = 0 بدید و حل کنه ، ولی برای بررسی همین حالتها هم چند خطی کد لازمه ...
    ولی کلا شاید یک خط فقط برای کدی مثل این مصرف بشه :
    if I = 0 then
    ...
    البته من بیشتر سعی کردم که خوانایی کد بیشتر بشه که این موضوع هم توی زیاد شدن تعداد خطوط موثر بوده ...

    با تشکر از همگی ...
    موفق باشید ...

  10. #10
    سلام دوستان ...
    من تونستم یک معادله درجه 2 رو هم حل کنم ...
    واقعا که نتیجه یک کار سخت خیلی لذت بخشه !
    ولی معادله درجه 1 هنوز کار داره ، واقعا داره سخت میشه ، چون فرمول یا قاعده خاصی برا حلش نیست ...

    از نظراتی که دادید ممنونم ...
    موفق باشید ...

  11. #11
    یک سئوال :
    آیا لازمه که برنامه بتونه هر معادله ای ( درجه یک ) رو حل کنه ؟
    مثلا ، یک معادله ممکنه به این صورت باشه : X+2 = 0 یا X-3 = 3
    و یک معادله هم میتونه به این صورت باشه : X+3-2+4-5 = 0 یا 3X = -2+4+2+4

    من تا یه جاهایی ( تا دو جمله به غیر از X ، یعنی یک منفی و یک مثبت ) رو با برنامه حل میکنم و بقیه جملات رو کاربر باید خلاصه نویسی کنه ، آیا کارم درسته ؟ یا نوعی محدودیت به حساب میاد ...
    مثلا یه همچین معادله ای رو : X+3+2 = 0 ، کاربر بنویسه : X+5 = 0 ...
    به نظر شما این کار محدودیت برای کاربره ؟ فکر نکنم این طور باشه ، چون خلاصه نویسی یکی از کارهای اولیه هر معادله هست و معمولا بعد از خلاصه نویسی و ساده کردن هست که جای سخت معادله میاد و میشه این سختی رو با نرم افزار آسون کرد و حلش کرد ...

    اگه نظرتون رو بگید ممنون میشم ...
    با تشکر از همگی ...
    موفق باشید ...

  12. #12

    Smile

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    سلام دوستان
    من برنامه ای نوشتم ( در حال نوشتن هستم ) که میتونه معادلات ( فعلا معدلات درجه یک ) رو حل کنه ...
    نکته جالب برنامه اینه که فقط کافیه که معادله مورد نظر رو به صورت یک رشته به برنامه بدید و سایر کارها و محاسبه مقدار X به عهده برنامه هست ...
    میخواستم بدونم که چنین برنامه ای میتونه ارزشمند باشه ؟
    آیا امیدی هست که چنین برنامه ای رو در مثلا در جشنواره خوارزمی شرکت بدم ؟

    اگر کسی نظرش رو بگه ، خیلی کمکم کرده ...
    آیا ارزش داره که من برنامه رو ادامه بدم ...
    درضمن : در برنامه امکانات دیگه ای هم هست ، مثلا محاسبه جمع ، ضرب ، تفریق ، دترمینان و معکوس ماتریسهای 2*2 _ تبدیل اعداد اعشاری به کسر و بلعکس _ انجام محاسبات آنالیز ، احتمالات و فاکتوریل _ انجام محاسبات مربوط به تصاعد و حل چند مسئله و چند محاسبه دیگه ...
    درواقع این یک نرم افزار برای محاسبات بزرگ هست ...
    آیا میشه روی همچین برنامه ای حساب کرد ؟

    با تشکر از همگی ...
    موفق و پیروز باشید ...
    بعید میدونم بیشتر از 500 تومن ارزش داشته باشه !
    چون من چند وقته پیش برنامه Matlab رو خریدم 500 تومن! بعید میدونم برنامه شما کاملتر از اون باشه.
    البته شوخی بود میتونه یه self study خوب باشه واسه خودتون. موفق باشید.
    ...مرا به خانه ام ببر، اگرچه خانه؛ خانه نیست

  13. #13
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    یک سئوال :
    آیا لازمه که برنامه بتونه هر معادله ای ( درجه یک ) رو حل کنه ؟
    مثلا ، یک معادله ممکنه به این صورت باشه : X+2 = 0 یا X-3 = 3
    و یک معادله هم میتونه به این صورت باشه : X+3-2+4-5 = 0 یا 3X = -2+4+2+4

    من تا یه جاهایی ( تا دو جمله به غیر از X ، یعنی یک منفی و یک مثبت ) رو با برنامه حل میکنم و بقیه جملات رو کاربر باید خلاصه نویسی کنه ، آیا کارم درسته ؟ یا نوعی محدودیت به حساب میاد ...
    مثلا یه همچین معادله ای رو : X+3+2 = 0 ، کاربر بنویسه : X+5 = 0 ...
    به نظر شما این کار محدودیت برای کاربره ؟ فکر نکنم این طور باشه ، چون خلاصه نویسی یکی از کارهای اولیه هر معادله هست و معمولا بعد از خلاصه نویسی و ساده کردن هست که جای سخت معادله میاد و میشه این سختی رو با نرم افزار آسون کرد و حلش کرد ...

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

  14. #14
    با سلام
    از نظراتتون ممنونم ...
    این محدودیت بزگی هست. برنامه ای که میتونه معادله درجه 2 رو حل کنه نتونه مجموع چند عدد ثابت رو حساب کنه زیاد جالب نیست. ضمن اینکه جدا کردن متغیر ها و اعداد ثابت کار سختی نیست.
    مباحث طراحی کامپایلر به خصوص تحلیل لغوی می تونه کمکت کنه. مبحث سختی هم نیست
    ولی به نظر خودم این که این محدودیت نباشه زیاد منطقی نیست ...
    اصلا کلا به نظر شما یک همچین معادله ای : X+3+4-5-6-5-2 ، غیر منطقی نیست ؟
    ضمن اینکه جدا کردن متغیر ها و اعداد ثابت کار سختی نیست.
    ولی من معادله رو به صورت رشته میگیرم ، و اگه برنامه آماده برخورد با چنین معادله ای باشه ، شاید کاراییش توی معادله های کوچکتر پایین بیاد ، یه جورایی شاید درصد اشتباهش بالا بره ...
    اگر اعداد جدا از هم وارد می شدند ، خیلی راحت بود ولی چون به صورت رشته دریافت میشن ، یه خورده کار زیادتر میشه و این زیاد شدن شاید کیفیت کار رو بیاره پایین ... ( البته این نظر منه )
    ولی حتما از تجربیات و نظرات شما استفاده خواهم کرد ...
    با تشکر از همه دوستان که نظراتشون رو گفتند ، خیلی کمکم کردید ...

    با تمام این اوصاف ، آیا به نظر شما امیدی به این برنامه هست ؟ من خودم امید دارم ، چون چند تا نرم افزار رو که در دوره های قبل اول شده بودن یا رتبه آورده بودن رو دیدم ... !

    موفق و پیروز باشید ...

  15. #15
    یه نکته که می تونه به دردتون بخوره:
    برای خوارزمی کار کردن گرچه انگیزه خوبیه ولی پشتوانه خوبی نیست مثلا ممکنه برای اینکه خوارزمی رتبه بیارید مجبور بشید خیلی چیزهای به دردبخوری که خیلی چیز توش یاد می گیرید را بیخیال شوید. بعنوان مثال چون در خوارزمی (تا اونجایی که من می دونم ) خلاقیت و تولید چیزهای جدید اهمیت داره بنابر این کار با مثلا ماتریس ها که در نرم افزار matlab وجود داره برای آنها خیلی خوب نیست ولی برای خودت وق العاده عالیه

  16. #16
    یه نکته که می تونه به دردتون بخوره:
    برای خوارزمی کار کردن گرچه انگیزه خوبیه ولی پشتوانه خوبی نیست مثلا ممکنه برای اینکه خوارزمی رتبه بیارید مجبور بشید خیلی چیزهای به دردبخوری که خیلی چیز توش یاد می گیرید را بیخیال شوید. بعنوان مثال چون در خوارزمی (تا اونجایی که من می دونم ) خلاقیت و تولید چیزهای جدید اهمیت داره بنابر این کار با مثلا ماتریس ها که در نرم افزار matlab وجود داره برای آنها خیلی خوب نیست ولی برای خودت وق العاده عالیه
    سلام
    درسته ...
    من بیشتر سعی ام روی حل معادلات هست و حل مسائل ( و درواقع امتیاز مهم برنامه هم همینه )
    تا اینجای کار برنامه میتونه معادلات درجه 2 رو حل کنه و دیگه کم کم حل معادلات درجه یک هم داره تموم میشه ...
    درضمن ، قابلیت مشتق گیری هم دارم میزارم ( از حل معادله درجه یک به مراتب آسونتره ) و همچنین ، حل اتحادها رو هم گذاشتم ...
    ولی اگه بتونم کاری کنم که برنامه مسائل ( مثلا تصاعد یا ... ) رو تشخیص بده و حل کنه ، خیلی عالی میشه ...

    یه سئوال خارج از بحث : آیا میشه با چند تا طرح در خوارزمی شرکت کرد ؟
    مثلا یکی به عنوان نرم افزار و یکی به عنوان فرمول ریاضی ( دو تا ) ...
    اگه چنین چیزی بشه ، آیا هردو روی یک رتبه تاثیر دارند یا هر طرح رتبه جدایی داره ؟

    با تشکر از همگی ...
    موفق باشید ...

  17. #17
    کاربر دائمی آواتار DAMAVAND
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    همين اطراف
    پست
    373
    سلام
    محمود جان باید بگم من خودم دو بار شرکت کردم,
    توی جشنواره به بیشترین چیزی که اهمیت میدن ابتکار و نوع اوری هست!
    مثلا خیلی فکر نکنید که باید یه پروژه عظیم انجام بدید تا مقام بیاره,
    بر عکس پروژهایی که شاید به نظرتون مسخره به نظر برسن مقام میارن
    ما رو پروژمون یه پروژه روباتیک پرادزش تصویر خفن به همراه طراحی سخت افزار مربوطه بود ولی مقام نیوردیم.
    علتش هم همون بود که در بالا گفتم خیلی های دیگه هم مثل ما بودند !
    بزارید یکی از پروژهایی که توی یکی از دورها مقام اورد رو معرفی کنم
    چیز خاصی جز مقداری
    مقوا و تخته و یه سری چیزهای ساده دیگه نبود
    جعبه لایتنر رو یادتونه ??????
    یه چیزی شبیه اون با این تفاوت که برای دارو بود یعنی چی ?
    مثلا یه بیمار رو در نظر بگیرید که سن زیادی داره و باید تعداد زیادی دارو رو توی روز توی ساعات مشخصی مصرف کنه !
    خوب ادم ممکنه یادش بره کی باید چه دارویی رو مصرف کنه
    این جعبه طوری طراحی شده بود که به بیمار یاداوری میکرد .
    با یه مکانیسم و ابتکار بسیار جالب و در عین حال فوق العاده ساده
    پس زیاد فکر نکنید که پروژه فلان کار خفن رو بکنه !
    اگه از من میشنوی سعی کن این کار رو تو برنامت انجام بدی
    یه قابلیتی بهش اضافه کن که ابتکار توش باشه!
    البته بهت تبریک میگم که این برنامرو نوشتی, با توجه به چیزایی گفتی باید وقت زیادی برای
    ساختنش گزاشته باشی.
    همون طور که گفتم با یه ابتکار جالب میتونی کاملا به مقام اوردن امیدوار باشی.
    در ضمن اگه میخوای شرکت کنی حتما قبل از ثبت نام برناتو ثبت کن !
    براش گواهی ثبت اختراع حتما بگیر!
    جزو امتیازات یکیش همینه که خیلی ها توجه نمیکنند !
    ثبت اختراع هم خیلی سادست.
    بعدش فکر کنم اگه میخای امسال شرکت کنی باید بجنبی پارسال مهلت ثبت نام تا مرداد
    بیشتر نبود .
    فکر میکنم بشه با چند طرح شرکت کرد کاملا مطمعن نیستم !
    در ضمن هر طرح از هم جداست و امتیازی برای مابقی طرحهای یک شخص نیست .
    در زمن همگروهی هم میتونی داشته باشی فکر کنم تا سه یا چهار نفر
    ولی در صورت مقام اوردن امتییازات به دو نفر که بیشترین
    سهم رو از پروژه داشتن تعلق میگیره !

    موفق باشید

  18. #18
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    سلام
    درسته ...
    من بیشتر سعی ام روی حل معادلات هست و حل مسائل ( و درواقع امتیاز مهم برنامه هم همینه )
    تا اینجای کار برنامه میتونه معادلات درجه 2 رو حل کنه و دیگه کم کم حل معادلات درجه یک هم داره تموم میشه ...
    درضمن ، قابلیت مشتق گیری هم دارم میزارم ( از حل معادله درجه یک به مراتب آسونتره ) و همچنین ، حل اتحادها رو هم گذاشتم ...
    ولی اگه بتونم کاری کنم که برنامه مسائل ( مثلا تصاعد یا ... ) رو تشخیص بده و حل کنه ، خیلی عالی میشه ...
    فکر کنم منظورم را درست متوجه نشدید
    ماتریس یک مثال بود. در مورد حل معادلات هم باید بگم که تشخیص معادله که امکانش در حد محاسبه یک عبارت ریاضی است که در همه زبانها وجود داره و بنابراین کار جدیدی نیست(مبحث اصول طراحی کمپایلر) حل معادله هم با روش نیوتن و با کمک همان چیزی که الان گفتم یعنی محاسبه یک عبارت ریاضی کار پیچیده ای نیست(البته برای یک دانش آموز چرا.کار خیلی خوبی است ولی نمی دونم داوران هم اینکه شما دانش آموزید ولی این کار قبلا شده را مدنظر می گیرند یا نه)
    در مورد تشخیص مسائل فکر نکنم بتونید کار عظیمی انجام بدبد چون مبحث پردازش زبان های طبیعی هوش مصنوعیه. ولی در این حد که یک syntax مثل زبانهای برنامه نویسی تعیین کنید و کاربر شما سوالات را در همان syntaxبپرسد به نظر من کار خوبی است و ارزشمند(خیلی چیز یاد می گیرید و احتمال هم داره رتبه بیارید)

  19. #19
    سلام
    بابت نظرها ممنونم ...
    تشخیص معادله که امکانش در حد محاسبه یک عبارت ریاضی است که در همه زبانها وجود داره و بنابراین کار جدیدی نیست
    ولی این کار در حد محاسبه یک عبارت ریاضی نیست ، و فکر نکنم در هیچ زبانی وجود داشته باشه ، چون قاعده و فرمول خاصی نداره ، البته اون روش نیوتن رو که گفتید من نمیدونم چطوریه ...
    سختی کار در اینه که حالتهای خیلی زیادی برای یک معادله هست ! ...
    مثلا :
    X+3-4
    X(4-3)-3
    3X+4X-3+X
    5+3-2X-4
    و خیلی حالتهای دیگه ؟
    چیزی که مهمه اینه که برنامه این حالتها رو تشخیص بده و اعداد و Xها رو از یک رشته جدا کنه ، ضرایب X رو پیدا کنه ، معادله رو ساده کنه و حل کنه ...
    اگه ورودی های برنامه رو به صورت عدد دریافت میکردیم شاید خیلی ساده بود ولی استخراج اونها از یک رشته یه جورایی سخت هست ( البته برای من )
    البته شاید چون من آشناییم کم هست برام سخته ولی به هر حال تا اینجا که زیاد آسون نبود ...

    موفق و پیروز باشید ...

  20. #20
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    ولی این کار در حد محاسبه یک عبارت ریاضی نیست ، و فکر نکنم در هیچ زبانی وجود داشته باشه ، چون قاعده و فرمول خاصی نداره ، البته اون روش نیوتن رو که گفتید من نمیدونم چطوریه ...
    ببین شما جز اینکه یه قانونی برای رشته ای که کاربر به برنامه ات میده بذاری چاره ای نداری. ریاضیات خودش قانون داره و هر کسی غیر از اون چیزی که قوانین ریاضیات میگه چیزی بنویسه، نه یک برنامه، یک ریاضی دان خبره هم نمیفهمه. و یا در بهترین حالت نتیجه اشتباهی میگیره.
    اولین زبانی که توش این چیزها باید رعایت بشه خود ریاضیات هست. و قواعد سفت و سختی باید رعایت بشه.
    x*20+1 هیچوقت مثل x*(20+1)

    پردازش نمیشه.

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    سختی کار در اینه که حالتهای خیلی زیادی برای یک معادله هست ! ...
    مثلا :
    X+3-4
    X(4-3)-3
    3X+4X-3+X
    5+3-2X-4
    و خیلی حالتهای دیگه ؟
    منظورت این نیست که اینا حالت های یه معادله هستن؟؟ میدونم اینو نمیخواستی بگی.
    تمام معادلاتی که اینجا نوشتی فقط به یک صورت میشه فهمیدشون و هیچ ابهامی ندارن. اگه یه مثال از یک معادله بتونی بزنی که دو جور بشه پردازش (حل) بشه بهتر منظورت رو میفهمم

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    چیزی که مهمه اینه که برنامه این حالتها رو تشخیص بده و اعداد و Xها رو از یک رشته جدا کنه ، ضرایب X رو پیدا کنه ، معادله رو ساده کنه و حل کنه اگه ورودی های برنامه رو به صورت عدد دریافت میکردیم شاید خیلی ساده بود ولی استخراج اونها از یک رشته یه جورایی سخت هست ( البته برای من )
    نمیدونم با چه زبانی داری مینویسی. اما هرچی هست حد اقل امکاناتش برای کار با رشته ها مثل C++‎ تحت Dos هست. باید رشته ورودی رو به صورت استاندارد و قابل فهم برای برنامه در بیاری. این کار ساده ای هست. مخصوصا با Net. (اگه امروز فردا وقت شد یه نمونه کوچیک آماده میکنم)
    منظورت از اینکه ورودی به صورت عدد باشه چیه؟ (یه مثال لطفا)

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    البته شاید چون من آشناییم کم هست برام سخته ولی به هر حال تا اینجا که زیاد آسون نبود ...
    از مباحث طراحی کامپایلر غافل نشو. بخصوص تحلیل لغوی یادم میاد 30، 40 صفحه بیشتر نبود.

  21. #21
    سلام
    منظورت از اینکه ورودی به صورت عدد باشه چیه؟ (یه مثال لطفا)
    ببخشید ، اشتباه از من بود ، فکر نکنم ورودی عددی داشته باشیم ، البته از طرف کاربر !
    منظورم این بود که اعداد به صورت جدا به برنامه داده بشن ( مثلا فرض کنیم میخوایم یک معادله درجه 2 رو حل کنیم ، اگه برنامه A رو به صورت جدا ، B رو به صورت جدا و C رو هم به صورت جدا دریافت کنه ، دیگه اصلا کاری لازم نیست انجام بده ، بقیش دیگه فرموله ... )
    نمیدونم با چه زبانی داری مینویسی. اما هرچی هست حد اقل امکاناتش برای کار با رشته ها مثل C++‎ تحت Dos هست.
    من با دلفی دارم مینویسم ... ( دلفی 7 و دات نت نیست )
    منظورت این نیست که اینا حالت های یه معادله هستن؟؟ میدونم اینو نمیخواستی بگی.
    تمام معادلاتی که اینجا نوشتی فقط به یک صورت میشه فهمیدشون و هیچ ابهامی ندارن. اگه یه مثال از یک معادله بتونی بزنی که دو جور بشه پردازش (حل) بشه بهتر منظورت رو میفهمم
    مثل این که منظورم رو بد رسوندم ، میخواستم بگم که نمیشه برای قسمتهای یک معادله جای مشخصی معین کرد ، مثلا ممکنه در یک معادله درجه 2 ، A اول باشه یا B اول باشه یا ...
    چیزی که مهمه اینه که برنامه بتونه تعداد اینها و جاهاشون رو مشخص کنه ...
    ببین شما جز اینکه یه قانونی برای رشته ای که کاربر به برنامه ات میده بذاری چاره ای نداری. ریاضیات خودش قانون داره و هر کسی غیر از اون چیزی که قوانین ریاضیات میگه چیزی بنویسه، نه یک برنامه، یک ریاضی دان خبره هم نمیفهمه. و یا در بهترین حالت نتیجه اشتباهی میگیره.
    درسته ولی دارم سعی میکنم تا جایی که میتونم دست کاربر رو باز بزارم ...
    فعلا قاعده خاصی نیست ، تا چند روز پیش یه قاعده در نظر گرفته بودم ولی خوشبختانه موفق شدم اون رو هم از بین ببرم ، یعنی امکان تشخیص اون رو به برنامه بدم ...
    باید رشته ورودی رو به صورت استاندارد و قابل فهم برای برنامه در بیاری
    من در چند تابع جدا ابتدا معادله رو ساده میکنم و بعد یک تابع دارم که معادلات ساده شده رو حل می کنه و معادله ورودی رو بعد از ساده کردن به اون میفرستم و جواب رو میگیرم ...

    از کمکهاتون ممنونم ...
    موفق باشید ..

  22. #22
    دوست عزیز
    آقا محمود گل

    خیلی تاپیکت رو دنبال کردم و مشتاق بودم ببینم به کجا میرسی و دوستان هم برات چیکار می کنند
    در مورد نرم افزارت باید بهت بگم که متاسفانه برنامه ات برای جشنواره خوارزمی مناسب نیست(چون قبلا بارها و بارها کار شده ، به عنوان مثال بچه های سال اول کامپیوتر دانشگاه شیراز تقریبا هر سال این برنامه رو به عنوان HomeWork یا پروژه می نویسن ) و سورسش هم توی اینترنت خیلی زیاده . اما این به هیچ عنوان به این معنی نیست که کارت و ایده ات فوق العاده جذاب نیست و من هم بهت پیشنهاد می کنم که تا می تونی بهش فکر کن.چون تا حد فوق لیسانس و شاید دکترای کامپیوتر میشه در موردش بحث کرد و مطلب نوشت و یا حتی چیز جدید ارایه داد.
    اما تجربه خودم رو بهت میگم امیدوارم کمکت کنه
    اول اینکه در طراحی چنین نرم افزاری یا هر چیزی که قراره یک دستور زبان رو پردازش کنه ( در اینجا ریاضی ) سعی کن تا می تونی به برنامه کلی نگاه کنی.یعنی مثلا می خوای حالتهای مختلف2+x+8+y+7+43+z=6 یا چیزهایی شبیه این رو برای حل مساله در نظز بگیری که سر به آسمون میکشه . پس بهتره نرم افزارت طوری باشه که برای پردازش به این موضوعات حساس نباشه و نخواد که قبلا یه بار مرتب بشه و ...

    بحث در این موردها زیاده و نهایتا سر از ماشینهای هوشمند و پردازش زبان طبیعی و ... در میاره که اینجا جاش نیست

    اما در مورد ایده شما باید عرض کنم که از اوایل مطرح شدن علم کامپیوتر این موضوع مطرح بوده و در مباحثی مثل ریاضیات گسسته ( ادامه جبر و احتمال دبیرستان میشه و توی دانش کامپیوتر بسیار پایه ای و مهم هست) در موردش خیلی بحث شده که رشته های ریاضی رو چجور پردازش کنن ، چون نه تنها برای برنامه های محاسب ریاضی لازم هست ( مثل Matlab و مثلا همین برنامه شما) بلکه برای طراحی کامپایلر ها هم خیلی لازمه ، شما در نظر بگیرید همین رشته هایی رو که شما الان داری واسه پردازششون تلاش می کنی اگر توی کدت هم بود باید کار می کرد دیگه؟؟مگه نه؟
    نهایتا بهترین روشی که معرفی شده مدل لهستانی هست ، یعنی هر رشته موجود در زبان ریاضی رو میشه تقریبا به این فرم در آورد ، به چه معنی ؟؟
    یعنی معادل قابل پردازش توسط کامپیوتر برای چیزی که واسه ما قابل فهمه .لهستانی واسه ماشین معمولی واسه آدم .خوب این چجوری هست ؟؟

    a b op1 c d op2 op3 op4 e f op5

    حالا اینو هم ببین

    max(e,f,sin((a+b)/(c*d))



    خب حالا واست جالبه که چجور میشه این عبارت که شامل چند تا پرانتز و تابع چند متغیره و ... رو میشه به این فرم در آورد و حالا وقتی به این فرم در اومد کامپیوتر چیکارش میکنه ؟
    فرم لهستانی که اگر بهش دقت کنی قابل فهمه . یعنی میاد آخرین عملگر (op) رو پیدا می کنه و پشتش دنبال عملوندهاش می گرده ( که من تعمیم دادم به طوریکه یک عملگر چند تا عملوند داشته باشه و صرفا دو دویی نباشه مثل عملگر Max که سه تایی هست یا سینوس که تکی هست و تو باید با توجه به عمگرت به تعداد دنبال عملوند بگردی)
    با توجه به عملگر و عملوند ها مقدار رو محاسبه می کنه و قرار می ده توی عبارت به عنوان عملوند و ....
    توضیحش خیلی مفصله اما اگر الگوریتمش رو ببینی و یکم روش وقت بذاری می بینی جالب و ساده هست . این تبدیلات رو توی اینترنت با اسم Postfix و Infix می تونی پیدا کنی و الگوریتمش رو مخصوص کار خودت پیاده سازی کنی .

    میبنی که راحت می تونی بالا مقادیر a,b,.. رو عدد بدی و کارت رو انجام بدی یا حتی جالبتر اینکه یکیش رو متغیر قرار بدی و هر دفعه یه مقدار جایگزینش کنی و رشته رو بتونی برای مقادیر مختلف محاسبه کنی

    بحثش مفصله ولی با انگیزه ای که ازت برای این برنامه دیدم حالا که روش اصولیش رو خیلی می تونی بسط و تعمیمش بدی
    امیدوارم تونسته باشم کمکت کنمو اگر سوالی داشتی و من بلد بودم کمکت کنم
    موفق باشی

  23. #23
    سلام
    ممنون دوست عزیز ...
    در مورد نرم افزارت باید بهت بگم که متاسفانه برنامه ات برای جشنواره خوارزمی مناسب نیست(چون قبلا بارها و بارها کار شده ، به عنوان مثال بچه های سال اول کامپیوتر دانشگاه شیراز تقریبا هر سال این برنامه رو به عنوان HomeWork یا پروژه می نویسن ) و سورسش هم توی اینترنت خیلی زیاده .
    یه جورایی نا امید شدم ! ...
    حتی برای شرکت یک دانش آموز هم نمی تونه مناسب باشه ... ؟!
    ولی مثلا چند ماه پیش بود ( فکر کنم ) شخصی رو نشون داد که نرم افزاری نوشته بود که صحبتهای امام خمینی توش بود و اول شده بود ! ، البته نمیدونم کشوری اول شده بود یا استانی ( گیلان ) ، چون شبکه استانی ما داشت نشون میداد ...
    به هرحال من برنامه رو ادامه میدم ... ، ان شا الله که بتونم مقامی بیارم ، البته درسته که قبلا ساخته شده ولی همین مورد هم میتونه خوب یا بهتر داشته باشه ... ;)

    بابت توضیحاتتون ممنونم ، خیلی کمکم کرد ...
    موفق باشید ...

  24. #24
    خواهش می کنم.گفتم که ، بحث رو دنبال می کردم و چون دیدم از لحاظ تکنیکی و تکنیکی باید کمکت کنم مطالب رو نوشتم. متاسفانه همونطور که گفتم رو ی این وموضوع قبلا خیلی ها کار کردن .
    اما در مورد نرم افزاری که گفتی جوابت هم توی سوالت بود ، بنده خدا خوبه خودت هم می گی نرم افزاری در مورد امام خمینی !!!
    کاری به کار این جشنواره ها و ... نداشته باش . وقتی یه موضوع خوب به ذهنت می رسه سعی کن ادامه اش بدی و ایده ات رو پرورش بدی تا ذهنت خلاق باشه . اتفاقا من فکر می کنم بهتره یه بعضی وقتا که توی این جشنواره ها جایزه نگیری تا هی بیشتر تحریک بشی واسه تلاش و کو شش .

    برات آرزوی موفقیت می کنم و امیدوارم بزودی توی همین تاپیک نرم افزارت رو بذاری تا ببینیم

  25. #25
    خواهش می کنم.گفتم که ، بحث رو دنبال می کردم و چون دیدم از لحاظ تکنیکی و تکنیکی باید کمکت کنم مطالب رو نوشتم. متاسفانه همونطور که گفتم رو ی این وموضوع قبلا خیلی ها کار کردن .
    اما در مورد نرم افزاری که گفتی جوابت هم توی سوالت بود ، بنده خدا خوبه خودت هم می گی نرم افزاری در مورد امام خمینی !!!
    کاری به کار این جشنواره ها و ... نداشته باش . وقتی یه موضوع خوب به ذهنت می رسه سعی کن ادامه اش بدی و ایده ات رو پرورش بدی تا ذهنت خلاق باشه . اتفاقا من فکر می کنم بهتره یه بعضی وقتا که توی این جشنواره ها جایزه نگیری تا هی بیشتر تحریک بشی واسه تلاش و کو شش .
    ممنون ... ، روحیم دو چندان شد ...
    برات آرزوی موفقیت می کنم و امیدوارم بزودی توی همین تاپیک نرم افزارت رو بذاری تا ببینیم
    ممنون ، وقتی تمام شد حتما میزارم ...

    موفق و پیروز باشید ...

  26. #26
    دوست من همانطور که بارها گفتم و دوستمون هم فرمودند این کار بارها و به اشکال مختلف انجام شده است. به نظر من اگر

    این کار (حل معادله) را ادامه بدی برای خودت فوق العاده است ولی برای خوارزمی فکر نکنم.ولی اگر به فکر

    خوارزمی هستی بیشتر تلاشت را متمرکز کن روی قسمت حل مساله یعنی یه مساله ورودی باسه و برنامه بتونه سوال را در

    بیاره و آنرا حل کنه.
    تاکید می کنم: برای خوارزمی ها این که چقدر در برنامه شما چیز هست نباید زیاد مهم باشه قطعا اینکه در برنامه شما چقدر

    چیز جدید مطرح کرده اید مهم است. شما بشینید و فکر کنید که مثلا برای اینکه کاربر سوال خودش را بپرسه و شما راه حل

    را تشخیص بدید چقدر می توانید خلاقیت به خرج بدید...

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک

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

    مقدار بدید. بعد یه عبارت ریاضی دلخواه بنویسید که توش همین متغیر باشه و بگید مقدار اون را چاپ

    کنه. براحتی صرفنظر از اینکه عبارت چقدر پیچیده است دلفی عبارت را محاسبه می کنه(البته باید عبارت از نحو زبان

    دلفی تبعیت کنه)
    حالا حل معادله به همین سادگی است:(صرفنظر از اینکه عبارت درجه 1 است یا درجه هزار)
    علامت تساوی را پیدا کرده و عبارت چپ و راست آنرا بیرون می کشید.تا اینجا دو تا عبارت ریاضی دارید. یه مقدار

    حدس می زنید و با آن مقدار دو عبارت بدست آمده را محاسبه می کنید. تفاضل این دو مقدار تخمینی از میزان دقت حدس

    شما است. به کمک این تفاضل و روشی مثل روش وتر(روش نیوتن بدون نیاز به مشتق) حدس جدیدی می زنید و آنقدر

    جلو می روید تا خطای شما قابل چشمپوشی باشد. برای آگاهی از روش وتر به آدرس زیر رجوع کن:
    http://en.wikipedia.org/wiki/Secant_method
    موفق باشید

  27. #27
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    نقل قول نوشته شده توسط HAIdle مشاهده تاپیک
    ..... حل مساله یعنی یه مساله ورودی باسه و برنامه بتونه سوال را در
    بیاره و آنرا حل کنه......
    من فکر میکنم محمد آقا میخواد به همین برسه.

    نقل قول نوشته شده توسط HAIdle مشاهده تاپیک
    اتفاقا در همه زبانها وجود داره: مثلا در همین دلفی که شما کار می کنید یک متغیر از نوع صحیح تعریف کنید و به آن یه مقدار بدید. بعد یه عبارت ریاضی دلخواه بنویسید که توش همین متغیر باشه و بگید مقدار اون را چاپ کنه. براحتی صرفنظر از اینکه عبارت چقدر پیچیده است
    درست نمیگم آقا محمد؟ شما میخوای ریشه های یک معادله رو بدست بیاری یا....
    یا یه فرمول داری و مخای یه مقدار بهش بدی و مقدار معادله رو بگیری؟؟؟؟

  28. #28
    قضیه معادله از قضیه ی مسائل جداست ، من میخوام در قسمتی از برنامه ، معادلات رو حل کنم و قسمت دیگه ای هم توی برنامه بزارم ...
    توی این قسمت دوم ، قسمتی برای نوشتن مسئله وجود داره ، که در برنامه من بیشتر روی مسائل مربوط به تصاعد و آنالیز دارم کار میکنم ، وقتی شما مسئاله رو مینویسید ، برنامه داده های مسئله و مجهولات رو تشخیص میده و بعد با تشخیصی که داده اقدام به حل مسئله میکنه ...

    امیدوارم بتونم این کار رو انجام بدم ...

    درضمن :
    من محمود هستم !

    از این که این تاپیک رو پیگیری می کنید ممنونم ...
    موفق باشید ...

  29. #29
    اتفاقا در همه زبانها وجود داره: مثلا در همین دلفی که شما کار می کنید یک متغیر از نوع صحیح تعریف کنید و به آن یه

    مقدار بدید. بعد یه عبارت ریاضی دلخواه بنویسید که توش همین متغیر باشه و بگید مقدار اون را چاپ

    کنه. براحتی صرفنظر از اینکه عبارت چقدر پیچیده است دلفی عبارت را محاسبه می کنه(البته باید عبارت از نحو زبان

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

    از کمکهاتون ممنونم ...
    موفق باشید ...

  30. #30
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    قضیه معادله از قضیه ی مسائل جداست ، من میخوام در قسمتی از برنامه ، معادلات رو حل کنم و قسمت دیگه ای هم توی برنامه بزارم ...
    توی این قسمت دوم ، قسمتی برای نوشتن مسئله وجود داره ، که در برنامه من بیشتر روی مسائل مربوط به تصاعد و آنالیز دارم کار میکنم ، وقتی شما مسئاله رو مینویسید ، برنامه داده های مسئله و مجهولات رو تشخیص میده و بعد با تشخیصی که داده اقدام به حل مسئله میکنه ...
    پس در حقیقت برای بدست اوردن ریشه معادله هست. حل این:
    f(x) = 0
    نه این:

    a = 5;
    f(a) = ?
    کدوم؟؟ من بعضی وقتا یکمی دوزاریم خم میشه

    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    من محمود هستم !
    فرقش یه واو هست.
    آقا محمود
    so sorry

  31. #31
    پس در حقیقت برای بدست اوردن ریشه معادله هست. حل این:

    کد:
    f(x) = 0نه این:


    کد:
    a = 5;
    f(a) = ?کدوم؟؟ من بعضی وقتا یکمی دوزاریم خم میشه
    X^+X-3 = 4
    X = ?
    ( X^ = ایکس دو )
    یا X + 4-3 = 6-2
    X = ?

    موفق باشید ...

  32. #32
    کاربر دائمی آواتار reza.palang
    تاریخ عضویت
    دی 1385
    محل زندگی
    میون یهک جفت کروشه
    پست
    299
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    ولی در یک معادله به صورت رشته ، چیزی مشخص نیست ، شما از ضرایب متغیر ، تعدا تکرار متغیر ، تعداد اعداد غیر از متغیر ، مقدار اونها و ... خبر ندارید و باید اونها رو از رشته استخراج کنید ...
    توی Net. یه متد هست به اسم split که کارش جدا کردن رشته ها هست . ولی.... ولی شما میتونی seoratorهایی از نوع char یا string تعریف کنی که رشته رو از جاهایی که این seprator ها هستن بشکنه و به چند رشته دیگه تقسیم کنه. (نمیدونم ولی توی دلفی هم باید یه همچین چیزی باشه)
    به عنوان مثال میشه رشته ورودی رو از جاهایی که + یا - هست شکست و به مجموع مینترم ها تبدیل کرد. همین کار رو روی رشته های جدید ولی با sepratorهای دیگه انجام باید داد تا اونها رو هم تجزیه کرد. و الی آخر

  33. #33
    محمود جان
    سلام
    اینطور که می بینم چندان دنبال Infix Postfix نرفتی !!

  34. #34
    سلام
    ولی شما میتونی seoratorهایی از نوع char یا string تعریف کنی که رشته رو از جاهایی که این seprator ها هستن بشکنه و به چند رشته دیگه تقسیم کنه. (نمیدونم ولی توی دلفی هم باید یه همچین چیزی باشه)
    به عنوان مثال میشه رشته ورودی رو از جاهایی که + یا - هست شکست و به مجموع مینترم ها تبدیل کرد. همین کار رو روی رشته های جدید ولی با sepratorهای دیگه انجام باید داد تا اونها رو هم تجزیه کرد. و الی آخر
    من تقریبا همین کار رو میکنم ...
    محمود جان
    سلام
    اینطور که می بینم چندان دنبال Infix Postfix نرفتی !!
    من چند تا چیز پیدا کردم :
    http://packages.debian.org/unstable/...2-infix-source
    ------------------
    http://postfix-release.cs-network.de/
    ------------------
    http://en.wikipedia.org/wiki/Infix
    و ...
    ولی از روی اینها نمی تونم دقیقا به موضوع پی ببرم ...

    شاید کم کاری از خودم باشه ولی من یه جورایی با کلیات موضوعی که گفتید آشنا نیستم ...

    ممنون و موفق باشید ...

  35. #35
    کاربر دائمی آواتار linux
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    پست
    2,313
    منم پستهای اینجا را می خواندم دیدم واقعا دنبال این هستی که مطلب یاد بگیری آفرین خیلی کار خوبی هست.
    قسمت بزرگی از کار شما صرف بررسی ورودی اطلاعات خواهد شد.
    ببنید برای معادله درجه یک ax+b=0 که جواب آن x=-b/a هست شما 400 خط کد نوشتید یکم زیاد هست.
    اصلی ترین کار شما نوشتن برنامه برای تجزیه و تحلیل ورودی است اگر دنبال math parser بگردید کلی مطلب پیدا می کنید.

  36. #36
    سلام ...
    ممنون از جواب و راهنماییتون ...
    ببنید برای معادله درجه یک ax+b=0 که جواب آن x=-b/a هست شما 400 خط کد نوشتید یکم زیاد هست.
    راستش من یک شیوه کدنویسی به خصوصی دارم ( یه خورده مسخره هست ! ) بیشتر سعی میکنم که خوانایی کد بالا بره ، در خیلی از جاها یک خط فقط شاید جای یک begin یا end یا تنها یک کلمه یا یک اختصاص دهی کوچک باشه ...
    ولی دارم روش کار رو عوض میکنم ، فکر کنم هم برنامه ساده تر بشه و هم سرعت بیشتر بشه ( البته حل معادله ( در صورت کوچک بودن اعداد ) زمان بر نیست ) ...

    واقعا از نظراتی که می دید ممنونم ، خیلی بهم کمک کردید ...

    با تشکر از همگی ...
    موفق و پیروز باشید ...

  37. #37
    محمود جان
    من این سورس رو که به پایتون هست برات پیدا کردم.
    ( پایتون یکی از بهترین زبانهای برنامه نویسی برای کارهای آکادمیک و ایجاد الگوریتم هاست و کدش هم به شبه کد های توضیحی برنامه نویسی شباهت داره و من به همه توصیه می کنم که باهاش آشنایی داشته باشند )
    http://aspn.activestate.com/ASPN/Coo...8915/index_txt

    سایت رسمی اون هم www.python.org هست و جزو زبانهای متن آزاد محسوب میشه.امیدوارم بزودی بحث جدی اون هم توی این سایت آغاز بشه.
    فکر می کنم برای شروع کار سورس خوبی باشه و اگر بهش مسلط بشی می تونی چیزهای جدیدی هم بهش اضافه کنی
    موفق باشی

  38. #38
    نقل قول نوشته شده توسط Mahmood_N مشاهده تاپیک
    سلام ...
    ممنون از جواب و راهنماییتون ...

    راستش من یک شیوه کدنویسی به خصوصی دارم ( یه خورده مسخره هست ! ) بیشتر سعی میکنم که خوانایی کد بالا بره ، در خیلی از جاها یک خط فقط شاید جای یک begin یا end یا تنها یک کلمه یا یک اختصاص دهی کوچک باشه ...
    ولی دارم روش کار رو عوض میکنم ، فکر کنم هم برنامه ساده تر بشه و هم سرعت بیشتر بشه ( البته حل معادله ( در صورت کوچک بودن اعداد ) زمان بر نیست ) ...

    واقعا از نظراتی که می دید ممنونم ، خیلی بهم کمک کردید ...

    با تشکر از همگی ...
    موفق و پیروز باشید ...
    سلام
    دیدم خیلی پیگیر و مشتاق این مطلب هستید گفتم شاید بتونم کمکی بکنم:

    تا جایی که من از بحث دستگیرم شد گیر اصلی روی تجزیه و تحلیل رشته ایی هست که کاربر وارد کرده و بدست آوردن اعداد و متغییر هاست و در واقع بدست آوردن ساختار معادله.

    بدون شک راحت ترین راه برای همچین کاری طراحی یک Parser کوچیک برای عبارات ریاضی هست ، در واقع این راهی که شما داری میری قبلا رفته شده و نتایج بدون نقصی هم گرفته شده.(طراحی کامپایلر برای عبارات ریاضی و حل معادله)

    به طور خلاصه برای این کار شما باید اول متن مورد نظر رو تجزیه کنید(Lexical Analyzer) یعنی اعداد ، متغییر ها و عملوند ها (*,+,-,^,....) را جدا کنید بعد با استفاده از (Parser) یک درخت (Parsing Tree) برای عبارت مورد نظر بسازید در این مرحله حل کردن معادله دیگه کاری نداره.
    اگر می خواهید از تجربیات کسانی که قبلا به موضوع مد نظر شما فکر کرده اند و نتیجه گرفته اند استفاده کنید کتاب طراحی کامپایلر بخونید که تو بازار هم به وفور پیدا میشه.
    (مثلا کتاب اصول طراحی کامپایلر تالیف آلفرد- ای- هو Alfred Aho و ترجمه های مختلفی براش هست- در همین کتاب مثال برای تجزیه عبارات ریاضی وجود داره)

    در ضمن یه چند تا برنامه در این زمینه دیده بودم اگر پیداشون کردم برات میذارم تا عملکردشون رو ببینی.
    موفق باشید و هیچ وقت نا امید نشید.

  39. #39
    این هم چند تا برنامه نمونه:

    1. QuickMath-Automatic Math Solutions

    2. Equation Wizard

    3. Math Solver

    4. http://www.mathsolver.vze.com/

    5. Algebra Solver


    Maths Editor

    در ضمن نرم افزار MatLab روفراموش نکنید واقعا نرم افزار بی نظیری هست.
    توابع
    1. roots بدست آوردن ریشه های معادله
    2. fsolve حل معادلات غیرخطی(به روشهای محاسبات عددی)
    3. fzero حل معادلات خطی
    رو حتما تو مطلب تست کنید و نتیجه حل معادلات را ببینید.

    ابزار Symbolic Math Toolbox موجود در مطلب را هم تست کنید.

  40. #40
    با سلام خدمت همگی ، و عرض تشکر فراوان به خاطر نظراتی که دادید و کمکهایی که کردید ...
    من به مشکلی برخوردم ، اگه راهنماییم کنید کمک بزرگی بهم کردید ...
    اول روشی که دارم استفاده میکنم رو می گم ، بعد مشکلم رو می گم و بعد روش PostFix رو ( تا جایی که من فهمیدم ) مقایسه می کنیم ، امیدوارم راه حل خوبی پیدا بشه ...
    روش کار من :
    من برای این که یک معادله رو ساده کنم ، از چند تابع جدا استفاده کردم ، یک تابع برای محاسبه ضریب X ( در صورت وجود بیش از 1 X ، مثلا X-2X+3 ) ، یک تابع برای محاسبه اعداد درون یک رشته ( مثلا 3+3-2+4 ) ، یک تابع برای آوردن مقادیر سمت راست تساوی به سمت چپ و برعکس کردن اونها و یک تابع هم برای حل معادله ساده شده ...
    مشکلاتی که وجود داره :
    من روی محاسبه عملگرهایی مثل * و / و یا پرانتزها ( مثلا X+3)2) ) به مشکل برخوردم ، البته مشکل که نمی شه گفت ، یه جورایی توی روش محاسبشون تردید دارم ، مثلا به نظر شما عبارت زیر رو باید به چه ترتیب ساده کنم ؟
    (X/3 + 4(3 - X)) + 3 

    میشه اول چک کرد که اگر ، در عبارتی مثل " X/3 " ، حرف X وجود داشت ، اونوقت ضریب X برابر باشه با 3/1 ( یک سوم ) ، و بعد به قسمت بعدی داخل پرانتر رفت ، و بعد از محاسبه عبارت ( 4(3 - X) ) ، اون رو به صورت X 1/3 + 12-4X نوشت ، و بعد ضریبهای X رو از این عبارت محاسبه کرد و بعد یک معادله ساده شده به صورت X-11/3 + 12 + 3 ( منفی یازده سوم X + دوازده + 3 ) و نهایتا با محاسبه 12+3 ، معادله X-11/3 + 15 بدست میاد که یک معادله ساده هست و در حل کردنش مشکلی ندارم ...
    مشکل اصلی روی پرانتزها است ، توی محاسبه مقادیری که داخل پرانتز هستند و یا در عبارت داخل پرانتز ضرب شدند یا ... ، مشکل دارم ، البته میشه ، مقادیر داخل پرانتز رو استخراج و محاسبه کرد ولی در عباراتی که چند پرانتز دارند ، این کار یه خورده مشکل میشه ! ...

    مورد دیگه ای که باید در رابطه با اون درخواست کمک کنم ، اتحادها هستند ، آیا در ابتدای محاسبه یک معادله باید قالب اون رو چک کنم و در صورت متناسب بودن با یک اتحاد ، به اون صورت اون رو حل کنم ؟ یا راه دیگه ای هست ، من فعلا مکان جدایی توی برنامه برای محاسبه تک تک اتحادها گذاشتم ولی اگه همه در یک مکان باشند ، قدرت برنامه بیشتر و برنامه جالبتر میشه ...

    بیشتر مشکلات من روی همین قسمتها هست ...
    امیدوارم بتونم تا چند روز دیگه تمومش کنم و روی حل مسائل بیشتر کار کنم ... ( زیاد وقت ندارم )

    اما روش Infix ، PostFix ...
    راستش من هنوز این روش رو خوب درک نکردم ...
    محمود جان
    من این سورس رو که به پایتون هست برات پیدا کردم.
    ( پایتون یکی از بهترین زبانهای برنامه نویسی برای کارهای آکادمیک و ایجاد الگوریتم هاست و کدش هم به شبه کد های توضیحی برنامه نویسی شباهت داره و من به همه توصیه می کنم که باهاش آشنایی داشته باشند )
    http://aspn.activestate.com/ASPN/Coo...8915/index_txt

    سایت رسمی اون هم www.python.org هست و جزو زبانهای متن آزاد محسوب میشه.امیدوارم بزودی بحث جدی اون هم توی این سایت آغاز بشه.
    فکر می کنم برای شروع کار سورس خوبی باشه و اگر بهش مسلط بشی می تونی چیزهای جدیدی هم بهش اضافه کنی
    موفق باشی
    خیلی خیلی ممنونم ، راستش اوایل کد رو یه جورایی فهمیدم ولی اواسط کد که شلوغ شد چیزی متوجه نشدم ... !

    یکی از دوستان در بخش دلفی یک برنامه برام گذاشت که این کار رو میکرد ولی عبارت رو درست حساب نمیکرد ! ، مثلا 4-6+5-6 ، رو -1 حساب کرد !
    احتمالا چون عجله ای درست کردن ، یه جورایی اشتباه شده ... ( البته با دلفی ننوشته بود و با C بود )
    ولی کلا چیزهایی که من از این روش فهمیدم :
    فکر کنم روش به این صورت باشه که ابتدا اعداد رو از عملوندها جدا میکنیم ، مثلا در عبارتی مثل عبارت 4-3+4-5 ، ابتدا رشته به این صورت میشه :
    -+-5434 , و بعد هر دو حرف رو با یک عملوند محاسبه میکنیم ، به این صورت :

    یعنی اول 5 و 4 با عملوند اول محاسبه میشند ، بعد حاصلشون با عدد بعدی و با عملوند بعدی محاسبه میشه و همینطور الی آخر ...

    فکر نکنم درست فهمیده باشم ! ...

    خیلی خوب میشه اگه یکی از دوستان بگه که مثلا معادله ای که در بالا مثال زدم رو چطور با این روش باید حل کرد ؟
    سلام
    دیدم خیلی پیگیر و مشتاق این مطلب هستید گفتم شاید بتونم کمکی بکنم:

    تا جایی که من از بحث دستگیرم شد گیر اصلی روی تجزیه و تحلیل رشته ایی هست که کاربر وارد کرده و بدست آوردن اعداد و متغییر هاست و در واقع بدست آوردن ساختار معادله.

    بدون شک راحت ترین راه برای همچین کاری طراحی یک Parser کوچیک برای عبارات ریاضی هست ، در واقع این راهی که شما داری میری قبلا رفته شده و نتایج بدون نقصی هم گرفته شده.(طراحی کامپایلر برای عبارات ریاضی و حل معادله)

    به طور خلاصه برای این کار شما باید اول متن مورد نظر رو تجزیه کنید(Lexical Analyzer) یعنی اعداد ، متغییر ها و عملوند ها (*,+,-,^,....) را جدا کنید بعد با استفاده از (Parser) یک درخت (Parsing Tree) برای عبارت مورد نظر بسازید در این مرحله حل کردن معادله دیگه کاری نداره.
    اگر می خواهید از تجربیات کسانی که قبلا به موضوع مد نظر شما فکر کرده اند و نتیجه گرفته اند استفاده کنید کتاب طراحی کامپایلر بخونید که تو بازار هم به وفور پیدا میشه.
    (مثلا کتاب اصول طراحی کامپایلر تالیف آلفرد- ای- هو Alfred Aho و ترجمه های مختلفی براش هست- در همین کتاب مثال برای تجزیه عبارات ریاضی وجود داره)

    در ضمن یه چند تا برنامه در این زمینه دیده بودم اگر پیداشون کردم برات میذارم تا عملکردشون رو ببینی.
    موفق باشید و هیچ وقت نا امید نشید.
    با تشکر فراوان از شما ، من هم تقریبا میخوام به همین برسم ...
    درضمن : بایت برنامه ها هم ممنون ، مخصوصا EquationWizard چیز جالبی بود ولی جالب اینجاس که من هنوز با Matlab کار نکردم ...
    امروز اگه خدا بخواد میرم کتابی که گفتید ( اصول طراحی کامپایلر ) و این نرم افزار رو تهیه کنم ...

    با تمام این توضیحات ، بی صبرانه منتظر راهنماییهاتون هستم ، من دیگه برنامه رو ادامه نمی دم تا توی همین بحث و با راهنمایی شما به نتیجه مطلوب برسم و یه جورایی وقتم رو هدر ندم ...
    بازم تاکید میکنم که وقت زیادی ندارم ، کوچکترین راهنمایی شما میتونه خیلی کمک کنه

    جا داره در آخر این پست از همه دوستان مخصوصا جناب Azmoodeh و arsp_2004 و HAIdle و Reza.Palang و همه دوستانی که نظر دادن و راهنماییم کردن تشکر ویژه ای بکنم ...
    کاش میتونستم جبران کنم ...

    موفق و پیروز باشید ( و منتظرم ) ...

صفحه 1 از 2 12 آخرآخر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •