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

نام تاپیک: تابع سینوس و کسینوس ...

  1. #1

    Question تابع سینوس و کسینوس ...

    با سلام ....

    می خواستم بدونم چرا VB جواب درست سینوس و کسینوس نود درجه رو نمی ده ؟
    مگه سینوس نود درجه نمی شه یک و کسینوسش هم صفر ؟ پس چرا این داره این مدلی می ده ؟

    در ضمن اگه فرق سینوس و کسینوس رو با تانژانت و کتانژانت بگین ممنون می شم . دو تا شون هم برا ی مختصات دهی که استفاده می شن ...


    ممنون ...
    عکس های ضمیمه عکس های ضمیمه
    آخرین ویرایش به وسیله xxxxx_xxxxx : پنج شنبه 17 دی 1388 در 00:21 صبح دلیل: انتقال تصویر به ضمایم به دلیل ابعاد بالا

  2. #2
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: ُتابع سینوس و کسینوس ...

    مقداری که به توابع مثلثاتی میدید بر اساس رادیان است و نه درجه.
    مثلاً معادل 90 درجه به رادیان میشه pi/2 که pi هم همون 3.14 هست. البته pi رو دقیقتر محاسبه کنید تا نتایجتون هم دقیقتر باشه. (منظورم تعداد ارقام اعشار هست)

    ترجیحاً بجای استفاده از تصاویر برای نمایش کد از تگ کد () استفاده کنید.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  3. #3

    نقل قول: تابع سینوس و کسینوس ...

    ممنون ...
    اتفاقا" من هم از رادیان استفاده کردم ، همونطور که تو عکس هست تو ی متغیر P مقدار دقیق عدد پی هست و توی متغییر r زاویه برحسب رادیان .

    الان من می خوام یه توپ رو از تو یه منجنیق بفرستم هوا بهش زاویه 90 درجه می دم مستقیم نمی ره هوا ، یعنی قوسی مثل زاویه هشتاد و خورده ایی بر می داره می یاد زمین .

  4. #4
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: تابع سینوس و کسینوس ...

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

    Dim pi As Double
    pi = 3.14159265358979
    خب، سینوس 90 درجه میشه 1 که دستور زیر هم همینو میگه:

    MsgBox Sin(pi / 2) 'Sin(90) Result= 1
    حالا کسینوس 90 درجه میشه 0 ، اما دستور زیر یه خروجی دیگه میده!:

    MsgBox Cos(pi / 2) 'Cos(90) Result= 1.61554255216634E-15
    این عدد، یک عدد بسیار بسیار نزدیک به صفر است. آن را اینگونه بخوانید: یک ممیز خورده ای ضربدر 10 به توان منفی پانزده. یعنی صفر ممیز، بعد از نقطه اعشار 14 تا صفر وجود داره و بعد مابقی اعشار. پس عدد خیلی خیلی نزدیک به صفر است:

    0.00000000000000161554255216634


    این مشکل برمیگرده به میزان دقت عدد pi. درواقع محاسبه درست انجام شده و اون عددی که شما می بینید همون کسینوس پی دوم هست. اما ما پی رو فقط تا 14 رقم اعشار درنظر گرفتیم. در صورتی که عدد پی یک عدد اصم هست. یعنی تعداد اعشار آن بینهایت هست.(لااقل تاکنون که اصم نبودن آن ثابت نشده).تصویری که در ضمیمه قرار داره عدد پی رو تا بیش از 4700 رقم اعشار نشون میده! شما میتوانید تا چند میلیون رقم اعشار هم آن را محسابه کنید اما این مقدار در متغیرها نمی گنجد.

    برای رفع این مشکل شما می توانید یک شرط بزارید، که اگر عدد حاصل بسیار کوچک بود آن را 0 درنظر بگیر. پس دستور فوق رو به اینصورت می نویسیم:

    Dim C90 As Double
    C90 = Cos(pi / 2)
    If C90 < 0.000000000000005 Then C90 = 0
    MsgBox C90 'Result= 0
    موفق باشید/
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg pi.jpg‏ (71.8 کیلوبایت, 119 دیدار)
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  5. #5
    کاربر دائمی آواتار program2vb
    تاریخ عضویت
    بهمن 1388
    محل زندگی
    آذربایجان شرقی - تبریز
    پست
    303

    نقل قول: تابع سینوس و کسینوس ...

    ابتدا سعی کنید تا جای ممکن عدد پی رو دقیق محاسبه کنید(هرچند که غیرممکن هست):


    عزیزم چرا نمیشه ¿¿

    اینم روش محاسبش ::

    Print Atn(1) * 4

  6. #6
    VIP آواتار xxxxx_xxxxx
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    X place
    سن
    34
    پست
    4,768

    نقل قول: تابع سینوس و کسینوس ...

    عزیزم چرا نمیشه ¿¿

    اینم روش محاسبش ::

    Print Atn(1) * 4
    سلام،
    منظور من تعداد ارقام اعشار عدد پی بود که در متغیرهای اعشاری جا نمیشه.
    الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.

  7. #7

    نقل قول: تابع سینوس و کسینوس ...

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

    اون هم استفاده از کد های زیره:
    [CODE]Dim p As String, d As Integer, r As Double

    p = "3.1415926535897932384626433832795"
    d = Text1

    r = p * d / 180

    Print= Sin(r) ]

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

    دوستان فقط اگر مطلب جالبی گذاشته می شه که به دردتون می خوره، بی زحمت یه تشکر بکنید/.
    آخرین ویرایش به وسیله MP.C-Writer : پنج شنبه 16 تیر 1390 در 19:05 عصر

برچسب های این تاپیک

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

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