python数学建模--灰色预测

news2025/1/22 12:43:17

目录

  • 灰色预测
  • 一阶灰色方程GM(1,1)
    • 建模步骤
    • 应用及其求解步骤
      • 求级比
      • 一次累加序列
      • 求参数矩阵 u u u
      • 时间响应式
      • 求预测序列
      • 模型检验
      • 实际值与预测值比较及可视化
  • 二阶灰色方程GM(2,1)

灰色预测

灰色预测模型是通过少量的、不完全的信息,建立数学模型做出预测的预测方法,基于客观事物的过去和现在的发展规律,借助于科学的方法对未来的发展趋势和状况进行描述和分析,并形成科学的假设和判断。

一阶灰色方程GM(1,1)

对于原始数据序列 x ( 0 ) = [ x ( 0 ) ( 1 ) , x ( 0 ) ( 2 ) , . . . , x ( 0 ) ( n ) ] x^{(0)}=[x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n)] x(0)=[x(0)(1),x(0)(2),...,x(0)(n)]

建模步骤

  1. 计算级比
    已知序列的级比为
    σ ( k ) = x ( k ) x ( k − 1 ) , k = ( 2 , 3 , . . . , n ) \sigma(k)=\frac{x(k)}{x(k-1)},k=(2,3,...,n) σ(k)=x(k1)x(k),k=(2,3,...,n)
    若所有级比 σ ( k ) \sigma(k) σ(k)都落在区间 ( e − 2 n + 1 , e 2 n + 1 ) (e^{-\frac{2}{n+1}},e^{\frac{2}{n+1}}) (en+12,en+12)内,则序列 x ( 0 ) x^{(0)} x(0)可使用GM(1,1)进行灰色预测,否则应对序列数据 x ( 0 ) x^{(0)} x(0)进行平移变换
    x ( 0 ) ( k ) = x ( 0 ) ( k ) + c , k = 1 , 2 , . . . , n x^{(0)}(k)=x^{(0)}(k)+c,k=1,2,...,n x(0)(k)=x(0)(k)+c,k=1,2,...,n

遗留的问题:原始序列进行累加后为什么不会影响到最终结果?

  1. 累加序列及其均值生成序列
    一次累加序列
    x ( 1 ) = ( x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , . . . , x ( 1 ) ( 7 ) ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 1 ) + x ( 0 ) ( 2 ) , . . . , x ( 0 ) ( 1 ) + . . . + x ( 0 ) ( 7 ) ) \begin{aligned} x^{(1)}&=(x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(7))\\ &=(x^{(0)}(1),x^{(0)}(1)+x^{(0)}(2),...,x^{(0)}(1)+...+x^{(0)}(7)) \end{aligned} x(1)=(x(1)(1),x(1)(2),...,x(1)(7))=(x(0)(1),x(0)(1)+x(0)(2),...,x(0)(1)+...+x(0)(7))
    一次累加序列的均值生成序列为
    z ( 1 ) = ( z ( 1 ) ( 2 ) , z ( 1 ) ( 3 ) , . . . , z ( 1 ) ( 7 ) ) 其中 z ( 1 ) ( k ) = α x ( 1 ) ( k ) + α x ( 1 ) ( k − 1 ) , k = ( 2 , 3 , . . . , 7 ) z^{(1)}=(z^{(1)}(2),z^{(1)}(3),...,z^{(1)}(7))\\ 其中z^{(1)}(k)=\alpha x^{(1)}(k)+\alpha x^{(1)}(k-1),k=(2,3,...,7) z(1)=(z(1)(2),z(1)(3),...,z(1)(7))其中z(1)(k)=αx(1)(k)+αx(1)(k1),k=(2,3,...,7)

注:均值生成序列中的权重参数取值范围为 0 ≤ α ≤ 1 0\leq \alpha \leq 1 0α1,一般取0.5

  1. 建立模型
    白化方程
    d x ( 1 ) ( t ) d t − a z ( 1 ) ( t ) = b \frac{dx^{(1)}(t)}{dt}-az^{(1)}(t)=b dtdx(1)(t)az(1)(t)=b
    灰微分方程
    x ( 0 ) ( k ) − a z k ( 1 ) = b 即 − a z k ( 1 ) + b = x ( 0 ) ( k ) (1) x^{(0)}(k)-az_k^{(1)}=b\\ 即-az_k^{(1)}+b=x^{(0)}(k)\tag{1} x(0)(k)azk(1)=bazk(1)+b=x(0)(k)(1)

