!// 方程组:-u^3 + v = 0
!//         u^2 + v^2 - 1 = 0
!// 即:f1(u,v) = -u^3 + v  f2(u,v) = u^2 + v^2 - 1
!// 多元牛顿法的求解适用于小型方程组,对于大型不适用,因为需要提前指导导数
!// 多变量牛顿法
!// x0 = 初始向量
!// DF(Xk) * s = -F(Xk)
!// Xk+1 = Xk + s, k = 0, 1, 2, ...
!// 对于多元牛顿法来说,当方程组的阶数较小时,求解DF与F相对容易
!// 但当方程组的阶数过大时,求解DF与F相当繁琐。
Program SystemsNonLinearEquationsImplicit noneInteger :: iInteger, parameter :: m = 2, maxLoop = 50Real(kind=8), parameter :: eps = 1.d-12Real(kind=8) :: DF(m,m) = 0.d0, F(m,1) = 0.d0, s(m,1) = 0.d0Real(kind=8) :: x(m,1) = [ 1.d0, 2.d0 ], x0(m,1)  !// 赋初值x0 = xDo i = 1, maxLoopcall GetDF ( DF, m, x0 )call GetF ( F, m, x0 )call GaussianElimination (  DF, F, s, m )x = x0 + sIf ( maxval(abs(x-x0)) < eps ) exitx0 = xEnd doWrite ( *,'(1x,a,g0)' ) '迭代次数为:', iWrite ( *,'(1x,a)' ) '非线性方程组的解为:'Do i = 1, mWrite ( *,'(g0)' ) x(i,1)End do
End program SystemsNonLinearEquationsSubroutine GetDF ( DF, m, x )Implicit noneInteger, intent(in) :: mReal(kind=8), intent(in) :: x(m,1)Real(kind=8), intent(inout) :: DF(m,m)Real(kind=8) :: coff(m,m), coffuv(m,m)coff = reshape( [ -3.d0, 2.d0, 1.d0, 2.d0 ], [m,m] )coffuv(1,1) = x(1,1)**2; coffuv(2,1) = x(1,1)coffuv(1,2) = 1.d0; coffuv(2,2) = x(2,1)DF = coff * coffuvEnd subroutine GetDFSubroutine GetF ( F, m, x )Implicit noneInteger, intent(in) :: mReal(kind=8), intent(inout) :: F(m,1)Real(kind=8), intent(in) :: x(m,1)Real(kind=8) :: f1, f2!// f1 = -u^3 + v!// f2 = u^2 + v^2 - 1F(1,1) = -1.d0 * ( -x(1,1)**3 + x(2,1) )F(2,1) = -1.d0 * ( x(1,1)**2 + x(2,1)**2 - 1.d0 )
End subroutine GetFSubroutine GaussianElimination ( a, b, x, m )  !// 高斯消去Implicit none Integer :: i, j, k Real(kind=8), parameter :: eps = 1.d-4  !// 当主元小于这个数时,程序退出,(可用部分主元法进行改善!)Real(kind=8) :: multInteger, intent(in) :: mReal(kind=8), intent(inout) :: a(m,m), b(m,1), x(m,1)Do j = 1, m - 1If ( abs(a(j,j)) < eps ) ThenWrite ( *,'(1x,a)' ) ' The pivot is zero!'stop End if Do i = j + 1, mmult = a(i,j) / a(j,j)Do k = j, m a(i,k) = a(i,k) - mult * a(j,k)End do b(i,1) = b(i,1) - mult * b(j,1)End do End do  !// 回代Do i = m, 1, -1Do j = i + 1, m b(i,1) = b(i,1) - a(i,j) * x(j,1)End do x(i,1) = b(i,1) / a(i,i)End do End subroutine GaussianElimination 

