Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > มีปัญหาเรื่อง error Index was outside the bounds of the array. ครับ



 

มีปัญหาเรื่อง error Index was outside the bounds of the array. ครับ

 



Topic : 069910

Guest




เนื่องจากว่าผมบังเอิญต้องทำ web service ของ Asian Option Price using Monte Carlo Simulation ครับ
คราวนี้ systax ไม่ error สักอย่าง แต่เวลาผมลองใส่ค่ามันจะแจ้ง erro ดังนี้ครับ

System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Service.asianprice(Double S, Double K, Double T, Double r, Double sigma, Int32 NSimulations, Int32 NStep) in c:\Users\nickhun07\Documents\Visual Studio 2010\WebSites\MonteCarlo\App_Code\Service.cs:line 87

ซื่ง Line 87 ที่ค่านั้นคือ
callpayoffvec[i, 1] = (Math.Max(AverageSVec - K, 0));
putpayoffvec[i, 1] = (Math.Max(K - AverageSVec, 0));

ยังไงรบกวนช่วยตรวจดูให้หน่อยนะครับ ผมบอกตรงๆว่าผมไม่มีพื้นฐาน c# ที่ดีเลย ผมทำด้าน Network แต่ว่าจำเป็นต้องทำครับ
ขอบคุณครับ

Code (C#)
public void asianprice(double S,double K,double T,double r,double sigma,int NSimulations,int NStep)
    {
        double  dt, vsqrdt, drift;

        double str_S = S; //spot price
       double str_K = K; //strike
      double str_T = T; //maturity
       double str_r = r; //interest rate
       double str_sigma = sigma; //volatility
       double str_NSim = NSimulations; //no of monte carlo simulations
       double str_NSt = NStep; //no of time steps
        
        int i = 0, j;
        dt = T / (NStep - 1);
        vsqrdt = sigma * (Math.Pow(0.5, dt));
        drift = (r - (Math.Pow(2, sigma)) / 2) * dt;

        double[,] callpayoffvec = new double[i, 1];
        double[,] putpayoffvec = new double[i, 1];     
        int simtost = NSimulations * NStep;
        Random nsmlnsi = new Random();
        int randvec = nsmlnsi.Next(simtost);

        // find the result of sizeof of (S) and float 
        /*    for (i = 0; i < sizeof(int); i++)
            {
                Smat[i, 0] = S; // find the number of each S */

        for (i = 0; i <= NSimulations-1; i++)
        {
            double st = S;
            double curtime = 0;
            double tmpsum = 0;
            for (j = 0; j <= NStep-1; j++)
            {
                curtime = curtime + dt;
                st = st * Math.Exp(drift + vsqrdt + randvec);
                tmpsum = tmpsum + st;   
            }
            double AverageSVec = tmpsum / NStep;
           callpayoffvec[i, 1] = (Math.Max(AverageSVec - K, 0));
          putpayoffvec[i, 1] = (Math.Max(K - AverageSVec, 0));
        }
       double MC_callprice = Math.Exp(-r * T) * Mean(callpayoffvec);
       double MC_putprice = Math.Exp(-r * T) * Mean(putpayoffvec);

      
    }


    double Mean(double[,] dblArray)
    {
        double dblResult = 0;

        foreach (double dblValue in dblArray)
            dblResult += dblValue;
        return dblResult / dblArray.Length;
    }




Tag : .NET, C#







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-12-05 04:06:53 By : nickhun07 View : 2512 Reply : 2
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ตรวจสอบชนิดของตัวแปร ของเขตของตัวแปรครับ

debug แล้วเจอ Error : Index was outside the bounds of the array รบกวนพี่ๆ ช่วยหน่อยค่ะ จะส่งโปรเจ็คแล้ว






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-05 08:17:09 By : webmaster
 


 

No. 2

Guest


ตอนนี้แก้ไปแล้วครับโดยการแก้

double[,] callpayoffvec = new double[i, 1]; เป็น 2
double[,] putpayoffvec = new double[i, 1]; เป็น 2

มีอีกปัญหานึงครับคือ ค่า st ไม่ยอมเป็นค่า S กลับเป็นค่า Infinity แทน
แก้ไขอย่างไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-12-05 23:12:44 By : nickhun07
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : มีปัญหาเรื่อง error Index was outside the bounds of the array. ครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่