当前位置: 首页 > news >正文

网站后台策划wordpress 内网映射

网站后台策划,wordpress 内网映射,首尔面积,wordpress高级视频教程从今天开始,木木将为大家分享自己在学习数值分析这门课过程中练习的Fortran代码,主要分享: 线性方程组直接法求解线性方程组迭代法求解非线性方程求解非线性方程组求解数值积分矩阵特征值、特征向量插值、拟合 以上的内容均是有限元中常常用到…

从今天开始,木木将为大家分享自己在学习数值分析这门课过程中练习的Fortran代码,主要分享:

  1. 线性方程组直接法求解
  2. 线性方程组迭代法求解
  3. 非线性方程求解
  4. 非线性方程组求解
  5. 数值积分
  6. 矩阵特征值、特征向量
  7. 插值、拟合

以上的内容均是有限元中常常用到的数值思想,可能大多数情况下就是调用一些前人写好的库,直接使用进行,不用关心内部实现原理。

但对于有些问题的思考、优化,如果脑袋里面没有一些数值技术的支撑,很难突破一些固有体系,学习更高阶的技能时也会非常受限。

最近,木木又重新捡起了Fortran语言,经典的公式语言,使用一段时间后才发觉是多么的优美,对于公式的每一处细节Fortran总能为你一一体现。

于是乎就用它进行后续一系列的编程,包括数值分析、结构动力学等研究生基础课程。

本系列推文非常适合研一、研二对数值计算感兴趣的同学,如果以后的研究领域与数值相关,非常建议通过编程来理解相关的核心课程,如果只是泛读文献、使用专业软件进行纯模拟仿真,深度是远远不够的,希望同学们可以在学习数值思想的同时也可以提升对语言的掌握程度。

本次分享的是三角方程组的解法,后续的很多解法都是在这个的基础上进行求解。

什么是三角方程组