其实在这个地方还是有一些遗留问题的,比如白化方程、灰微分方程各是怎么得到的?建立这两个方程背后的数学原理?

将(1)式化为矩阵形式为

[ − z ( 1 ) ( 2 ) 1 − z ( 1 ) ( 3 ) 1 ⋮ 1 − z ( 1 ) ( k ) 1 ] [ a b ] = [ x ( 0 ) ( 2 ) x ( 0 ) ( 3 ) ⋮ x ( 0 ) ( k ) ] \begin{bmatrix} -z^{(1)}(2)&1\\ -z^{(1)}(3)&1\\ \vdots&1\\ -z^{(1)}(k)&1\\ \end{bmatrix} \begin{bmatrix} a\\b \end{bmatrix}=\begin{bmatrix} x^{(0)}(2)\\ x^{(0)}(3)\\ \vdots\\ x^{(0)}(k) \end{bmatrix} z(1)(2)z(1)(3)z(1)(k)1111 [ab]= x(0)(2)x(0)(3)x(0)(k)
X u = Y Xu=Y Xu=Y,根据最小二乘法得到参数矩阵 u u u的估计值为
u = ( X T X ) − 1 X T Y u=(X^TX)^{-1}X^TY u=(XTX)1XTY

代入数据求得参数矩阵 u u u,由此得到白化方程与灰微分方程的参数 a , b a,b a,b
那么白化方程的时间响应式:
x ( 1 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b a ) e − a k + b a ,其中 k = 0 , 1 , . . . x^{(1)}(k+1)=(x^{(0)}(1)-\frac{b}{a})e^{-ak}+\frac{b}{a},其中k=0,1,... x(1)(k+1)=(x(0)(1)ab)eak+ab,其中k=0,1,...
将k代入上式,得到一次累减序列 x m i n u s ( 1 ) = [ x m i n u s ( 1 ) ( 1 ) , x m i n u s ( 1 ) ( 2 ) , . . . , x m i n u s ( 1 ) ( n ) ] x^{(1)}_{minus}=[x^{(1)}_{minus}(1),x_{minus}^{(1)}(2),...,x_{minus}^{(1)}(n)] xminus(1)=[xminus(1)(1),xminus(1)(2),...,xminus(1)(n)]

那么预测序列为
x p r e d ( 0 ) = [ x p r e d ( 0 ) ( 1 ) , x p r e d ( 0 ) ( 2 ) , . . . , x p r e d ( 0 ) ( k ) ] , k = 1 , 2 , . . . 其中 x p r e d ( 0 ) ( k ) = x m i n u s ( 0 ) ( k ) − x m i n u s ( 0 ) ( k − 1 ) x p r e d ( 0 ) ( 1 ) = x m i n u s ( 1 ) ( 1 ) x^{(0)}_{pred}=[x^{(0)}_{pred}(1),x^{(0)}_{pred}(2),...,x^{(0)}_{pred}(k)],k=1,2,...\\其中x^{(0)}_{pred}(k)=x^{(0)}_{minus}(k)-x^{(0)}_{minus}(k-1)\\ x^{(0)}_{pred}(1)=x^{(1)}_{minus}(1) xpred(0)=[xpred(0)(1),xpred(0)(2),...,xpred(0)(k)],k=1,2,...其中xpred(0)(k)=xminus(0)(k)xminus(0)(k1)xpred(0)(1)=xminus(1)(1)
5. 误差检验
(1)相对误差检验
λ ( k ) = ∣ x ( 0 ) ( k ) − x p r e d ( 0 ) ( k ) ∣ x ( 0 ) ( k ) , k = 1 , 2 , . . . , n \lambda(k)=\frac{|x^{(0)}(k)-x^{(0)}_{pred}(k)|}{x^{(0)}(k)},k=1,2,...,n λ(k)=x(0)(k)x(0)(k)xpred(0)(k),k=1,2,...,n

