امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
توابع آرک
نویسنده پیام
ashkan آفلاین
بنيانگذار سايت
******

ارسال‌ها: 1,553
موضوع‌ها: 80
تاریخ عضویت: آبان ۱۳۸۲

تشکرها : 0
( 140 تشکر در 87 ارسال )
ارسال: #12
RE: توابع آرک
ببين اين كد بكارت مياد
کد:
Option Explicit
Const pi = 3.14159265358979

Type Complex

    re As Double
    im As Double

End Type



Public Function AddComplex(a As Complex, b As Complex) As Complex

AddComplex.re = a.re + b.re
AddComplex.im = a.im + b.im

End Function

Public Function MultiplyComplex(a As Complex, b As Complex) As Complex

MultiplyComplex.re = a.re * b.re - a.im * b.im
MultiplyComplex.im = a.re * b.im + a.im * b.re

End Function

Public Function Conjugate(a As Complex) As Complex

Conjugate.re = a.re
Conjugate.im = -a.im

End Function

Public Function Modulo(a As Complex) As Double

Modulo = Sqr(a.re ^ 2 + a.im ^ 2)

End Function

Public Function Argument(a As Complex) As Double

Dim i As Integer
Dim v(1 To 4) As Double

If (z.re = 0) And (z.im = 0) Then
    Argument = -10
    End Function
End If

v(1) = ArcSin(z.im / Modulo(z))
v(2) = mcPI - v(1)

v(3) = ArcCos(z.re / Modulo(z))
v(4) = -1 * v(3)

For i = 1 To 4

    While v(i) > mcPI
        v(i) = v(i) - 2 * mcPI
    Wend

    While v(i) < mcPI
        v(i) = v(i) + 2 * mcPI
    Wend

Next i

If v(1) = v(3) Then Argument = v(1)
If v(2) = v(3) Then Argument = v(2)

If v(1) = v(4) Then Argument = v(1)
If v(2) = v(4) Then Argument = v(2)

End Function

' Code by : Steven Roland Bazinet (ArcSin function only)

Private Function ArcSin(vntSine As Variant) As Double
On Error GoTo ERROR_ArcSine

Const cOVERFLOW = 6

Dim blnEditPassed As Boolean
Dim dblTemp       As Double

    blnEditPassed = False
    If IsNumeric(vntSine) Then
        If vntSine >= -1 And vntSine <= 1 Then
            blnEditPassed = True
                                                                
            dblTemp = Sqr(-vntSine * vntSine + 1)
            If dblTemp = 0 Then
                ArcSin = Sgn(vntSine) * pi / 2
            Else
                ArcSin = Atn(vntSine / dblTemp)
            End If
        End If
    End If

EXIT__ArcSine:
    If Not blnEditPassed Then Err.Raise cOVERFLOW
    Exit Function

ERROR_ArcSine:
    On Error GoTo 0
    blnEditPassed = False
    Resume EXIT__ArcSine

End Function

' Code by : Me, based (very much!) on Steven R Bazinet's code

Private Function ArcCos(vntcos As Variant) As Double
On Error GoTo ERROR_ArcSine

Const cOVERFLOW = 6

Dim blnEditPassed As Boolean
Dim dblTemp       As Double

    blnEditPassed = False
    If IsNumeric(vntcos) Then
        If vntcos >= -1 And vntcos <= 1 Then
            blnEditPassed = True
                                                                
            dblTemp = Sqr(-vntcos * vntcos + 1)
            If dblTemp = 0 Then
                ArcCos = Sgn(vntcos) * pi / 2
            Else
                ArcCos = Atn(dblTemp / vntcos)
            End If
        End If
    End If

EXIT__ArcCos:
    If Not blnEditPassed Then Err.Raise cOVERFLOW
    Exit Function

ERROR_ArcCos:
    On Error GoTo 0
    blnEditPassed = False
    Resume EXIT__ArcSine

End Function

آشنایی با نظریه زبان باعث شد تا بفهمم کامپیوتر اونی نیست که من میدونم.
۰۵-اردیبهشت-۱۳۸۵, ۱۵:۲۸:۱۷
وب سایت ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #13
RE: توابع آرک
نقل قول: آقای ممد2003 که کارش حرف نداره!
اگه درست فهمیده باشم یه مثال برا این حرف دنباله فیبوناتچی که اعداد اول رو میده.
از اون لینک هم سر در نیاوردم. (اون علامت شبیه E چی بود!)

