牛顿迭代法,又名切线法,这里不详细介绍,简单说明每一次牛顿迭代的运算:首先将各个方程式在一个根的估计值处线性化(泰勒展开式忽略高阶余项),然后求解线性化后的方程组,最后再更新根的估计值。下面以求解最简单的非线性二元方程组为例(平面二维定位最基本原理),贴出源代码:

1、新建函数fun.m,定义方程组

 function f=fun(x);
%定义非线性方程组如下
%变量x1 x2
%函数f1 f2
syms x1 x2
f1 = sqrt((x1-4)^2 + x2^2)-sqrt(17);
f2 = sqrt(x1^2 + (x2-4)^2)-5;
f=[f1 f2];

2、新建dfun.m,求出一阶微分方程

 function df=dfun(x);
f=fun(x);
df=[diff(f,'x1');diff(f,'x2')]; %雅克比矩阵

3、建立newton.m,执行牛顿迭代过程

 clear;clc
format;
x0=[0 0]; % 迭代初始值
eps = 0.00001; % 定位精度要求
for i = 1:10
f = double(subs(fun(x0),{'x1' 'x2'},{x0(1) x0(2)}));
df = double(subs(dfun(x0),{'x1' 'x2'},{x0(1) x0(2)})); % 得到雅克比矩阵
x = x0 - f/df;
if(abs(x-x0) < eps)
break;
end
x0 = x; % 更新迭代结果
end
disp('定位坐标:');
x
disp('迭代次数:');
i

结果如下:

定位坐标:

x =

0.0000   -1.0000

迭代次数:

i =

4

牛顿迭代法解非线性方程组(MATLAB版)的更多相关文章

  1. OpenCASCADE解非线性方程组

    OpenCASCADE解非线性方程组 eryar@163.com Abstract. 在科学技术领域里常常提出求解非线性方程组的问题,例如,用非线性函数拟合实验数据问题.非线性网络问题.几何上的曲线曲 ...

  2. 牛顿迭代法解指数方程(aX + e^x解 = b )

    高中好友突然问我一道这样的问题,似乎是因为他们专业要做一个计算器,其中的一道习题是要求计算器实现这样的功能. 整理一下要求:解aX + e^X = b 方程.解方程精度要求0.01,给定方程只有一解, ...

  3. C语言实现牛顿迭代法解方程

    利用迭代算法解决问题,需要做好以下三个方面的工作: 一.确定迭代变量 在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 二.建立迭 ...

  4. Matlab-6:解非线性方程组newton迭代法

    函数文件: function x=newton_Iterative_method(f,n,Initial) x0=Initial; tol=1e-11; x1=x0-Jacobian(f,n,x0)\ ...

  5. 【Java例题】4.4使用牛顿迭代法求方程的解

    4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ...

  6. Python最小二乘法解非线性超定方程组

    求解非线性超定方程组,网上搜到的大多是线性方程组的最小二乘解法,对于非线性方程组无济于事. 这里分享一种方法:SciPy库的scipy.optimize.leastsq函数. import numpy ...

  7. 华为OJ1964-求解立方根(牛顿迭代法)

    一.题目描述 描述: 计算一个数字的立方根,不使用库函数. 函数原型double getCubeRoot(double input) 输入: 待求解参数 double类型 输出: 输出参数的立方根,保 ...

  8. 伪距定位算法(matlab版)

    在各种伪距定位算法中,最小二乘法是一种比较简单而广泛的方法,该算法可以分为以下几步: 1.准备数据与设置初始值 这里准备数据,主要是对于各颗可见卫星,收集到它们在同一时刻的伪距测量值,计算测量值的各项 ...

  9. UVA 10428 - The Roots(牛顿迭代法)

    UVA 10428 - The Roots option=com_onlinejudge&Itemid=8&page=show_problem&category=494& ...

随机推荐

  1. Python分析6000家破产IT公司

    前一阵有个字节跳动的程序员火了,年仅28岁实现了财务自由,宣布提前退休.最直接的原因是选择了一家发展前景很好的创业公司.当然平时我们经常能听到,某某人加入创业公司,xx年后公司上市,身价暴涨,财务自由 ...

  2. 大学生可用来接单,利用Python实现教务系统扩容抢课!

    最近一学期一次的抢课大戏又来了,几家欢乐几家愁.O(∩_∩)O哈哈~(l我每次一选就过了hah,我还是有欧的时候滴).看着他们盯着教务系统就着急,何况我们那教务系统,不想说什么.emmm 想周围的朋友 ...

  3. proxy的实现(代理)

    29.proxy的实现 (代理) get方法 //定义一个对象personvar person = {"name":"张三”};//创建一个代理对象pro, 代理pers ...

  4. Bytom 储蓄分红 DAPP 开发指南

    储蓄分红DAPP 储蓄分红合约简介 储蓄分红合约指的是项目方发起了一个锁仓计划(即储蓄合约和取现合约),用户可以在准备期自由选择锁仓金额参与该计划,等到锁仓到期之后还可以自动获取锁仓的利润.用户可以在 ...

  5. C# ASP 分析器错误信息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。

    在本地运行的应用,部署到服务器上出现错误.原因是web.config 中:<compilation debug="true" targetFramework="4. ...

  6. 9个常用ES6特性归纳(一般用这些就够了)

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...

  7. Jsp内置对象application之统计浏览网页的次数

    <% Object obj = application.getAttribute("count"); if(obj !=null){ Integer sum = (Integ ...

  8. 【ZJOI2007】棋盘制作 - 悬线法

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个 \(8 \times 8\) 大小的黑白相间的方阵,对应八八六十四卦 ...

  9. ArcGIS Pro Add-In插件开发[ArcGIS Pro SDK for .NET]

    本文基于 Windows7 + VS2019 + .NET Framework 4.8 + ArcGIS Pro 2.5 开发和撰写. 目录 开发环境配置 获取ArcGIS Pro 安装VS2019 ...

  10. Gitlab-CI/CD 1

    Gitlab-Runner自动构建服务器搭建1 这里讲到的gitlab仓库指的是https://gitlab.com/,自建gitlab仓库也基本相同. 项目的构建打包过程相对比较消耗系统性能,所以g ...