xj<-100 buy<-110 r<-0.05 time<-0.25 up<-1.15 down<-0.88 q<-(1+r-down)/(up-down) n<-3 jg<-time/n u <- seq(0, n+1) u <- choose(n, u)*q^u*(1-q)^(n-u) d <- rev(u) s<-50*up^u*d^rev(u) c <- pmax(s-buy,0) for(i in n:1){ c <- exp(-r*jg)*(q*c[-1]+(1-q)*c[-length(c)]) c <- pmax(c,s-buy) } cat("风险中性概率q为:", q, "\n") cat("期权的价值为:", C, "元\n")中为什么Warning messages: 1: In pmax(c, s - buy) : an argument will be fractionally recycled 2: In pmax(c, s - buy) : an argument will be fractionally recycled 3: In pmax(c, s - buy) : an argument will be fractionally recycled
时间: 2024-02-25 14:57:08 浏览: 24
这个警告信息还是由于向量`c`和向量`s-buy`的长度不一致导致的。
在你的代码中,虽然将向量`u`和向量`d`的长度改为$n+2$,但向量`s`的长度仍然是$n+1$。这是因为在计算向量`s`时,使用了`rev(u)`,它的长度是$n+1$,因此向量`s`的长度也是$n+1$。
要解决这个问题,可以将向量`u`和向量`d`的长度改为$n+3$,向量`s`的长度改为$n+2$,即:
```
u <- seq(0, n+2)
u <- choose(n, u)*q^u*(1-q)^(n-u)
d <- rev(u)
s <- 50*up^u*d^rev(u)[-1]
```
这样就可以保证向量`s`和向量`c`的长度一致,不再出现警告信息。
相关问题
xj<-100 buy<-110 r<-0.05 time<-0.25 up<-1.15 down<-0.88 q<-(1+r-down)/(up-down) n<-3 jg<-time/n u<-seq(0,n) u<-choose(n,u)*q^u*(1-q)^(n-u) d<-rev(u) s<-50*up^u*d^rev(u) c<-pmax(s-buy,0) for(i in n:1){ c<-exp(-r*jg)*(q*c[-1]+(1-q)*c[-length(c)]) c<-pmax(c,s-buy) } C<-c[1]在代码中为什么显示In pmax(c, s - buy) : an argument will be fractionally recycled
这个错误是因为在使用pmax函数时,向量c和向量s-bu长度不一致导致的。pmax函数会对向量中的每个元素进行比较,找到最大值,但是当两个向量长度不一致时,较短的向量会被“循环使用”,即向量中的元素会被重复使用,直到和较长的向量一样长。
在这段代码中,向量s-bu的长度为n+1,而向量c的长度为n,所以当使用pmax函数时,向量c中的元素会被循环使用两次,导致了这个错误。解决这个问题的方法是将向量c的长度加1,即:
c <- rep(0, n+1)
c <- pmax(s-bu, 0)
这样向量c的长度就和向量s-bu一样了,就不会出现这个错误了。
min -4x1-x2 s.t. -x1+2x2<=4 2x1+3x2<=12 x1-x2<=3 xj>=0,j=1,2
为了解决这个线性规划问题,我们可以使用单纯形法。
首先,将变量转化为标准形式,引入松弛变量$x_3,x_4,x_5$:
min -4x1-x2
s.t.
-x1+2x2+x3=4
2x1+3x2+x4=12
x1-x2+x5=3
xj>=0,j=1,2,3,4,5
现在,我们可以将这个问题表示为一个矩阵形式:
$$
\begin{bmatrix}
-1 & 2 & 1 & 0 & 0 \\
2 & 3 & 0 & 1 & 0 \\
1 & -1 & 0 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
4 \\
12 \\
3 \\
\end{bmatrix}
$$
目标函数可以写成向量形式:
$$
\begin{bmatrix}
-4 & -1 & 0 & 0 & 0 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
$$
接下来,我们使用单纯形法求解这个问题。
首先,选择$x_1$和$x_2$作为基本变量,将其余的变量作为非基本变量。
这意味着我们对应于单位矩阵中的列是第1列和第2列,其他列均为0。
$$
\begin{bmatrix}
-1 & 2 & 1 & 0 & 0 \\
2 & 3 & 0 & 1 & 0 \\
1 & -1 & 0 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
4 \\
12 \\
3 \\
\end{bmatrix}
$$
$$
\begin{bmatrix}
-4 & -1 & 0 & 0 & 0 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=0
$$
接下来,我们使用高斯-约旦消元法,对矩阵进行操作,使得$x_1$和$x_2$成为单位向量。
对第1行进行操作,将其除以-1:
$$
\begin{bmatrix}
1 & -2 & -1 & 0 & 0 \\
2 & 3 & 0 & 1 & 0 \\
1 & -1 & 0 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
-4 \\
12 \\
3 \\
\end{bmatrix}
$$
对第2行进行操作,将其除以2:
$$
\begin{bmatrix}
1 & -2 & -1 & 0 & 0 \\
1 & \frac{3}{2} & 0 & \frac{1}{2} & 0 \\
1 & -1 & 0 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
-2 \\
6 \\
\frac{3}{2} \\
\end{bmatrix}
$$
对第3行进行操作,将其减去第1行:
$$
\begin{bmatrix}
1 & -2 & -1 & 0 & 0 \\
1 & \frac{3}{2} & 0 & \frac{1}{2} & 0 \\
0 & 1 & 1 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
-2 \\
6 \\
\frac{7}{2} \\
\end{bmatrix}
$$
现在,$x_2$已经是基本变量了,继续使用高斯-约旦消元法。
对第1行进行操作,将其加上2倍的第2行:
$$
\begin{bmatrix}
1 & 0 & -1 & 1 & 0 \\
1 & \frac{3}{2} & 0 & \frac{1}{2} & 0 \\
0 & 1 & 1 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
5 \\
6 \\
\frac{7}{2} \\
\end{bmatrix}
$$
对第2行进行操作,将其减去$\frac{3}{2}$倍的第1行:
$$
\begin{bmatrix}
1 & 0 & -1 & 1 & 0 \\
0 & \frac{3}{2} & \frac{3}{2} & -\frac{1}{2} & 0 \\
0 & 1 & 1 & 0 & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
5 \\
-\frac{3}{2} \\
\frac{7}{2} \\
\end{bmatrix}
$$
对第3行进行操作,将其减去第2行:
$$
\begin{bmatrix}
1 & 0 & -1 & 1 & 0 \\
0 & \frac{3}{2} & \frac{3}{2} & -\frac{1}{2} & 0 \\
0 & 0 & \frac{1}{2} & \frac{1}{2} & 1 \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
x_2 \\
x_3 \\
x_4 \\
x_5 \\
\end{bmatrix}
=
\begin{bmatrix}
5 \\
-\frac{3}{2} \\
-\frac{1}{2} \\
\end{bmatrix}
$$
现在,所有的系数都是非负的,意味着我们已经找到了最优解。$x_1=5,x_2=-\frac{3}{2}$,代入原问题的约束条件中,可以得到$x_3=0,x_4=\frac{15}{2},x_5=\frac{13}{2}$,最优值为$-23$。