λ ( k ) < 0.2 时 \lambda (k)<0.2时 λ(k)<0.2,可认为模型达到了一般要求
λ ( k ) < 0.1 时 \lambda (k)<0.1时 λ(k)<0.1,可认为模型达到了较高要求
(2)级比偏差值检验
ϵ ( k ) = ∣ 1 − ( 1 − 0.5 a 1 + 0.5 a ) σ ( k ) ∣ , k = 2 , 3 , . . . , n \epsilon(k)=|1-(\frac{1-0.5a}{1+0.5a})\sigma (k)|,k=2,3,...,n ϵ(k)=∣1(1+0.5a10.5a)σ(k),k=2,3,...,n

ϵ ( k ) < 0.2 时 \epsilon(k)<0.2时 ϵ(k)<0.2,可认为模型达到了一般要求
ϵ ( k ) < 0.1 时 \epsilon(k)<0.1时 ϵ(k)<0.1,可认为模型达到了较高要求

应用及其求解步骤

已知 x ( 0 ) = ( 25723 , 30379 , 34473 , 38485 , 40514 , 42400 , 48337 ) , 试建立 G M ( 1 , 1 ) 模型 已知x^{(0)}=(25723,30379,34473,38485,40514,42400,48337),试建立GM(1,1)模型 已知x(0)=(25723,30379,34473,38485,40514,42400,48337),试建立GM(1,1)模型
建模开始

求级比

import numpy as np
x0=np.array([25723,30379,34473,38485,40514,42400,48337])
sigma=x0[:-1]/x0[1:]
>>> array([0.84673623, 0.88124039, 0.89575159, 0.94991855, 0.95551887,0.87717484])
bound1=[sigma.min(),sigma.max()]
>>> [0.8467362322657098, 0.9555188679245283]
bound2=[np.exp(-2/(x0.size+1)),np.exp(2/(x0.size+1))]
>>> [0.7788007830714049, 1.2840254166877414]

由于bound1 ∈ \in bound2,故级比符合要求

一次累加序列

x ( 1 ) = ( x ( 1 ) ( 1 ) , x ( 1 ) ( 2 ) , . . . , x ( 1 ) ( 7 ) ) = ( x ( 0 ) ( 1 ) , x ( 0 ) ( 1 ) + x ( 0 ) ( 2 ) , . . . , x ( 0 ) ( 1 ) + . . . + x ( 0 ) ( 7 ) ) \begin{aligned} x^{(1)}&=(x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(7))\\ &=(x^{(0)}(1),x^{(0)}(1)+x^{(0)}(2),...,x^{(0)}(1)+...+x^{(0)}(7))\\ \end{aligned} x(1)=(x(1)(1),x(1)(2),...,x(1)(7))=(x(0)(1),x(0)(1)+x(0)(2),...,x(0)(1)+...+x(0)(7))

x1=np.cumsum(x0)
>>> array([ 25723,  56102,  90575, 129060, 169574, 211974, 260311],dtype=int32)

一次累加序列的均值生成序列为
z ( 1 ) = ( z ( 1 ) ( 2 ) , z ( 1 ) ( 3 ) , . . . , z ( 1 ) ( 7 ) ) 其中 z ( 1 ) ( k ) = 0.5 x ( 1 ) ( k ) + 0.5 x ( 1 ) ( k − 1 ) , k = ( 2 , 3 , . . . , 7 ) z^{(1)}=(z^{(1)}(2),z^{(1)}(3),...,z^{(1)}(7))\\ 其中z^{(1)}(k)=0.5x^{(1)}(k)+0.5x^{(1)}(k-1),k=(2,3,...,7) z(1)=(z(1)(2),z(1)(3),...,z(1)(7))其中z(1)(k)=0.5x(1)(k)+0.5x(1)(k1),k=(2,3,...,7)

z1=(x1[:-1]+x1[1:])/2.0
>>> array([ 40912.5,  73338.5, 109817.5, 149317. , 190774. , 236142.5])

