耦合计算方法和耦合计算系统的制作方法

文档序号:9200343阅读:650来源:国知局
耦合计算方法和耦合计算系统的制作方法
【技术领域】
[0001] 本发明涉及耦合计算技术领域,具体而言,涉及一种耦合计算方法和一种耦合计 算系统。
【背景技术】
[0002] 多个计算软件的耦合求解,是指两个或多个独立的计算软件,在迭代求解的过程 中,需要彼此提供部分信息才能实现求解。例如A计算软件的待求解方程f (X) = 0, B计算 软件的待求解方程g(y) =0。这两个计算软件都不能独立完成求解,因为A计算软件需要 B计算软件提供关X的信息,而B计算软件需要A计算软件提供关于y的信息,因此需要在 迭代求解的过程中交换数据,如图1所示,需要交换第η次迭代的数据。
[0003] 实现多个数值计算软件之间的耦合求解,可以采用牛顿迭代法。下面简单介绍牛 顿迭代法:
[0004] 牛顿迭代法(Newton's method)又称为牛顿-拉弗森方法(Newton-Raphson method),它是牛顿提出的一种在实数域和复数域上近似求解方程的方法。牛顿迭代法 及其延伸算法,例如非精确牛顿迭代法(Inexact Newton' method),或拟牛顿迭代法 (Quasi-Newton' s method),都属于牛顿迭代法的范畴。
[0005] 例如采用牛顿迭代法求解方程f(x) = 0,如图2所示,其中曲线为f(x),曲线与X 轴的交点即为待求解的X值。
[0006] 首先,选择一个接近f (X)零点的Xci,计算相应的f (Xci)和切线斜率(或者f (X)在 X。的导数)f'(Χ〇),然后计算穿过点(x〇,f(x〇))并且斜率为f'(?)的直线和X轴的交点坐 标,也就是求如下方程的解:
[0007] f (X0) = (X0-X) · f'(X0) (1)
[0008] 将新求得的点的X坐标命名为X1,通常X1比X C1更接近方程f (X) = 0的解,从而可 以利用^开始下一轮迭代。迭代公式可化简为如下所示:
[0009]
( 2 )
[0010] 而在牛顿迭代法的中,f'(Xn)可以由方程f (X) = 0的残差来近似,如下所示:
[0011]
(3)
[0012] 其中Δχ表示计算机精度允许的小量,关于Λ X的选取方法,是已知且公开的。所 谓方程f (X) = 0的残差,就是指把X的具体数值,例如Xn,代入f (X)计算得到的数值f (Xn)。 如果是多个方程组的牛顿迭代求解,那么f'(Xn)将是一个矩阵,称作雅克比矩阵J。
[0013] 采用现有技术实现多个数值计算软件的耦合求解,需要有一个基于牛顿迭代法的 软件,一般称作"耦合计算服务软件",该软件与待耦合求解的多个计算软件相配合才能实 现耦合求解,而"耦合计算服务软件"不需要知道待耦合求解的方程的具体形式,所以其中 并不存储有待耦合求解的方程。
[0014] 如图3所示,在"耦合计算服务软件"的配合下,A计算软件和B计算软件才能实现 耦合求解。其中迭代过程主要包括三个步骤:
[0015] 第一步,"親合计算服务软件"随机生成初值Xp Xci+ Δ X、yp Ytl+ Δ y,并将Xp Xci+ Δ X 传输至A计算软件,将yp yf Δ y传输至B计算软件。
[0016] 第二步,A计算软件将Xd、Xtl+ Δ X代入f (X),计算得到残差f (Xtl)和f (Xtl+ Δ X) ;B 计算软件将yci、yci+ Δ y代入g (X),计算得到残差g (yj和g (y# Δ y)。A和B计算软件分别 将计算得到的残差传给"耦合计算服务软件"。
[0017] 第三步,"耦合计算服务软件"根据公式(3),由f(X(l)和f(X(l+Ax)计算得到导数 f'(X。),并由g(yQ)和g(yQ+Ay)计算得到导数g'(yQ),并由f'(X。)和g'(y Q)构造雅克比 矩阵J,再根据公式(2)计算得到Xp X1+AxAy^y1+Ay,并进入下一次迭代。
[0018] 在现有技术中,"耦合计算服务软件"实现牛顿迭代法的所有步骤包括:根据公式 (3)计算导数f'(Xn)和g'(yn),以及根据公式⑵计算下一次迭代所需的χη、χ η+Δχ、yjPl yn+Ay〇
[0019] 由于根据公式(3)计算得到的导数f' OO的精度非常低,因此"耦合计算服务软 件"需要经过很多次牛顿迭代才能实现耦合求解,甚至经常出现无法完成求解的情况。

【发明内容】

[0020] 本发明所要解决的技术问题是,如何提高对多个数值进行耦合求解的效率和精确 度以及稳定性。
[0021] 为此目的,本发明提出了一种耦合计算方法,包括:
[0022] Sl,耦合计算服务模块随机生成多个独立计算模块中每个独立计算模块分别对应 的第一自变量,将每个第一自变量分别传输至对应的独立计算模块;
[0023] S2,每个所述独立计算模块将所述第一自变量代入对应的待求解方程计算对应的 残差,将所述第一自变量代入自动微分方法计算所述待求解方程在所述第一自变量处的导 数,将所述残差和所述导数传输至所述耦合计算服务模块;
[0024] S3,所述耦合计算服务模块根据接收到的多个导数生成雅克比矩阵,根据所述雅 克比矩阵和接收到的多个残差计算得到多个第二自变量,将每个第二自变量传输至对应的 独立计算模块;
[0025] S4,所述独立计算模块判断所述第二自变量是否为对应的待求解方程的解,若不 是对应的待求解方程的解,则循环所述步骤S2和S3,直至计算得到自变量为对应的待求解 方程的解,若是对应的待求解方程的解,则输出对应的待求解方程的解。
[0026] 优选地,每个所述独立计算模块中存储有对应的待求解方程,所述耦合计算服务 模块中未存储有对应的待求解方程。
[0027] 优选地,所述雅克比矩阵为f' 〇〇,则所述步骤S3中根据所述雅克比矩阵和接收 到的多个残差计算得到多个第二自变量包括:
[0028] 根据公式·
·计算第二自变量,
[0029] 其中,X1^第一自变量,X n+1为第二自变量,f (Xn)为残差。
[0030] 本发明还提出了一种耦合计算系统,包括:
[0031] 耦合计算服务模块和多个独立计算模块,
[0032] 所述耦合计算服务模块随机生成多个独立计算模块中每个独立计算模块分别对 应的第一自变量,将每个第一自变量分别传输至对应的独立计算模块;
[0033] 所述多个独立计算模块中的每个独立计算模块将所述第一自变量代入对应的待 求解方程计算对应的残差,将所述第一自变量代入自动微分方法计算所述待求解方程在所 述第一自变量处的导数,将所述残差和所述导数传输至所述耦合计算服务模块;
[0034] 所述耦合计算服务模块还用于根据接收到的多个导数生成雅克比矩阵,根据所述 雅克比矩阵和接收到的多个残差计算得到多个第二自变量,将每个第二自变量传输至对应 的独立计算模块;
[0035] 所述独立计算模块还用于判断所述第二自变量是否为对应的待求解方程的解,若 是对应的待求解方程的解,则输出对应的待求解方程的解,若不是对应的待求解方程的解, 则根据第二自变量计算残差和相应导数,
[0036] 其中,所述耦合计算服务模块根据第
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1