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

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. asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权

    开发了一个公司内部系统,使用asp.net core 3.1.在开发用户认证授权使用的是简单的cookie认证方式,然后开发好了要写几个接口给其它系统调用数据.并且只是几个简单的接口不准备再重新部署一 ...

  2. Android 程序间的广播和Manifest找不到(解决方法)

    昨天写的是广播接收端的一些操作, 今天学的是广播的发送,上节介绍的标准广播和有序广播指的是发送端发送后,接收端的广播形式. 既然要发送,那就可以自定义发送广播: 把EditText的内容拿出来广播. ...

  3. String 的两种实例化方式

    String 的两种实例化方式 隐式实例化:直接赋值 public class Demo { public static void main(String[] args) { String s = & ...

  4. day3 基本语句

         代码缩进为一个tab键  就是四个空格           断点   在代码首行前空白处,双击  然后点右上角臭虫  然后点下面箭头朝下的 1.if 语句  if 判断条件:         ...

  5. jraft日志复制

    jraft的日志复制是指从leader往follower复制logEntry的过程. 日志复制从节点成为leader开始.在nodeImpl的becomeLeader中 private void be ...

  6. html中datalist 是什么??????

    <datalist>标签定义选项列表,与input元素配合使用该元素,来定义input可能值.datdallist及其选项不会被显示出来,它仅仅是合法的输入值列表. <input i ...

  7. Mybatis-plus 实体类新增属性,使用实体类执行sql操作时忽略该属性 注解

    @TableField(exist = false) 注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不 ...

  8. SpringSecurity权限管理系统实战—六、SpringSecurity整合jwt

    目录 SpringSecurity权限管理系统实战-一.项目简介和开发环境准备 SpringSecurity权限管理系统实战-二.日志.接口文档等实现 SpringSecurity权限管理系统实战-三 ...

  9. SpringBoot--- SpringSecurity进行注销,权限控制

    SpringBoot--- SpringSecurity进行注销,权限控制 环境 IDEA :2020.1 Maven:3.5.6 SpringBoot: 2.0.9 (与此前整合的版本2.3.3 不 ...

  10. random模块python

    random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.random()    用于生成一个随机浮点数:range[0.0,1.0) ? 1 2 import ran ...