求参数矩阵 u u u

X = [ − z ( 1 ) ( 2 ) 1 − z ( 1 ) ( 3 ) 1 ⋮ 1 − z ( 1 ) ( k ) 1 ] Y = [ x ( 0 ) ( 2 ) x ( 0 ) ( 3 ) ⋮ x ( 0 ) ( k ) ] X=\begin{bmatrix} -z^{(1)}(2)&1\\ -z^{(1)}(3)&1\\ \vdots&1\\ -z^{(1)}(k)&1\\ \end{bmatrix}Y=\begin{bmatrix} x^{(0)}(2)\\ x^{(0)}(3)\\ \vdots\\ x^{(0)}(k) \end{bmatrix} X= z(1)(2)z(1)(3)z(1)(k)1111 Y= x(0)(2)x(0)(3)x(0)(k)

X=np.vstack([-z1,np.ones(x0.size-1)]).T
Y=x0[1:].T
u=np.matmul(np.matmul((np.linalg.inv(np.matmul(X.T,X))),X.T),Y)
>>> array([-8.42648092e-02,  2.78584508e+04])

时间响应式

于是,白化方程的时间响应式为
x ( 1 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b a ) e − a k + b a = ( 25723 − 27858.45 − 0.0843 ) e 0.0843 k − 27858.45 − 0.0843 = 356328.99 e 0.0843 k − 330605.99 \begin{aligned} x^{(1)}(k+1)&=(x^{(0)}(1)-\frac{b}{a})e^{-ak}+\frac{b}{a}\\ &=(25723-\frac{27858.45}{-0.0843})e^{0.0843k}-\frac{27858.45}{-0.0843}\\ &=356328.99e^{0.0843k}-330605.99 \end{aligned} x(1)(k+1)=(x(0)(1)ab)eak+ab=(257230.084327858.45)e0.0843k0.084327858.45=356328.99e0.0843k330605.99

求预测序列

#生成匿名函数
x_m=lambda k:(x0[0]-(u[1]/u[0]))*np.e**(-u[0]*k)+u[1]/u[0]
# 一次累减序列
x_m1=x_m(np.arange(x0.size+1))
# 预测序列
x_pred=np.diff(x_m1)
>>> array([31327.3567122 , 34081.56224489, 37077.90911705, 40337.68565577,
       43884.05179286, 47742.20361062, 51939.55235392])

模型检验

相对误差
λ ( k ) = ∣ x ( 0 ) ( k ) − x p r e d ( 0 ) ( k ) ∣ x ( 0 ) ( k ) , k = 1 , 2 , . . . , n \lambda(k)=\frac{|x^{(0)}(k)-x^{(0)}_{pred}(k)|}{x^{(0)}(k)},k=1,2,...,n λ(k)=x(0)(k)x(0)(k)xpred(0)(k),k=1,2,...,n

lambda_k=abs(x0[1:]-x_pred[:-1])/x0[1:]
>>> array([0.03121751, 0.01135491, 0.03656206, 0.00435194, 0.03500122,
       0.0123052 ])

相对误差值 λ ( k ) < 0.1 \lambda(k)<0.1 λ(k)<0.1,可认为模型达到了较高要求

级比偏差值
ϵ ( k ) = ∣ 1 − ( 1 − 0.5 a 1 + 0.5 a ) σ ( k ) ∣ , k = 2 , 3 , . . . , n \epsilon(k)=|1-(\frac{1-0.5a}{1+0.5a})\sigma (k)|,k=2,3,...,n ϵ(k)=∣1(1+0.5a10.5a)σ(k),k=2,3,...,n

epsilon_k=abs(1-((1-0.5*(-0.0834))/(1+0.5*(-0.0834)))*sigma)
>>> array([0.07957306, 0.04206604, 0.02629194, 0.03258912, 0.03867683,
       0.04648542])

级比偏差值 ϵ ( k ) < 0.1 \epsilon(k)<0.1 ϵ(k)<0.1,可认为模型达到了较高要求

实际值与预测值比较及可视化

import matplotlib
import matplotlib.pyplot as plt
x_pred1=x_pred.tolist()
x_pred1.insert(0,x0[0])
matplotlib.rcParams['font.family']='SimHei'
plt.plot(range(x0.size),x0,'r-',label='原始序列')
plt.plot(range(x0.size),x_pred1[:-1],'g--',label='预测序列')
plt.legend()
plt.show()

运行结果
在这里插入图片描述

二阶灰色方程GM(2,1)

To be continue…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一篇文章彻底明白重要概念——注解

1. 注解基本概念 注解&#xff0c;什么是注解&#xff1f; 打开百度搜索 好&#xff0c;看不懂 没关系 一步一步慢慢来 先不管注解&#xff0c;注释这个概念应该就很熟悉了&#xff0c;文档注释&#xff0c;单行注释&#xff0c;多行注释 注释是对一段程序&#xff0c;一…

实战三十七:基于HMM模型实现中文分词

任务描述:在理解中文文本的语义时需要进行分词处理,分词算法包括字符串匹配算法,基于统计的机器学习算法两大类。本案例在前文将说明常用分词库及其简单应用,之后会通过中文分词的例子介绍和实现一个基于统计的中文分词方法——HMM模型,该模型能很好地处理歧义和未登录词问…

阿里工作8年熬到P8,经验全在这份864页文档里了,已助朋友进腾讯!

在阿里工作了8年&#xff0c;工作压力大&#xff0c;节奏快&#xff0c;但是从技术上确实得到了成长&#xff0c;尤其是当你维护与大促相关的系统的时候&#xff0c;熬到P7也费了不少心思&#xff0c;小编也是个爱学习的人&#xff0c;把这几年的工作经验整理成了一份完整的笔记…

UG/NX二次开发Siemens官方NXOPEN实例解析—2.5 QuickExtrude

列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler UG/NX二次开发Siemens官方NXOPEN实例解析—2.4 File2Points UG/NX二次…

Linux学习-96-win和vmware的linux系统之间文件传递

19.5 win和vmware的linux系统之间文件传递 Linux虚拟机与Window主机之间进行文件传输&#xff1a;需要在虚拟机安装VMware Tools才能实现Linux虚拟机和Windows主机之间文件传输。 Linux虚拟机与宿主机之间传输文件&#xff0c;可以通过以下几种方式&#xff1a; 方法1&#xf…

研究和文献参考丨艾美捷游离脂肪酸荧光法测定试剂盒

FFA的测量可用于确定代谢状态。艾美捷游离脂肪酸&#xff08;FFA&#xff09;荧光测定法为测量血浆、血清和尿液中游离脂肪酸提供了一种简单、可重复和灵敏的工具。FFA荧光测定法利用偶联酶反应产生高荧光产物间苯2酚。 艾美捷游离脂肪酸荧光法测定试剂盒基本参数&#xff1a; …

让chatGPT回答一些有趣?无聊的问题

本来我是没有国外的手机号的&#xff0c;也就没法注册chatGPT并使用。 不过好在 csdn 的猿如意 里面有体验功能&#xff0c;我就顺便体验一下。 这一次主要是看看chatGPT能否理解我的目的&#xff0c;很可惜&#xff0c;这一次并没有。 其实第一次 chatGPT准确的回答出了 自述…

windows11下安装Scoop和lux(annie)

windows11下安装Scoop和lux(annie) 文章目录windows11下安装Scoop和lux(annie)参考链接一、安装前环境确认1.PowerShell版本要求2.NET框架版本二、安装Scoop1. 安装scoop1.1 用默认安装路径的方式安装1.2 用指定安装路径的方式安装2. 验证是否安装成功3. 卸载scoop三、安装 lux…

NVIDIA-TAO环境配置及预训练模型使用样例-车牌号识别(Docker容器方法)

TAO是英伟达推出的可以简化企业AI应用和部署的模型自适应平台&#xff0c;其提供了大量的预训练模型以及模型finetune程序&#xff0c;使得用户可以快速的在自己的数据上进行模型finetune&#xff0c;之后用TAO的部署工具可以快速完成模型的部署。 TAO提供了四种使用方式&…

【LeetCode】118. 杨辉三角