三角方程组是指其系数矩阵呈三角形结构的方程组。根据非零元素分布位置不同,可分为:

  1. 上三角方程组(Upper-Triangular System)
    系数矩阵 A=[aij]A=[a_{ij}]A=[aij] 满足
    aij=0当  i>ja_{ij}=0 \quad\text{当}\; i>j aij=0i>j
    其一般形式为
    {a11x1+a12x2+⋯+a1nxn=b1a22x2+⋯+a2nxn=b2⋱annxn=bn \begin{cases}a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1 \\\qquad\quad a_{22}x_2 + \dots + a_{2n}x_n = b_2 \\\qquad\qquad\ddots \\\qquad\qquad\quad a_{nn}x_n = b_n \end{cases} a11x1+a12x2++a1nxn=b1a22x2++a2nxn=b2annxn=bn

  2. 下三角方程组(Lower-Triangular System)
    系数矩阵满足aij=0当i<ja_{ij}=0 \quad 当 i < jaij=0i<j,其一般形式为
    {a11x1=b1a21x1+a22x2=b2⋱an1x1+⋯+annxn=bn \begin{cases}a_{11}x_1 = b_1 \\a_{21}x_1 + a_{22}x_2 = b_2 \\\quad\ddots \\a_{n1}x_1 + \dots + a_{nn}x_n = b_n \end{cases} a11x1=b1a21x1+a22x2=b2an1x1++annxn=bn

上三角形方程

计算原理

{xn=bnannxi=bi−∑k=i+1naikxkaii,i=n−1,n−2,⋯ ,1 \left\{ \begin{array} { l l } { \displaystyle x _ { n } = \frac { b _ { n } } { a _ { n n } } } \\ { \displaystyle x _ { i } = \frac { b _ { i } - \sum _ { k = i + 1 } ^ { n } a _ { i k } x _ { k } } { a _ { i i } } , i = n - 1 , n - 2 , \cdots , 1 } \end{array} \right. xn=annbnxi=aiibik=i+1naikxk,i=n1,n2,,1

数值案例

(2134032500730002)x=(50495312) { \left( \begin{array} { l l l l } { 2 } & { 1 } & { 3 } & { 4 } \\ { 0 } & { 3 } & { 2 } & { 5 } \\ { 0 } & { 0 } & { 7 } & { 3 } \\ { 0 } & { 0 } & { 0 } & { 2 } \end{array} \right) } \mathbf { x } = { \left( \begin{array} { l } { 5 0 } \\ { 4 9 } \\ { 5 3 } \\ { 1 2 } \end{array} \right) } 2000130032704532x=50495312

subroutine uptri(a,b,x,n)
! 上三角方程组求解! 输入参数:! a(n,n): 上三角矩阵! b(n): 右端向量! n: 矩阵维度! 输出参数:! x(n): 解向量integer, intent(in) :: nreal*8, intent(in) :: a(n,n),b(n)real*8, intent(out) :: x(n)integer :: i,kx(n) = b(n)/a(n,n)do i = n-1,1,-1x(i) = b(i)do k = i+1,nx(i) = x(i) - a(i,k)*x(k)end dox(i) = x(i)/a(i,i)end do
end subroutine uptri

下三角方程

计算原理

{x1=b1a11xk=bk−∑i=1k−1akixiakk,k=2,⋯ ,N \left\{ \begin{array} { l l } { \displaystyle x _ { 1 } = \frac { b _ { 1 } } { a _ { 11 } } } \\ { \displaystyle x _ { k } = \frac { b _ { k } - \sum _ { i = 1 } ^ { k-1 } a _ { ki } x _ { i } } { a _ { kk } } , k = 2 , \cdots , N } \end{array} \right. x1=a11b1xk=akkbki=1k1akixi,k=2,,N

数值案例

(2000130015103214)y=(10233943) \begin{array} { r } { \left( \begin{array} { l l l l } { 2 } & { 0 } & { 0 } & { 0 } \\ { 1 } & { 3 } & { 0 } & { 0 } \\ { 1 } & { 5 } & { 1 } & { 0 } \\ { 3 } & { 2 } & { 1 } & { 4 } \end{array} \right) \mathbf { y } = \left( \begin{array} { l } { 1 0 } \\ { 2 3 } \\ { 3 9 } \\ { 4 3 } \end{array} \right) } \end{array} 2113035200110004y=10233943

subroutine lowtri(a,b,x,n)
! 下三角方程组求解integer, intent(in) :: nreal*8, intent(in) :: a(n,n),b(n)real*8, intent(out) :: x(n)integer :: i,kx(1) = b(1)/a(1,1)do k = 2,nx(k) = b(k)do i = 1,k-1x(k) = x(k) - a(k,i)*x(i)end dox(k) = x(k)/a(k,k)end doend subroutine lowtri

主程序调用:

program mainuse matriximplicit noneinteger, parameter :: n = 4real*8 :: a_upper(n,n), a_lower(n,n), b_upper(n), b_lower(n), x(n), y(n)integer :: i! 初始化上三角矩阵和右端向量a_upper = reshape([2.0, 0.0, 0.0, 0.0, &1.0, 3.0, 0.0, 0.0, &3.0, 2.0, 7.0, 0.0, &4.0, 5.0, 3.0, 2.0], [n,n])b_upper = [50.0, 49.0, 53.0, 12.0]! 初始化下三角矩阵和右端向量a_lower = reshape([2.0, 1.0, 1.0, 3.0, &0.0, 3.0, 5.0, 2.0, &0.0, 0.0, 1.0, 1.0, &0.0, 0.0, 0.0, 4.0], [n,n])b_lower = [10.0, 23.0, 39.0, 43.0]! 求解上三角方程组call uptri(a_upper, b_upper, x, n)! 求解下三角方程组call lowtri(a_lower, b_lower, y, n)print *, "Solution of upper triangular system x:"do i = 1, nwrite(*, 100) "x(", i, ") = ", x(i)end doprint *, "----------------------------------------"print *, "Solution of lower triangular system y:"do i = 1, nwrite(*, 100) "y(", i, ") = ", y(i)end do100 format(1x, A, I1, A, F10.6)
end program main

输出:

 Solution of upper triangular system x:x(1) =   4.000000x(2) =   3.000000x(3) =   5.000000x(4) =   6.000000----------------------------------------Solution of lower triangular system y:y(1) =   5.000000y(2) =   6.000000y(3) =   4.000000y(4) =   3.000000

注意:子程序中默认:implicit real*8(a-z)

参考文献

  1. 宋叶志,茅永兴,赵秀杰.Fortran 95/2003科学计算与工程[M].清华大学出版社,2011.
http://www.dtcms.com/a/437057.html

相关文章:

  • 全屏网站制作在线制作印章公章
  • 长沙网站制作收费明细程序员培训机构哪家好
  • 深圳网站建设怎样选美食网站建设的时间进度表
  • 顺德互动交流网站重庆璧山网站制作报价
  • 建设银行注册网站的用户名怎么写深圳建设局网站深业中城绿化项目
  • 网站制作关键起公司名称大全免费网站
  • 24小时学会网站建设 pdf下载郑州市新闻最新消息
  • 长沙市规划建设局网站昆明室内设计学校
  • 重庆网站备案查询系统软件设计文档
  • 罗湖田贝社区网站建设六安商务网站建设电话
  • 来宾住房和城乡建设网站做枪版电影网站赚钱
  • 峨眉网站建设php大气企业网站
  • 西乡做网站学ui设计培训班多少钱
  • 黄页网站推广效果怎么样凡客诚品被谁取代了
  • 瀑布流响应式网站模板怎么查看网站空间大小
  • 教学设计的网站江阴网站设计
  • 网站漂浮广告效果人工智能公司排名
  • 网站系统建设的主要意义之前做的网站说要升级
  • 优化网站搜索排名博客类网站源码
  • 响应式全屏网站wordpress整站ssl
  • 快站wordpress广州传媒有限公司
  • 东莞企业网站推广哪里好wordpress+php调优
  • 郑州那里能设计网站大连做网站团队
  • 刷网站跳出率专业网站建设基本流程
  • 枣庄网站建设价格我的网站搜索不到了
  • 单页网站排名广州网站开发设计平台
  • 江苏省建设厅网站资质升级wordpress小米路由器3
  • 免费APP 微信 网站平台vps正常网站打不开
  • 普通话手抄报简单又漂亮廊坊seo排名
  • 微页制作网站模板下载邯郸市教育考试院官网