大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
病情分析:
成都创新互联公司专注骨干网络服务器租用十载,服务更有保障!服务器租用,四川电信机房托管 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。
根据你的情况,可能是由于内分泌失调或激素水平改变引起的
指导意见:
建议去医院做个激素检查,也可以吃中药调理下,平时应保持外阴部的清洁干燥,注意经期和性生活时的卫生。祝你健康
病情分析:
您好,您的情况如果是有性生活,如果是有这样的情况,当然是有怀孕的可能;也可能是月经推迟的问题;正常情况下,如果是月经推迟在一周之内是可能的;
指导意见:
所以,现在可以观察几天看看,如果是几天后来了,量和以前差不多,就应该是没有什么问题的;如果是还是不来,只能是到医院检查一下才能知道是什么原因的
病情分析:
如果是月经推迟超过1周还没有正常的月经,那么是要考虑是不是有内分泌失调,如果是上个月还是有同房,那么也有可能是怀孕
指导意见:
建议可以到正规医院查一下血孕酮以及hcg,确定是不是怀孕
病情分析:
你好,根据你的简单描述,考虑早孕流产可能
指导意见:
建议注意休息,立即当地正规医院彩超及血HCG检查,必要时保胎治疗
病情分析:
你好,以你说的情况还是由于炎症或者是子宫病变引起的症状
指导意见:
建议你最好是到医院妇科做一个全面的检查后,再做对症治疗,祝健康
可以借助DirectX来编程。免费3D引擎可不好找,一般来说速度比不上硬件加速后的DX,尤其令人头疼的是一般都没有针对VB的文档,LZ有这方面理想的话,自己写一个吧……
我不得不承认在VB上写DirectX的教程相当难找!如果LZ想深入研究三维图形问题,C++一定要学,就算不能用C++编程,起码要能把C++程序翻译成VB程序。
我自己学会DX编程花了两三个月(很浅)。编这样一个程序难度是有点大的。
工具:DirectX9和其针对VB的库(项目-添加引用。.NET库里DX库一般都有),VB不知道现在支不支持DX10以上的版本,不过9绝对够用了。
思路:一切3D图形都是由三角形拼成的。矩形挖掉一个圆孔可不是一个方便画的图形,我估计至少得有24个三角形。你需要记录这些点的坐标,或者干脆把它们写在文件里,到时读出来。
这是我的一个老DX程序的不完全的代码(显示一个黑乎乎的平面),不一定能编译,可以参考一下。
Imports Microsoft.DirectX '一定要~
Public Class FormMain
'Direct3D Startup
Dim d3dpp As New Direct3D.PresentParameters 'DX基本参数,例如全屏还是窗口等
Public MyDevice As Direct3D.Device ‘DX基本设备,画图就靠它。
'Matrices
Dim matWorld, matView, matProj As Matrix '世界位置矩阵,摄像机位置矩阵和透视矩阵,数学要学好啊。
'mesh
Public MyPlane as Direct3D.Mesh ’我们的物体
Public VBPlane(3) As Direct3D.CustomVertex.PositionNormalTextured '存放顶点位置的数组
#Region "DX Core"
Public Sub InitDeviceObjects()
With d3dpp ‘以下请照抄。
.Windowed = True ‘不全屏。
.SwapEffect = Direct3D.SwapEffect.Discard ’双缓冲交换效果。请百度“双缓冲”
.BackBufferFormat = Direct3D.Format.Unknown
.EnableAutoDepthStencil = True ’让DX自动管理深度缓冲
.AutoDepthStencilFormat = Direct3D.DepthFormat.D16
End With
MyDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me.Handle, Direct3D.CreateFlags.HardwareVertexProcessing, d3dpp) '创建DX设备啦!以下两句请照抄。
MyDevice.SetRenderState(Direct3D.RenderStates.ZEnable, True) ‘Z缓冲
MyDevice.SetRenderState(Direct3D.RenderStates.NormalizeNormals, True)'法线归一化,请看相关数学书籍。
End Sub
Public Sub RestoreDeviceObjects()
Dim PlaneIB() As Short = {0, 1, 3, 0, 2, 3} ’顶点索引信息。
Dim AttrTable(1) As Direct3D.AttributeRange ‘顶点分组属性表
AttrTable(0).AttributeId = 0
AttrTable(0).FaceStart = 0
AttrTable(0).FaceCount = 2 ’有两个三角形
AttrTable(0).VertexStart = 0
AttrTable(0).VertexCount = 4 ‘四个点
‘顶点坐标信息。
VBPlane(0) = New Direct3D.CustomVertex.PositionNormalTextured(-500, -500, 0, 0, 0, 1, 0, 0)
VBPlane(1) = New Direct3D.CustomVertex.PositionNormalTextured(500, -500, 0, 0, 0, 1, 1, 0)
VBPlane(2) = New Direct3D.CustomVertex.PositionNormalTextured(-500, 500, 0, 0, 0, 1, 0, 1)
VBPlane(3) = New Direct3D.CustomVertex.PositionNormalTextured(500, 500, 0, 0, 0, 1, 1, 1)
MyPlane = New Direct3D.Mesh(2, 4, Direct3D.MeshFlags.Managed, Direct3D.VertexFormats.Position + Direct3D.VertexFormats.Normal + Direct3D.VertexFormats.Texture1, MyDevice) ’创建物体
MyPlane.SetVertexBufferData(VBPlane, Direct3D.LockFlags.None) ‘输入顶点坐标数据
MyPlane.SetIndexBufferData(PlaneIB, Direct3D.LockFlags.None) ‘输入索引数据
MyPlane.SetAttributeTable(AttrTable) ‘输入顶点分组属性表
End Sub
Public Sub Render() ‘调用它画图
Dim vlook As New Vector3(1, 0, 0)
Dim vPos As New Vector3(0,0,0)
Dim vUp As New Vector3(0, 0, 1)
MatView = Matrix.LookAtLH(vPos, vlook, vUp) ‘计算摄像机位置矩阵
Device.SetTransform(Direct3D.TransformType.View, MatView) ‘设置当前摄像机位置矩阵为MatView。
Dim fAspect As Single = Me.Width / Me.Height ’窗口长宽比
matProj = Matrix.PerspectiveFovLH(Math.PI / 4, fAspect, 1.0F, 10001) ‘计算透视矩阵MatProj。
MyDevice.SetTransform(Direct3D.TransformType.Projection, matProj) ‘设置当前透视矩阵为MatProj。
MyDevice.Clear(Direct3D.ClearFlags.Target + Direct3D.ClearFlags.ZBuffer, Color.Blue, 1.0F, 0) ’先刷蓝屏
MyDevice.BeginScene() ‘开始画
MatWorld = Matrix.Identity ’物体位于原点,不旋转
Device.SetTransform(Direct3D.TransformType.World, MatWorld) ’设置物体位置
Me.Mesh.DrawSubset(0) ‘画物体
MyDevice.EndScene() ’结束
MyDevice.Present() ‘显示在屏幕上
End Sub
Public Sub DeleteDeviceObjects() ’结束程序时放掉资源
MyPlane.Dispose()
MyDevice.Dispose()
End Sub
#End Region
Private Sub FormMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
DeleteDeviceObjects()
Windows.Forms.Cursor.Show()
End Sub
Private Sub FormMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
InitDeviceObjects()
RestoreDeviceObjects()
Windows.Forms.Cursor.Hide()
Render()
End Sub
End Class
vb.netme.containskey方法
作用是判断Map中是否有所需要的键值,下面是具体的代码:
复制代码
public static void main(String[] args) {
MapString, String map = new HashMapString, String();
map.put("sf2", "111111");
map.put("s3f", "111111");
map.put("s4f", "111111");
map.put("s5f", "111111");
Boolean is = map.containsKey("f2");
if(is){
System.out.println("是有这个值的");
}else{
System.out.println("没有的");
}
一、地下水水质评价
地下水水质评价是地下水资源评价的重要组成部分,只有水质符合要求的地下水才是可以利用的地下水资源。地下水水质评价的核心是评价模型的建立和运行。地下水水质评价的方法很多,大体可分为以下几类:综合指数法、模糊数学法、灰色系统法、物元分析法、人工神经网络评价法等。不同的评价方法各有所长,每一种方法均有一定的适用条件,为了获得较为准确的评价结果,系统提供了目前应用较广的水质指数评价、模糊综合评判和人工神经网络评价三种方法进行计算与比较,并结合GIS技术得到地下水水质的空间变化规律。
(一)指数评价法
该评价方法以我国现行的《地下水质量标准》(GB/T14848—93)为依据,包括单项评价和综合评价法,单项评价采用单因子评价法,按《地下水质量标准》所列分类指标,划分为五类,不同类别标准相同时,从优不从劣。综合评价法按下式计算综合评价分值F。
松嫩平原地下水资源及其环境问题调查评价
式中:F为各单项组分评分值Fi的平均值;Fmax为单项组分评价分值Fi中的最大值;n为参评项数。
该评价方法的优点是数学过程简捷、运算方便、物理概念清晰,存在的问题是描述环境质量的非连续性和过于突出最大污染因子的作用。
(二)模糊综合评价法
应用模糊数学对水质进行综合评价的基本思想是:由实测值建立各因子指标对各级标准的隶属度集,形成隶属度矩阵,再把因子的权重集与隶属度矩阵相乘,得到模糊积,获得一个综合评判集。综合评判集表征水质对各级标准水质的隶属程度,反映了综合水质级别的模糊性。从理论上讲,模糊综合评价法由于体现了水体环境中客观存在的模糊性和不确定性,符合客观规律,合理性更强。但评价过程较复杂,需要解决好权重的合理分配。该方法的评价过程为:
1.计算评价因子隶属度
用线形隶属函数确定各评价因子对各级水的隶属度的计算公式如下:
j=1级水时:
松嫩平原地下水资源及其环境问题调查评价
j=2,3,4级水时:
松嫩平原地下水资源及其环境问题调查评价
j=5级水时:
松嫩平原地下水资源及其环境问题调查评价
式中:Y为各因子分别属于各级水的隶属度;X 为各因子的实测浓度;Si,j,Si,j+1,Si,j-1为评价因子的各级水质标准。
2.模糊关系R矩阵
通过隶属函数的计算,求出单项指标对于各级别水的隶属度,得到矩阵R:
松嫩平原地下水资源及其环境问题调查评价
3.评价因子权重的计算
权重就是各评价因子对总体污染物影响程度的贡献及对人体影响效应的比重。对某种污染物浓度的分级标准Si可以取其各级标准平均值:Si=∑ Sj/m,对于某些在水中含量越高表明水质愈差的评价因子,其权重公式为:Wi= Xi/Si;对于某些在水中含量越高表明水质愈好的评价因子,其权重公式为:Wi= Si/Xi。
应用该方法时,对各项水质指标(或组分)目前常用的权重处理方法作了适当改进,即在确定各项水质指标(组分)的权重(Wi)时,除考虑某一组分的超标程度外,同时考虑了该项组分对人体健康的危害程度。对人体健康危害相对较小的常规组分及TDS、硬度和铁(锰)等,在常规方法获得的相对权值基础上,乘以“0.6”的修正系数;而对人体健康危害较大的组分(如氟、氨、硝酸根、亚硝酸根、磷及汞、铬、酚等)则乘以“1.0”系数。然后再用修正后的相对权重进行归一化的权重计算。这种做法减少了对人体危害性较小组分在决定水质级别中的作用,更符合本区当前各质量级别地下水的使用现状。
权重进行归一化处理公式为:-iW=Wi/∑Wi,∑Wi=1,从而得到权重矩阵A,它是一行n列矩阵(n为参加评判的因子数)。
4.综合评价
模糊数学综合评价是通过模糊关系矩阵R 和权重矩阵A 的复合运算而进行的评价。实际是对各项评价因子进行加和合成,用数学式表示为:B=A·R。
其中B是以隶属度表示的水质级别模糊评价向量(行矩阵),由模糊矩阵R 和A 的复合运算得到,系统采用相乘求和的算法进行运算。
(三)BP神经网络评价法
人工神经网络是一种由大量处理单元组成的非线性自适应的动力学系统,具有学习、联想、容错和抗干扰功能。应用人工神经网络评价水质,首先将水质标准作为“学习样本”,经过自适应、自组织的多次训练后,网络具有了对学习样本的记忆能力,然后将实测资料输入网络系统,由已掌握知识信息的网络对它们进行评价。传统的神经网络方法都是对所有评价因子以同样的标准进行处理,体现不出各评价因子对环境和人体影响的差异,而且往往因为某个评价因子的数值过大而导致总体的评价水质较差。因此,从实用的角度,在传统神经网络模拟地下水水质评价因子与地下水水质级别间的非线性关系的基础上,对评价因子进行了分组,进行水质评价。
1.BP神经网络模型概述
地下水环境质量评价所采用的神经网络的拓扑结果如图13—2所示。它是由一个输入层、一个隐层和一个输出层构成的三层网络结构。输入层接受外界信息,输出层则对输入信息进行判别和决策;隐层用来储存知识。层与层之间的神经元(节点)单方向互联,其联接程度用权值表示,并通过学习来调节其值。该神经网络在学习过程中由正向传播和反向传播两部分组成。正向传播是数据由输入层经隐层处理传向输出层;反向传播是误差信号从输出层向输入层传播并沿途调整各层联接权值和各层神经元的阈值,以使误差信号不断减小,通常采用Sigmoid函数作为神经元的激发函数。Sigmoid函数为:
图13—2 网络模型结构示意图
如果正向传播的输出与给定的期望输出模式有较大的误差而不满足精度要求的时候,就转入误差反向传播过程,将误差沿原来的联接通路返回,通过修改各层神经元的联系权和阈值使误差减小,然后再转向正向传播过程,随着模式正向传播和误差反向传播的反复交替,网络得到了记忆训练,当网络的全局误差小于给定值后,训练终止,即可得到收敛的网络和相应稳定的权值和阈值。利用这个收敛的网络可以完成实际的模式识别任务。
2.教师样本以及模型各层节点数目的确定
依据GB/T14848—93,地下水质量分类标准的Ⅳ类与Ⅴ类水标准的界值是同一数值,该标准规定小于等于该值为Ⅳ类水,大于该值为Ⅴ类水。而水环境质量标准的划分一般都是指一个浓度区间。为了符合评价的要求,按照一些文章提出的方法来确定分级代表值:Ⅰ类水的标准界值作为Ⅰ类水的分级代表值,Ⅱ类水的分级代表值为Ⅰ类水和Ⅱ类水标准界值的中值,其余依次类推,将Ⅴ类水(Ⅳ类)的界值作为Ⅴ类水的分级代表值。具体见表13—1。
表13—1 BP神经网络的教师样本
续表
输入层节点数为监测指标的数目,输出层节点数为1,当预定误差为0.001、学习效率取0.5时,经过反复试验计算,确定隐层数为30时,网络的收敛效果较好。
3.水质评价BP模型建立时样本数据处理
为消除各监测指标特征之间由于量纲的不同及监测数值大小的差异对计算过程的影响,需对原始数据做规范化处理,选用下述方法,效果较好。
松嫩平原地下水资源及其环境问题调查评价
式中:
为第k样本的第i个输入值;xi,max和xi,min分别为第i个水质指标的最大值和最小值。
另外,为了消除极值的影响,如果污染水质指标达到Ⅴ类,输入时就按Ⅴ类水的下限输入;对于某些小于一类水标准上限浓度1/10的监测数据,输入时就按一类标准上限的1/10输入。
4.运行BP神经网络评价程序
鉴于VB.net写成的神经网络算法运行速度过慢,同时经过实践,用C++写成的神经网络运算速度相对比较快,所以采用混合编程的方法。用C++写成神经网络程序,然后在VB.net下调用C++程序进行评价。但是为了达到程序运行美观,让C++程序在后台运行,从而兼具了VB.net界面可视化和DOS程序运行速度快的优势。
二、地下水水质预测
进行地下水污染预警,要充分运用各种专家的知识经验和有效的模型预测手段,在过去地下水环境及其演化趋势的基础上,预计未来可能发生的环境影响,综合考虑地下水环境的自然属性,判别地下水环境质量状况。在系统中是利用已知多年地下水水质观测资料来推算近期地下水水质的动态变化情况。系统提供了两种预测方法,即时间序列分析与灰色预测。
(一)时间序列分析
地下水水质动态的时间序列分析方法的基本思想是认为地下水水质在随时间变化的过程中,任一时刻的变化和前期要素的变化有关,利用这种关系建立适当的模型来描述它们变化的规律性,然后利用所建立的模型做出地下水动态未来时刻的预报值估计。用时间序列分析的方法,可以建立多种用于预报的随机模型,本系统采用指数平滑法进行预测。指数平滑的原理为:当利用过去观测值的加权平均来预测未来的观测值时(这个过程称为平滑),离得越近的观测值要给以更大的权。而“指数”意味着:按照已有观测值“老”的程度,其上的权数按指数速度递减。
指数平滑法具有计算比较简单,对实际变化比较灵敏,在预测时所需的观测值不多等特点。这种方法在整个预测过程中,始终不断地用预测误差来纠正预测值。基本思路是首先对原始数据(监测值)作处理,处理后的数据称作“平滑值”。给定一个权系数α(平滑常数),则平滑值由下式得到:
St=α·Xp+(1—α)·Xt
式中:St为平滑值;Xp为新数据;Xt为老数据。
上式表明所求得的平滑值是新老数据的加权组合。计算时,数据处理按几级分几次作,常记
、
、
分别为t时刻的第1次、第2次、第3次的平滑值。对经过处理的数据(平滑值)再作适当计算可构成以下非线性预测模型:
Yt+T=at+bt·T+c·tT2
式中:Yt+T为t+T时刻预测值;T为以t为起点向未来伸展时刻(t以后模型外推时间);at、bt、ct为模型参数,分别代表t时刻的期望值、线性增量、抛物线增量。
其中:
松嫩平原地下水资源及其环境问题调查评价
计算时所使用的原始数据(监测值)为X1、X2、X3……。
为加工后的数据,即t时刻第j次的平滑值。各次平滑后为:
松嫩平原地下水资源及其环境问题调查评价
计算中应注意的问题:
(1)系数a的大小,关系到计算的合理性,一般a由经验确定,通常当变化趋势平衡时,实际值的变化仅受偶然因素的影响,可取小的a值加权;变动不稳定,实际值的变动还受偶然因素之外的变动的影响,则可取较大的a值加权。a值的取值范围为0~1,即0≤a≤1,当a值接近于零时,表示对过去的实际值作最小的加权,a值接近于1时,表示对现在实际值作最大加权。计算时可参考以下取值原则:
当变量的时间变动较为显著,宜取较大的a值(a=0.3~0.5),以使近期数据在指数平滑法中发挥较大作用。
当时间序列趋势较稳定,宜取小的a值(a=0.05~0.2),使各个统计值在指数平滑中具有大小相近的权数。
当时间序列趋势有较缓的变化时,a可取值0.1~0.4。
(2)后一级平滑值
是通过前一级平滑值
算出的。然而,当t=0时,无前一级平滑值。因此各级初始平滑值
一般凭经验给出,多采用与其他实际数据比较接近的值或观测序列中的第一个值。
(二)灰色预测
1982年我国学者邓聚龙教授提出了灰色系统理论,它把一般系统论、信息论、控制论的观点和方法延伸到社会、经济、生态等抽象系统,并结合数学方法,发展成为一套解决信息不完备系统即灰色系统的理论和方法。它可以利用连续的灰色微分模型,对系统的发展变化进行全面的观察分析,并做出预测。灰色系统是指信息不完全、不充分的系统。灰色系统理论中GM(1,1)模型,代表1个变量的一阶微方方程,它既是一种动态的数学模型,又是一种连续的数学函数。其根据关联度收敛原理、生成数、灰导数和灰微方程等论据和方法来建模。建模技巧是利用量化方法将杂乱无章的原始数据列,通过累加生成处理,使之变成有规律的原始数据列,利用生成后的数据列建模,在预测时再通过还原检验其误差。
鉴于地下水质动态变化的复杂性,受诸多因素制约,具有很大的不确定,其实质上就是一个处于动态变化之中的灰色系统,因此可用GM(1,1)建模,建立模型的基本步骤如下:
第1步:对数据序列作一次累加生成,得到:
松嫩平原地下水资源及其环境问题调查评价
第2步:构造累加矩阵B与常数项向量YN,即
松嫩平原地下水资源及其环境问题调查评价
第3步:用最小二乘法解灰参数:
第4步:将灰参数代入时间函数:
第5步:对
(1)求导还原得到:
第6步:计算
与
之差
及相对误差e(t)
松嫩平原地下水资源及其环境问题调查评价
第7步:误差校正,以
为原始数据再进行一次灰色预测。
对呈增长趋势的变化过程,用GM(1,1)都能得到较好的精确度,但有时遇到的变化过程较差的增长趋势,用一次GM(1,1)得不到满意的精确度,此时为了得到更好的精确度,常对其进行误差校正,这就是常说的GM(1,1)改进模型。模型的精确度可通过已知的前n个历史数据与其相应的n个预测数据比较,若精确度较好,则直接预测下一个未知数据。否则,要进行修正。
为了提高GM(1,1)模型的精度,可采用残差GM(1,1)模型来进行模型的修正,残差修正模型可以是生成模型,也可以是还原模型。
还原模型的相应数列为:
松嫩平原地下水资源及其环境问题调查评价
残差
为:
松嫩平原地下水资源及其环境问题调查评价
是下述模型的数据:
松嫩平原地下水资源及其环境问题调查评价
若通过残差
建立的GM(1,1)为:
松嫩平原地下水资源及其环境问题调查评价
则
的导数为:
松嫩平原地下水资源及其环境问题调查评价
修正后的模型为:
松嫩平原地下水资源及其环境问题调查评价