发明名称 基于二阶常微分方程的压气机叶片吸力面基元曲线建模方法
摘要 本发明提供了一种基于二阶常微分方程的压气机叶片吸力面基元曲线建模方法,对压气机叶片基元曲线数据进行预处理后,选取二阶常系数线性非齐次常微系统进行拟合,以得到基元曲线的表达。根据边界条件的要求,将求取一个与所给数据首尾点重合的二阶曲线问题转化成为一个两点边值问题,选取隐式欧拉法求解基元曲线中间点,完成对基元曲线的重构。本发明解决了一阶系统无法同时保证首末端点插值条件的问题,获得了更大的优化操作空间,减小了对参数矩阵的敏感程度。本发明对于数据散点的首末点能够精确插值,这对于分片或分段拟合的数据散点的连接有着很大优势,可对压气机叶片形状进行高精度还原。
申请公布号 CN106227978A 申请公布日期 2016.12.14
申请号 CN201610662792.8 申请日期 2016.08.12
申请人 北京航空航天大学 发明人 郑志明;姜鑫;霍冠英;董暄雨;叶丹蕾;苏澄;陆泽鸿
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 北京永创新实专利事务所 11121 代理人 祗志洁
主权项 一种基于二阶常微分方程的压气机叶片吸力面基元曲线建模方法,其特征在于,实现步骤如下:步骤一:获取压气机叶片吸力面数据集,选用如下二阶线性非齐次常微分方程进行建模拟合;<maths num="0001"><math><![CDATA[<mrow><mfenced open = "(" close = ")"><mtable><mtr><mtd><mover><mi>x</mi><mo>&CenterDot;&CenterDot;</mo></mover></mtd></mtr><mtr><mtd><mover><mi>y</mi><mo>&CenterDot;&CenterDot;</mo></mover></mtd></mtr><mtr><mtd><mover><mi>z</mi><mo>&CenterDot;&CenterDot;</mo></mover></mtd></mtr></mtable></mfenced><mo>=</mo><mi>A</mi><mn>1</mn><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>y</mi></mtd></mtr><mtr><mtd><mi>z</mi></mtd></mtr></mtable></mfenced><mo>+</mo><mi>A</mi><mn>2</mn><mfenced open = "(" close = ")"><mtable><mtr><mtd><mover><mi>x</mi><mo>&CenterDot;</mo></mover></mtd></mtr><mtr><mtd><mover><mi>y</mi><mo>&CenterDot;</mo></mover></mtd></mtr><mtr><mtd><mover><mi>z</mi><mo>&CenterDot;</mo></mover></mtd></mtr></mtable></mfenced><mo>+</mo><mi>f</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001076588100000011.GIF" wi="758" he="223" /></maths>其中:(x,y,z)是叶片在三维欧式空间中的坐标;A1和A2为系数矩阵;f(t)为关于时间t的多项式;设压气机叶片吸力面数据集表示为(X<sub>1</sub>,X<sub>2</sub>…,X<sub>N</sub>),N为数据点总数,每个数据点为叶片在三维欧式空间中的一个坐标,其中第n个数据点X<sub>n</sub>=(x<sub>n</sub>,y<sub>n</sub>,z<sub>n</sub>)<sup>T</sup>,n=1,2,…,N;采用如下差分形式进行数值拟合;<maths num="0002"><math><![CDATA[<mrow><mfenced open = "(" close = ")"><mtable><mtr><mtd><mfrac><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>x</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>y</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>y</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>z</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>z</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mrow><mi>A</mi><mn>1</mn></mrow></mtd><mtd><mrow><mi>A</mi><mn>2</mn></mrow></mtd></mtr></mtable></mfenced><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>x</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>y</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>z</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>f</mi><mn>1</mn></msub><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd><msub><mi>f</mi><mn>2</mn></msub><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr><mtr><mtd><msub><mi>f</mi><mn>3</mn></msub><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001076588100000012.GIF" wi="1230" he="666" /></maths>其中,Δt<sub>n</sub>表示第n+1个数据点X<sub>n+1</sub>和第n个数据点X<sub>n</sub>间的步长,<img file="FDA0001076588100000013.GIF" wi="429" he="206" />t<sub>n</sub>为第n个数据点处的累积步长,<img file="FDA0001076588100000014.GIF" wi="230" he="133" />f<sub>1</sub>(t<sub>n</sub>)、f<sub>2</sub>(t<sub>n</sub>)和f<sub>3</sub>(t<sub>n</sub>)均为关于t<sub>n</sub>的多项式;步骤二:求取系数矩阵A和多项式f(t),其中A=(A1,A2);首先,将原始数据集做如下排列:<maths num="0003"><math><![CDATA[<mrow><mfenced open = "(" close = ")"><mtable><mtr><mtd><mfrac><mrow><msub><mi>x</mi><mn>3</mn></msub><mo>+</mo><msub><mi>x</mi><mn>1</mn></msub><mo>-</mo><mn>2</mn><msub><mi>x</mi><mn>2</mn></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mn>2</mn></msub><mn>2</mn></msup></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>x</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>x</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>y</mi><mn>3</mn></msub><mo>+</mo><msub><mi>y</mi><mn>1</mn></msub><mo>-</mo><mn>2</mn><msub><mi>y</mi><mn>2</mn></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mn>2</mn></msub><mn>2</mn></msup></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>y</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>y</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>z</mi><mn>3</mn></msub><mo>+</mo><msub><mi>z</mi><mn>1</mn></msub><mo>-</mo><mn>2</mn><msub><mi>z</mi><mn>2</mn></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mn>2</mn></msub><mn>2</mn></msup></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>+</mo><msub><mi>z</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>-</mo><mn>2</mn><msub><mi>z</mi><mi>n</mi></msub></mrow><mrow><msup><msub><mi>&Delta;t</mi><mi>n</mi></msub><mn>2</mn></msup></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>=</mo><mi>A</mi><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>x</mi><mn>2</mn></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>x</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mn>2</mn></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>y</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mn>2</mn></msub></mtd><mtd><mo>...</mo></mtd><mtd><msub><mi>z</mi><mi>n</mi></msub></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>x</mi><mn>3</mn></msub><mo>-</mo><msub><mi>x</mi><mn>2</mn></msub></mrow><mrow><msub><mi>&Delta;t</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>x</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>x</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>y</mi><mn>3</mn></msub><mo>-</mo><msub><mi>y</mi><mn>2</mn></msub></mrow><mrow><msub><mi>&Delta;t</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>y</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>y</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr><mtr><mtd><mfrac><mrow><msub><mi>z</mi><mn>3</mn></msub><mo>-</mo><msub><mi>z</mi><mn>2</mn></msub></mrow><mrow><msub><mi>&Delta;t</mi><mn>2</mn></msub></mrow></mfrac></mtd><mtd><mo>...</mo></mtd><mtd><mfrac><mrow><msub><mi>z</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>-</mo><msub><mi>z</mi><mi>n</mi></msub></mrow><mrow><msub><mi>&Delta;t</mi><mi>n</mi></msub></mrow></mfrac></mtd></mtr></mtable></mfenced><mo>+</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mrow><msub><mi>f</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msub><mi>f</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>f</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msub><mi>f</mi><mn>2</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>f</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mn>2</mn></msub><mo>)</mo></mrow></mrow></mtd><mtd><mo>...</mo></mtd><mtd><mrow><msub><mi>f</mi><mn>3</mn></msub><mrow><mo>(</mo><msub><mi>t</mi><mi>n</mi></msub><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001076588100000021.GIF" wi="1918" he="662" /></maths>设矩阵<img file="FDA0001076588100000022.GIF" wi="530" he="223" />矩阵<img file="FDA0001076588100000023.GIF" wi="882" he="446" />矩阵<img file="FDA0001076588100000024.GIF" wi="635" he="662" />进一步得到公式:D=AM+F;考虑f(t)是多项式的情况,设多项式的系数矩阵为B,根据压气机叶片吸力面数据集,得到参数矩阵<img file="FDA0001076588100000025.GIF" wi="403" he="303" />将F表示为F=BT;则进一步地,获得:<maths num="0004"><math><![CDATA[<mrow><mi>D</mi><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>A</mi></mtd><mtd><mi>B</mi></mtd></mtr></mtable></mfenced><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>M</mi></mtd></mtr><mtr><mtd><mi>T</mi></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001076588100000026.GIF" wi="574" he="143" /></maths>在式(4)的左右两边同时乘以<img file="FDA0001076588100000027.GIF" wi="154" he="151" />其中<img file="FDA0001076588100000028.GIF" wi="227" he="151" />是实对称矩阵,若<img file="FDA0001076588100000029.GIF" wi="107" he="143" />是行满秩的,则<img file="FDA00010765881000000210.GIF" wi="233" he="151" />是可逆的,等式两边再同时乘以<img file="FDA00010765881000000211.GIF" wi="233" he="147" />的逆,得到:<maths num="0005"><math><![CDATA[<mrow><mo>(</mo><mtable><mtr><mtd><mi>A</mi></mtd><mtd><mi>B</mi></mtd></mtr></mtable><mo>)</mo><mo>=</mo><mi>D</mi><msup><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>M</mi></mtd></mtr><mtr><mtd><mi>T</mi></mtd></mtr></mtable></mfenced><mi>T</mi></msup><msup><mrow><mo>(</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>M</mi></mtd></mtr><mtr><mtd><mi>T</mi></mtd></mtr></mtable></mfenced><msup><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>M</mi></mtd></mtr><mtr><mtd><mi>T</mi></mtd></mtr></mtable></mfenced><mi>T</mi></msup><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA00010765881000000212.GIF" wi="894" he="154" /></maths>进而求得系数矩阵A;所求模型表示为:<img file="FDA0001076588100000031.GIF" wi="429" he="303" />其中X表示(x,y,z)<sup>T</sup>;步骤三:求取压气机叶片吸力面的基元曲线;根据边界条件的要求,将求取一个与所给数据首尾点重合的二阶曲线问题转化成为一个两点边值问题,并选取隐式欧拉法求解;设X(0)、X(1)表示压气机叶片吸力面数据集的起始点和终止点,求解如公式(6)所示问题得到基元曲线上的离散点;<maths num="0006"><math><![CDATA[<mrow><mfenced open = "{" close = ""><mtable><mtr><mtd><mrow><mover><mi>X</mi><mo>&CenterDot;&CenterDot;</mo></mover><mo>=</mo><mi>A</mi><mfenced open = "(" close = ")"><mtable><mtr><mtd><mi>X</mi></mtd></mtr><mtr><mtd><mover><mi>X</mi><mo>&CenterDot;</mo></mover></mtd></mtr></mtable></mfenced><mo>+</mo><mi>f</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow></mtd></mtr><mtr><mtd><mrow><mi>X</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>x</mi><mi>N</mi></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mi>N</mi></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mi>N</mi></msub></mtd></mtr></mtable></mfenced></mrow></mtd></mtr><mtr><mtd><mrow><mi>X</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mfenced open = "(" close = ")"><mtable><mtr><mtd><msub><mi>x</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>y</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>z</mi><mn>1</mn></msub></mtd></mtr></mtable></mfenced></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>6</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0001076588100000032.GIF" wi="526" he="695" /></maths>在得到基元曲线上的离散点后,进行基元曲线重构。
地址 100191 北京市海淀区学院路37号