迭代法求解非线性问题相关推荐

  1. 非线性方程组牛顿迭代法matlab,matlab实现牛顿迭代法求解非线性方程组

    <matlab实现牛顿迭代法求解非线性方程组>由会员分享,可在线阅读,更多相关<matlab实现牛顿迭代法求解非线性方程组(5页珍藏版)>请在人人文库网上搜索. 1.matla ...

  2. python牛顿法解非线性方程组_matlab实现牛顿迭代法求解非线性方程组.pdf

    matlab实现牛顿迭代法求解非线性方程组.pdf matlab 实现牛顿迭代法求解非线性方程组实现牛顿迭代法求解非线性方程组 已知非线性方程组如下 3*x1-cosx2*x3-1/20 x12-81 ...

  3. 雅克比(Jacobi)迭代法求解线性方程组

    长博文不利于翻阅,于是又将Jacobi迭代法单独出来了. 这篇博文把高斯-赛德尔迭代法和雅克比迭代法都放到一起了,个人觉得看着有点累.(迭代法求解线性方程组),不过还是要看的,因为它引出了迭代法. 进 ...

  4. 迭代法求解线性方程组的收敛问题总结

    本讲之前,先将高斯-赛德尔迭代法和雅克比迭代法以及迭代法求解线性方程组贴出来,毕竟收敛问题研究的是迭代方法的收敛问题. 进入主题: 判断迭代法收敛的办法: 1.首先根据方程组的系数矩阵A的特点判断: ...

  5. python迭代法求解非线性方程_荐【数学知识】非线性方程求解的二分法以及牛顿迭代法...

    [数学知识]非线性方程求解的二分法以及牛顿迭代法 本博客不谈及理论推导,只提供代码实现,关于理论推导,大家可以查看其它博客文章. 导入包 import sys import math import s ...

  6. 分别用雅可比(Jacobi)迭代法和高斯—塞德尔(Gauss—Seidel)迭代法求解线性方程组(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yyywww666/article/details/42805071 算法介绍(迭代法介绍): 代码C ...

  7. 迭代法求解贝尔曼期望方程的数学证明

    强化学习的核心是用迭代法求解马尔可夫决策过程(MDP)的贝尔曼期望方程(Bellman Optimality Equation): V(s)=Rs+γ∑s′∈SPss′V(s′)V(s) = R_s ...

  8. mysql 立方根函数_Java实现牛顿迭代法求解平方根、立方根

    一.简介 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法. ...

  9. 用matlab求解jacobi,用jacobi迭代法求解线性方程,求助matlab大师

    问题描述: 用jacobi迭代法求解线性方程,求助matlab大师 用jacobi迭代法求解线性方程 9x1-x2+x3=10 -x1+10x2-2x3=7 -2x1+x2+10x3=6,设迭代初值为 ...

最新文章

  1. 深度学习100例-生成对抗网络(GAN)手写数字生成 | 第18天
  2. Hibernate 实体关联关系映射----总结
  3. Java元数据总结:Java注释的使用和定义
  4. java同一个包中,类之间的的调用
  5. 如何用append连接html文件,jquery append()怎么用?
  6. php的登陆代码,PHP登陆页面完整代码
  7. 〖Python 数据库开发实战 - MySQL篇㉞〗- 综合案例 - 新闻管理系统数据库设计的基本属性
  8. Windows读写硬盘
  9. Springboot网络微小说的设计与实现毕业设计源码031758
  10. macd底背离的python_Python量化交易之MACD'顶底背离'形态的实现,自动化交易!
  11. android看视频掉帧,玩游戏看视频经常卡顿不顺畅?你只需这几步
  12. 刚刚整理好-汉字转拼音缩写的函数(C#)
  13. 在线文字生成音频工具
  14. python另存为_python 将word另存为txt
  15. 六轴机器人运动学正解
  16. linux宿主机ssh访问windows10虚拟机
  17. 2.CUDA 编程手册中文版---编程模型
  18. 归一化互相关(NCC)计算视差图
  19. python安全攻防第三章之Poc
  20. 关于OV5640的DVP接口的小结

热门文章

  1. oracle中与归档相关的视图,Oracle OWI 等待事件历史视图及相关视图 - 一沙弥的世界...
  2. 【全国大学生电子设计大赛】2021-04-26
  3. 照着别人的敲代码来学习编程好吗
  4. python的100道简单习题,祝你成为python大神的小老弟
  5. 第十七届全国大学生智能车竞赛山东赛区比赛成绩
  6. Selenium学习之浏览器操作_Sinno_Song_新浪博客
  7. Linux学习之查看log与查看进程_Sinno_Song_新浪博客
  8. 二、数码管显示原理及应用实现
  9. 时间序列-预测:概述【Time Series Forecasting (TSF) 】【时间序列既可以做回归任务,也可以做分类任务】【预测是回归问题,不是分类问题】
  10. std::tuple、std::tie(可用于结构体大小比较)、std::pair用法