ما کوچکتیم ! اون E شکله علامت سیگما هستش یعنی مجموع تک تک هر کدوم از اعضای دنباله موجود جلوی علامت سیگما به ازای مقدار n در حدود مثلا از 0 تا بینهایت ! چون آشنا نیستی بیشتر از این نمی تونم توضیح بدم . بهتره از همون تیکه تابع آرک سینوس موژول آقا اشکان استفاده کنی :


کد:
Option Explicit
Const pi = 3.14159265358979

Private Function ArcSin(vntSine As Variant) As Double
On Error GoTo ERROR_ArcSine

Const cOVERFLOW = 6

Dim blnEditPassed As Boolean
Dim dblTemp As Double

blnEditPassed = False
If IsNumeric(vntSine) Then
If vntSine >= -1 And vntSine <= 1 Then
blnEditPassed = True

dblTemp = Sqr(-vntSine * vntSine + 1)
If dblTemp = 0 Then
ArcSin = Sgn(vntSine) * pi / 2
Else
ArcSin = Atn(vntSine / dblTemp)
End If
End If
End If

EXIT__ArcSine:
If Not blnEditPassed Then Err.Raise cOVERFLOW
Exit Function

ERROR_ArcSine:
On Error GoTo 0
blnEditPassed = False
Resume EXIT__ArcSine

End Function

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

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۰۵-اردیبهشت-۱۳۸۵, ۱۷:۵۱:۴۱، توسط Mamad2003.)
۰۵-اردیبهشت-۱۳۸۵, ۱۷:۵۰:۲۲
ارسال‌ها
پاسخ
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1781 تشکر در 620 ارسال )
ارسال: #14
RE: توابع آرک
آقا اشکان خیلی ممنون. فکر کنم اون کد قبلی هم درست بود. مثل اینکه اطلاعات من کم بوده. ما آرک رو اینطوری خوندیم که مثلا اگه سینوس 30 درجه 0.5 باشه آرک سینوس 0.5 میشه 30. منم انتظار داشتم برنامه آرک سینوس 0.5 رو 30 بده! بعد یادم اومد که ما آرک سینوس 30 رو پی شیشم هم می گفتیم.
حالا برا من این پی مبهم شده. پی 180 یا 3.14 ؟! 180 باشه که تقسیم بر 6 میشه 30. اگه 3.14 باشه که همونی میشه که برنامه میده.
حسابی دارین می خندین! خنگ شدم؟!
اصلا این پی 180 با اون پی 3.14 چه فرقی داره؟
نخندین دیگه!

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۰۶-اردیبهشت-۱۳۸۵, ۱۲:۴۳:۳۳
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #15
RE: توابع آرک
نقل قول: اصلا این پی 180 با اون پی 3.14 چه فرقی داره؟
منطقی که اونجا میگه پی یعنی 180 به این منظور نیست که مقدار عدد پی عوض میشه . به این جمله توجه کن :

هر 1 درجه برابر است با pi/180 رادیان !

حالا اگه طرفین رو در یه 180 ضرب کنی عبارت اینطوری میشه :

180 درجه برابر است با pi رادیان !!

به همین علته که توی توابع مثلثاتی آرگومان تابع رو یا با رادیان نمایش میدن یا با درجه . مثلا میگن سینوس 60 درجه یا سینوس پی سوم !

نمونه بارزش همین توابع مثلثاتی وی بی هستن که آرگومان ( مقدار ورودی ) تابع اونها باید برحسب رادیان داده بشه ! اگه میخوای برحسب درجه باشه طبق همون جمله بالا باید آرگومان رو در یک pi/180 ضرب کنی تا مقدار سینوس بر حسب درجه محاسبه بشه ! مثلا اگه بخوای مقدار سینوس 30 درجه رو حساب کنی مینویسی :

