⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brownianbridgepath.h

📁 蒙特卡罗期权定价 布朗桥方法 分层样本方法
💻 H
字号:
#define BrownianBridgePath_H
#include<vector>
#include <iostream>

using namespace std;

class BrownianBridgePath
{
public:
	BrownianBridgePath(int k, int M,int NumberOfPaths)
	{
		K=k;
		m=M;
		PathNumber=NumberOfPaths;
		for(int i=0;i<=PathNumber;i++)
		{
			vector<double>v(m);
			W.push_back(v);
		}/*
		for(int i=0;i<=100000;i++)
			for(int j=0;j<=m;j++)
				W[i].push_back(0);*/
	}

	void GetVanillaPath()
	{

		
		RandomParkMiller generator1(1);  
		generator1.ResetDimensionality(1);
		MJArray VariateArray1(1);

		int PathPerStrata=PathNumber/K;

		for(int k=0;k<PathPerStrata;k++)
		{
			for(int i=1;i<=K;i++)
			{
				generator1.GetUniforms(VariateArray1);
				double U=VariateArray1[0];
				double V=(i-1+U)/K;
				W[i+K*k][1]=InverseCumulativeNormal(V);
			}
		}
	}


	void GetAsianPath()
	{

		RandomParkMiller generator1(1);  
		generator1.ResetDimensionality(1);
		MJArray VariateArray1(1);
		
		RandomParkMiller generator2(1);  
		generator2.ResetDimensionality(1);
		MJArray VariateArray2(1);

		int PathPerStrata=PathNumber/K;

		for(int i=1;i<=K;i++)
		{
			for(int e=1;e<=PathPerStrata;e++)
			{
				generator1.GetUniforms(VariateArray1);
				double U=VariateArray1[0];
				double V=(i-1+U)/K;
				W[(i-1)*PathPerStrata+e][m]=InverseCumulativeNormal(V);
			}

			for(int j=1;j<=m-1;j++)
			{

				double tj=j/(double)m;
				double tjminus1=j/(double)m-1.0/m;   
				double a=(1-tj)/(1-tjminus1);
				double b=(tj-tjminus1)/(1-tjminus1);
				double c=sqrt((1-tj)*(tj-tjminus1)/(1-tjminus1));
				for(int e=1;e<=PathPerStrata;e++)
				{
					generator2.GetGaussians(VariateArray2);
					double Z=VariateArray2[0];
					cout<<Z<<endl;
					W[(i-1)*PathPerStrata+e][j]=a*W[(i-1)*PathPerStrata+e][j-1]+b*W[(i-1)*PathPerStrata+e][m]+c*Z;
				}
			}
		}
	}

	double getW(int i,int j)
	{return W[i][j];}
	void print()
	{
		for(int i=1;i<40;i++)
			for(int j=0;j<=6;j++)
				cout<<W[i][j]<<endl;

	}
private:

	int K;
	int m;
	int PathNumber;
	vector<vector<double>>W;


};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -