PDA

View Full Version : تابع سینوس و کسینوس ...



M E H D I
چهارشنبه 16 دی 1388, 22:59 عصر
با سلام ....

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

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


ممنون ...

xxxxx_xxxxx
پنج شنبه 17 دی 1388, 00:03 صبح
مقداری که به توابع مثلثاتی میدید بر اساس رادیان است و نه درجه.
مثلاً معادل 90 درجه به رادیان میشه pi/2 که pi هم همون 3.14 هست. البته pi رو دقیقتر محاسبه کنید تا نتایجتون هم دقیقتر باشه. (منظورم تعداد ارقام اعشار هست)

ترجیحاً بجای استفاده از تصاویر برای نمایش کد از تگ کد (http://barnamenevis.org/forum/images/editor/code.gif) استفاده کنید.

M E H D I
پنج شنبه 17 دی 1388, 00:56 صبح
ممنون ...
اتفاقا" من هم از رادیان استفاده کردم ، همونطور که تو عکس هست تو ی متغیر P مقدار دقیق عدد پی هست و توی متغییر r زاویه برحسب رادیان .

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

xxxxx_xxxxx
پنج شنبه 17 دی 1388, 09:11 صبح
سلام،
اگر مشکلی وجود داشته باشه معمولاً فقط روی نسبت هایی که نتیجه صفر باید داشته باشند وجود داره.
مثل همین کسینوس 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
موفق باشید/

program2vb
یک شنبه 01 خرداد 1390, 17:07 عصر
ابتدا سعی کنید تا جای ممکن عدد پی رو دقیق محاسبه کنید(هرچند که غیرممکن هست):


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

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

Print Atn(1) * 4

xxxxx_xxxxx
جمعه 27 خرداد 1390, 11:54 صبح
عزیزم چرا نمیشه ¿¿

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

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

MP.C-Writer
جمعه 10 تیر 1390, 16:21 عصر
سلام
یه روش ساده برای محاسبه اش است که ماشین حساب خود ویندوز هم از این راه استفاده می کنه.

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

p = "3.1415926535897932384626433832795"
d = Text1

r = p * d / 180

Print= Sin(r) ]

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

دوستان فقط اگر مطلب جالبی گذاشته می شه که به دردتون می خوره، بی زحمت یه تشکر بکنید/.