((x=sin(30 * (pi/180




گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
(آخرین ویرایش در این ارسال: ۰۶-اردیبهشت-۱۳۸۵, ۱۴:۲۹:۰۷، توسط Mamad2003.)
۰۶-اردیبهشت-۱۳۸۵, ۱۴:۲۵:۲۲
ارسال‌ها
پاسخ
geoomatic آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 0
تاریخ عضویت: آبان ۱۳۸۴

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #16
RE: توابع آرک
نه خطا ميده نه اشتباهه البته كد رو كه نبايد دقيقا كپي كرد خوب معلومه خطا مي ده ، روش رو ببين. بدست آوردن آرك سينوس از ارك تان‍‍‍‍ژانت كه يه كاره ساده دبيرستانه ديگه كمك گرفتن نمي خواد كه ....
۰۶-اردیبهشت-۱۳۸۵, ۱۷:۰۵:۵۲
ارسال‌ها
پاسخ
محمد حسینی آفلاین
کاربر فعال بخش رباتیک
****

ارسال‌ها: 1,363
موضوع‌ها: 139
تاریخ عضویت: آذر ۱۳۸۴

تشکرها : 974
( 1781 تشکر در 620 ارسال )
ارسال: #17
RE: توابع آرک
ممد2003 از کدوم سیاره اومدی؟!

به راه بادیه رفتن، به از نشستن باطل ------------- اگرچه وصل نیابم، بقدر وسع بکوشمRolleyes
۰۷-اردیبهشت-۱۳۸۵, ۱۳:۵۹:۳۰
ارسال‌ها
پاسخ
Mamad2003 آفلاین
کاربر با تجربه
****

ارسال‌ها: 1,150
موضوع‌ها: 18
تاریخ عضویت: آذر ۱۳۸۲

تشکرها : 9
( 388 تشکر در 232 ارسال )
ارسال: #18
RE:  توابع آرک
spiderman نوشته است:ممد2003 از کدوم سیاره اومدی؟!

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

گويند بهشت و حور و کوثر باشد  ..  جوي می و شير و شهد و شکر باشد
پر کن قدح باده و بر دستم نه      ..   نقدي ز هزار نسيه خوشتر باشد  
۰۷-اردیبهشت-۱۳۸۵, ۱۶:۱۶:۵۴
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Question [سوال] چگونگي استفاده از توابع رشته اي در تكست باكس با حالت multiline PRO 4 4,524 ۱۵-شهریور-۱۳۹۱, ۰۱:۰۳:۳۳
آخرین ارسال: PRO
  عدم اجرای بعضی ار توابع در sql sahand87 6 4,901 ۲۶-بهمن-۱۳۹۰, ۱۴:۲۵:۱۲
آخرین ارسال: sahand87
  مشکل با توابع API مرد یخی 1 2,598 ۲۱-آذر-۱۳۹۰, ۱۲:۳۳:۴۰
آخرین ارسال: Payman62
  توابع مورد استفاده در ويژوال بيسيک The.Ghost 1 3,202 ۲۲-اردیبهشت-۱۳۸۹, ۱۳:۵۶:۴۸
آخرین ارسال: PEA
  دستكاري رجيستري با توابع API shedayat 2 3,409 ۲۳-آبان-۱۳۸۸, ۱۹:۲۱:۰۲
آخرین ارسال: Redico2
  توابع كار با فايلهاي باينري reza87 1 2,465 ۲۳-آبان-۱۳۸۸, ۱۹:۱۸:۳۸
آخرین ارسال: Redico2
  آموزش كامل و جامع كار با توابع داده هاي رشته اي يا String mdelghandy 0 5,342 ۰۵-تير-۱۳۸۸, ۱۸:۵۴:۲۵
آخرین ارسال: mdelghandy
  برنامه کاربردی با توابع api با vb shamim57 1 3,795 ۱۷-خرداد-۱۳۸۸, ۱۱:۲۹:۲۴
آخرین ارسال: red11011
  برنامه ای برای رسم توابع ریاضی meno 0 2,016 ۳۱-مرداد-۱۳۸۷, ۱۹:۱۲:۵۸
آخرین ارسال: meno
  توابع داخلی EleRam 2 2,535 ۱۹-اردیبهشت-۱۳۸۷, ۲۳:۲۰:۴۹
آخرین ارسال: EleRam

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS