نمایش نتایج 1 تا 10 از 10

نام تاپیک: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

  1. #1
    کاربر تازه وارد آواتار loknatesabz
    تاریخ عضویت
    آبان 1390
    محل زندگی
    زمین
    پست
    56

    'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

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

  2. #2
    کاربر تازه وارد آواتار loknatesabz
    تاریخ عضویت
    آبان 1390
    محل زندگی
    زمین
    پست
    56

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    تورو خدا یعنی کسی نیست که به ما کمک کنه...

  3. #3
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    سلام.
    منظورت از روش وتری و تابع و اینچیزا تو ریاضیات هست دیگه نه؟ یعنی یک تابع ریاضی ای رو می خوای از کاربر بگیری مثلا کاربر بگه (y = sin(x + 2 منظورت اینه؟
    یکمی سخته. من فکر میکنم بهتره که یک حالت های ثابت و ساده ای رو تو برنامه داشته باشی مثل عمل جمع، تفریق و یا sin و یا log ، بعد کاربر بتونه از ترکیب اینها فرمول مورد نظر خودش رو بسازه.
    و برای بهتر شدنش می تونی تابعی بنویسی که متن فرمول رو از کاربر به شکل string بگیره و اون رو تجزیه و تحلیل کنه تا برسه به همون حالت های خاصی که بالا گفتم بعد راحت تر میشه محاسبش کرد. در واقع شما یک چیزی می خوای که یه جورایی مثل کامپایلر عمل کنه با این تفاوت که محدود باشه به عبارات ریاضی. و یا میتونی برای ساختن فقط نمونه، کاربر توابع اولیه رو بتونه بنویسه و برای بقیه توابع که از ترکیب اینها درست میشن برنامه پیغام خطا "ناشناخته بودن برای برنامه" رو بده و خیال خودت رو راحت کنی. توابعی که میپذیره مثل توابع sin و exp و + - * / و x^2 و ازین قبیل. پیاده سازی این باید ساده تر باشه.

  4. #4
    کاربر تازه وارد آواتار loknatesabz
    تاریخ عضویت
    آبان 1390
    محل زندگی
    زمین
    پست
    56

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

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

  5. #5
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    ببینی من به نظرم میاد که شما توابعی رو کاربر میتونه ازشون استفاده کنه یعنی همون جمع و تفریق تا سینوس و لگاریتم و توان و این چیزا رو با استفاده از یک لیستی از ثوابت نامگذاری کنی و بعد تو string بیای اول پرانتز ها رو جدا کنی و از داخلی ترین پرانتز شروع کنی (چون داری با C++‎builder کار میکنی خیلی راحت میتونی از توابع UnicodeString استفاده کنی) وقتی مثلا میرسی به عبارت sin تو string بیای تابع سینوس رو با توجه به ورودی که میشه اولین پرانتز بعد از عبارت سینوس رو برسی کنی. و یا وقتی میرسی به "+" تابع جمع رو انجام بدی. به نظرم اولین کار اینه که برسی کنی نوشته کاربر درسته یا خطا داره و اولم از پرانتز شروع کن ببین پرانتزای باز شده درست بسته شده یا نه و عبارات اشتباه نداشته باشه مثل sinx که باید بنویسه (sin(x و اگه تو این قسمت خطا داشت با پیغام گزارش میکنی و اگه درست بود اون موقع باید همون طور که عرض کردم پرانتز ها و عبارات را تفکیک کنی به عبارات کوچکتر تا جایی که برسی به توابعی که اسمشون ت لیست هست همون لیست توابع مجاز که کاربر میتونه ازشون استفاده کنه. اینطوری بعدا هم میتونی توابع جدید به لیستت اضافه کنی. اگه بخوای برنامه رو ویژوال بسازی میتونی دکمه هایی رو برای هر تابعه تو لیست، بگذاری تا با زدن مرحله به مرحله این دکمه ها کم کم فرمول کامل بشه یعنی کاربر بیاد فقط دکمه بزنه و دکمه ها پرانتز ها رو تو کد بنویسن و کاربر اصلا نتونه بنویسه و متن رو تغییر بده اینجوری نمیتونه متن اشتباه بنویسه و شما هم با استفاده از دکمه ها میتونی تابع ها و پرانتز ها رو از کاربر بگیری و به متن کار نداری و فقط متن رو برای نمایش به کاربر مینویسی. حتی اعداد رو هم مینونه با دکمه ها وارد کنه. بعدا که این برنامه رو نوشتی و درست کار کرد اونوقت بیای یه تابعی هم برای این منظور که کاربر دستی متن تابع رو بنویسه تعریف کنی که فقط تابع بیاد متن رو تجزیه تحلیل کنه و بده به مرحله بعد که اونم قبلا نوشتی.
    یعنی در واقع شما سه مرحله کار باید انجام بدی :
    1 - تبدیل متن به لیستی از توابعی که به برنامه شناسوندی و براش تعریف کردی با کلمات رزرو شده مثل sin.
    2 - استفاده از لیست توابع و ورودی هایی که از کاربر گرفتی و به ترتیب پرانتز هاشون تنظیم شده برای بدست آوردن y مورد نظر به ازای x دلخواه.
    3 - اجرای روش وتری (که من نمیدونم چیه، حدس میزنم مربوط به انتگرال باشه) برای این تابع که کاربر نوشته.

  6. #6

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    آیا حق استفاده از کامپوننتها و SDK های آماده رو داری؟

  7. #7
    کاربر تازه وارد آواتار loknatesabz
    تاریخ عضویت
    آبان 1390
    محل زندگی
    زمین
    پست
    56

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    نقل قول نوشته شده توسط شاهین عشایری مشاهده تاپیک
    آیا حق استفاده از کامپوننتها و SDK های آماده رو داری؟
    نه متاسفانه...اجازه استفاده از اونها رو ندارم...
    در ادامه و در پاسخ به دوستمون باید عرض کنم که روش وتری یه متد برای پیدا کردن ریشه توابع در ریاضیات هست مثل روش نیوتن-رافسون همه این روش ها در کتاب محاسبات عددی هستند...
    روش وتری رو در پایین میذارم:
    Secant_Method.JPG
    f(x تابعیه که از کاربر و همچنین مقادیر اولیه x0,x1 رو در شروع برنامه میگیریم...

  8. #8
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    خوب همونطور که گفتید با روش وتری مشکلی ندارید و از فرمول هم پیداست که شما میخوای تابعی داشته باشی که متن کاربر رو بگیره و به ازای هر x ورودی یک y خروجی بده و بعد برنامه بیاد این تابع رو بگذاره تو فرمول بالا و جواب رو بدست بیاره.
    اونوقت این تابع میتونه دو مرحله ای باشه. یک مرحله رشته متنی رو تجزیه و تحلیل کنه و تبدیل کنه به یک کلاس که شما باید اون رو تعریف کنید. مرحله دوم اینکه کلاس که ساخته شد متدی داشته باشه که یک x ورودی دریافت کنه و y خروجی بده. یعنی این نمونه از کلاس درواقع همون تابع کاربر هست که وارد کرده. یعنی شما ماشینی می خوای که یک ورودی بگیره و یک خروجی بده. حالا ماشینت رو به شکل یک کلاس باید تعریف کنی. و این کلاس رو هم در ابتدا با استفاده از رشته متنی که کاربر وارد میکنه بسازی. بعد روش وتری رو و یا هر چیز دیگه مثل رسم نمودار و یا هر چیزی رو روش اعمال کنی.
    حالا از این همه چرت و پرتی که نوشتم چیزیم دستگیرت شد؟ من وقتشو ندارم وگرنه خیلی دوست دارم این برنامه رو بنویسم و حتما وقتم آزاد بشه این کار رو انجام میدم.

  9. #9
    کاربر تازه وارد آواتار loknatesabz
    تاریخ عضویت
    آبان 1390
    محل زندگی
    زمین
    پست
    56

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    خیلی ممنونم از توضیحاتتون ...
    من دارم روش کار میکنم اگه شمام روش کار کردید و به نتیجه رسیدید بذاریدش تو همین تاپیک...
    بازم ممنون

  10. #10
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: 'گرفتن تابع ازکاربر و اعمال روش وتری بر روی آن تابع

    آره ویری انداختی تو کلمون که نمیتونم بهش فکر نکنم. منم یواش یواش روش کار میکنم. کدی که ففعلا نوشتم :

    #ifndef MATH_SCRIPT_DEFINED
    #define MATH_SCRIPT_DEFINED

    #include <stdio.h>
    using namespace std;
    #include <math.h>

    enum MATH_FUNCTIONS
    {
    MFN_ABS ,
    MFN_NEG ,
    MFN_FLOOR ,
    MFN_ADD ,
    MFN_SUBTRACT ,
    MFN_MULTIPLY ,
    MFN_DIVIDE ,
    MFN_SIN ,
    MFN_COS ,
    MFN_TAN ,
    MFN_COT ,
    MFN_EXP ,
    MFN_LN ,
    MFN_EXP2 ,
    MFN_LN2 ,
    MFN____FORCE_32BIT = 0x07ffffff
    };

    typedef long double MATHNUMBER, TMathNumber;


    typedef class MATH_GENERATOR
    {
    public :
    void *Parent;// formula object
    virtual TMathNumber Fx();
    } *PMATH_GENERATOR;

    typedef class MATH_CONSTANT : public MATH_GENERATOR
    {
    TMathNumber ConstValue;
    TMathNumber Fx();
    } *PMATH_CONSTANT;

    typedef class MATH_FN : public MATH_GENERATOR
    {
    MATH_FUNCTIONS fn;
    MATH_GENERATOR *A, *B;
    TMathNumber Fx();
    } *PMATH_ADD;
    TMathNumber MATH_FN::Fx()
    {
    switch (fn) {
    case MFN_ABS:
    return fabsl(A->Fx());
    break;
    case MFN_NEG:
    return -A->Fx();
    break;
    case MFN_FLOOR:
    return floorl(A->Fx());
    break;
    case MFN_ADD:
    return A->Fx() + B->Fx();
    break;
    case MFN_SUBTRACT:
    return A->Fx() - B->Fx();
    break;
    case MFN_MULTIPLY:
    return A->Fx() * B->Fx();
    break;
    case MFN_DIVIDE:
    {
    TMathNumber x = B->Fx();
    if (x == 0)
    {
    return 1.0L / 0.0L;
    }
    return A->Fx() / x;
    }
    break;
    case MFN_SIN:
    return sinl(A->Fx());
    break;
    case MFN_COS:
    return cosl(A->Fx());
    break;
    case MFN_TAN:
    return tanl(A->Fx());
    break;
    case MFN_COT:
    {
    TMathNumber x = tanl(A->Fx());
    if (x == 0)
    {
    return 1.0L / 0.0L;
    }
    return 1.0L / x;
    }
    break;
    case MFN_EXP:
    return expl(A->Fx());
    break;
    case MFN_LN:
    return logl(A->Fx());
    break;
    case MFN_EXP2:
    return expl(B->Fx() * logl(A->Fx()));
    break;
    case MFN_LN2:
    return logl(A->Fx()) / logl(B->Fx());
    break;
    default:
    return 0.0L;
    ;
    }
    }

    #endif

    شما هم اگه چیزی نوشتید خوشحال میشیم ببینیم.
    آخرین ویرایش به وسیله Ananas : چهارشنبه 03 خرداد 1391 در 15:35 عصر

تاپیک های مشابه

  1. کپی گرفتن از فرمها و اعمال تغییرات در آن
    نوشته شده توسط hesam67_b در بخش C#‎‎
    پاسخ: 2
    آخرین پست: پنج شنبه 04 شهریور 1389, 18:23 عصر
  2. روش رمز گزاری روی Access و دسترسی از طریق VB
    نوشته شده توسط ali reza mansoori 2 در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 11
    آخرین پست: جمعه 11 بهمن 1387, 17:42 عصر
  3. نحوه اعمال یک شرط بر روی چند فیلد
    نوشته شده توسط elmira_63 در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: یک شنبه 23 تیر 1387, 16:38 عصر
  4. سوال: Index گذاری و نحوه اعمال آن و تاثیر روی حجم بالای اطلاعات !!
    نوشته شده توسط amin_alexi در بخش SQL Server
    پاسخ: 5
    آخرین پست: سه شنبه 07 خرداد 1387, 11:45 صبح
  5. چطور روی یک تابع اینتدکس بسازیم؟
    نوشته شده توسط mohammed در بخش SQL Server
    پاسخ: 1
    آخرین پست: شنبه 23 خرداد 1383, 18:53 عصر

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

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