【LeetCode】118. 杨辉三角 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 数学方式 双重循环&#…

UDP-TCP

文章目录再谈端口号协议号&#xff1a;端口号范围划分pidof(),命令行输入&#xff0c;根据进程名直接拿到进程idnetstat -nltp :查看网络状态UDP协议如何做到向上交互&#xff1f;&#xff08;分用问题&#xff09;如何做到封装和解包&#xff1f;Linux内核当中&#xff0c;如何…

【学习笔记】JDK源码学习之LinkedHashMap(附带面试题)

【学习笔记】JDK源码学习之LinkedHashMap&#xff08;附带面试题&#xff09; 其他好文&#xff1a; 地址 什么是 LinkedHashMap ? 它的作用又是什么&#xff1f;它和 HashMap 有什么区别呢&#xff1f; 老样子&#xff0c;带着以上问题来深入了解 LinkedHashMap 的作用吧。…

音频文件格式有哪些?误删音频文件如何恢复?

音频用于在计算机系统上以数字格式存储的音频数据。日常生活中&#xff0c;我们也会通过录音来保存一些重要的内容&#xff0c;或者是记录一些重要的事情。但是&#xff0c;你知道音频文件有哪几种格式吗&#xff1f;如果音频在保存的过程中&#xff0c;因为我们的误操作&#…

72. 如何给 SAP ABAP ALV 报表的修改功能添加自定义校验逻辑

本教程前面的步骤,我们已经介绍了如何编辑 SAP ALV 报表里的某一列数据: 70. 利用 ALV 实现增删改查系列之二:仅让 ALV 报表某一列允许被编辑如下图 Airfare 和 Capacity 列所示。然而实际的开发项目中,我们肯定不会允许用户对这些列进行随心所欲的修改,必定要增添一些自定…

力扣(202.454)补9.18

202.快乐数 不会。又要用到数学的思想&#xff0c;你要学会去分析。&#x1f641; 根据上表你需要知道&#xff0c;一个很大的数&#xff0c;经过快乐运算&#xff0c;不可能会一直增大&#xff0c;一定会受到限制。 class Solution { private int getNext(int n) { …

知识点21--springboot 文件上传

前面有一篇简单版的文件上传&#xff0c;是为了让大家知道文件上传是在干什么&#xff0c;但是在正式的开发中文件上传是一个稍微有些麻烦的东西&#xff0c;需要从页面层开发到数据层&#xff0c;如果你常常听人说文件上传会知道有一些相关的名词&#xff0c;比如切片、秒传、…

编程算法集锦

编程算法集锦一、分治法1.分治法介绍2.归并排序3.快速排序4.中值问题二、贪心法1.贪心法2.最小生成树Kruskal算法3.Huffman编码4.单源点最短路径三、回溯法1.回溯法-n皇后问题2.子集和数四、动态规划1.数塔问题2.最长公共子序列3.求序列-2 11 -4 13 -5 -2的最大字段和4.求最长的…

Linux内核工作队列(workqueue)详解

1、为什么需要工作队列&#xff1f; 在内核代码中&#xff0c;经常会遇到不能或不合适去马上调用某个处理过程&#xff0c;此时希望将该工作推送给某个内核线程执行&#xff0c;这样做的原因有很多&#xff0c;比如&#xff1a; 中断触发了某个过程的执行条件&#xff0c;而该过…

电表485通讯抄表软件

电表485通讯主要是有线抄表&#xff0c;电表485通讯抄表软件选用485线传送数据&#xff0c;适宜集中化安装电表&#xff0c;下列给您具体说说电表485通讯抄表原理、应用领域等。 电表485通讯抄表原理 RS485抄表适用电表集中化安装场合&#xff0c;为节省RS485通讯线成本&…

VR渲染之Stereo Rendering解析

VR渲染的独特和最明显的方面之一是需要生成两个视图&#xff0c;左右眼睛各一个。我们需要这两个视图来为观众创建立体3D效果。 Multi Camera 传统上&#xff0c;VR应用程序必须绘制两次几何体--一次是左眼&#xff0c;一次是右眼。这基本上使非VR应用程序所需的处理翻了一番。…