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

2023-05-16

http://hi.baidu.com/aillieo/blog/item/0800e2a10ac9a59647106493.html

已知非线性方程组如下
3*x1-cos(x2*x3)-1/2=0

x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0

exp(-x1*x2)+20*x3+(10*pi-3)/3=0

求解要求精度达到0.00001

————————————————————————————————

首先建立函数fun

储存方程组编程如下fun.m保存到工作路径中:

function f=fun(x);

%定义非线性方程组如下

%变量x1 x2 x3

%函数f1 f2 f3

syms x1 x2 x3

f1=3*x1-cos(x2*x3)-1/2;

f2=x1^2-81*(x2+0.1)^2+sin(x3)+1.06;

f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;

f=[f1 f2 f3];

————————————————————————————————

建立函数dfun

用来求方程组的雅克比矩阵dfun.m保存到工作路径中:

function df=dfun(x);

%用来求解方程组的雅克比矩阵储存在dfun

f=fun(x);

df=[diff(f,'x1');diff(f,'x2');diff(f,'x3')];

df=conj(df');

————————————————————————————————

编程牛顿法求解非线性方程组将newton.m保存到工作路径中:

function x=newton(x0,eps,N);

con=0;

%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛

for i=1:N;

    f=subs(fun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});

    df=subs(dfun(x0),{'x1' 'x2' 'x3'},{x0(1) x0(2) x0(3)});

    x=x0-f/df;

    for j=1:length(x0);

        il(i,j)=x(j);

    end

    if norm(x-x0)<eps

        con=1;

        break;

    end

    x0=x;

end

 

%以下是将迭代过程写入txt文档文件名为iteration.txt

fid=fopen('iteration.txt','w');

fprintf(fid,'iteration');

for j=1:length(x0)

    fprintf(fid,'         x%d',j);

end

for j=1:i

    fprintf(fid,'\n%6d     ',j);

    for k=1:length(x0)

        fprintf(fid,' %10.6f',il(j,k));

    end

end

if con==1

    fprintf(fid,'\n计算结果收敛!');

end

if con==0

    fprintf(fid,'\n迭代步数过多可能不收敛!');

end

fclose(fid);

————————————————————————————————

运行程序

matlab中输入以下内容

newton([0.1 0.1 -0.1],0.00001,20)

————————————————————————————————

输出结果

ans =

 

    0.5000    0.0000   -0.5236

 

——————————————————————————————————————————————————

iteration中查看迭代过程

 

iteration         x1         x2         x3

     1        0.490718   0.031238  -0.519661

     2        0.509011   0.003498  -0.521634

     3        0.500928   0.000756  -0.523391

     4        0.500227   0.000076  -0.523550

     5        0.500019   0.000018  -0.523594

     6        0.500005   0.000002  -0.523598

     7        0.500000   0.000000  -0.523599

计算结果收敛

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab实现牛顿迭代法求解非线性方程组 的相关文章

随机推荐

  • C学习回顾1

    1 求下面程序的输出 include lt stdio h gt int main int i 61 43 printf 34 d n 34 printf 34 d 34 printf 34 d 34 i 4321 return 0 结果分
  • golang Unmarshal拿不全数据问题

    说明 xff1a 这个问题出现在后端调用json Unmarshal方法去解析数据库中存的数据时 xff0c 解析出来的结果中只能拿到部分数据 xff0c json格式经检查后正确无误 xff0c 同时也没有字段名出错等低级错误 首先来看要
  • Golang开发新手常犯的50个错误

    50 Shades of Go Traps Gotchas and Common Mistakes for New Golang Devs 原文地址 xff1a http devs cloudimmunity com gotchas and
  • Go学习之regexp包学习

    Go中regexp包主要存放的是处理正则表达式相关的结构和处理函数 xff0c 具体的函数原型可以在GOROOT中寻找相应的包查看 下面只是给出各个不同的函数的功能和使用方法 xff0c 正则表达式的基本概念可以查看正则表达式基本概念学习总
  • Go1.1.1新功能module的介绍及使用

    Go1 1 1版本发布 2018 08 24发布 已经过去几天 xff0c 从官方的博客中看到 xff0c 有两个比较突出的特色 xff0c 一个就是今天讲的module xff0c 模块概念 目前该功能还在试验阶段 xff0c 有些地方还
  • linux系统故障(一)之grub恢复

    linux系统故障 xff08 一 xff09 之grub恢复 前言 1 什么是linux系统故障 xff1f 2 什么是grub xff1f 3 grub坏了我们怎么恢复 xff1f 4 grub恢复的具体方法 xff1f 实验环境 本次
  • MSCOCO数据集下载安装---image_caption(内涵报错)

    参考博客 xff1a https blog csdn net ccbrid article details 79368639 在linux上 步骤 1 git clone cocoapi2 进入文件夹3 放入image和annotation
  • Ubuntu安装RTL8812AU无线网卡

    Ubuntu安装RTL8812AU无线网卡 下载资源解压并使用管理员权限 xff0c 运行以下指令重新插拔无线网卡 xff0c 安装成功 下载资源 链接 xff1a https pan baidu com s 161Pje1p27yuzDt
  • Linux线程--生产者消费者模型

    在生产者 消费者模型中 xff0c 主程序分别启动了生产者线程和消费者线程 xff0c 其中生产者线程不停的写入共享的循环缓冲区 xff0c 二消费者线程这不停的从缓冲区中取出数据 在生产者写入缓冲区时 xff0c 首先要获得互斥锁 xff
  • Android平台GDB调试环境搭建

    一 背景 Android系统采用GDB xff08 The GNU Project Debugger xff0c GNU工程调试器 xff09 作为原生程序的调试器 xff0c GDB调试源码的程序优势非常明显 xff1b 但Android
  • 1寸、2寸、小2寸的照片尺寸是多少

    1寸照片 xff0c 尺寸大小是 xff1a 2 5厘米 3 5厘米 xff0c 分辨率设成300像素 英寸 xff0c 这样最终得到的像素是 xff1a 295 413 小2寸照片 xff0c 尺寸大小是 xff1a 3 3厘米 4 8厘
  • React-Native 消息推送

    在这里我们可以选择大厂的推送 xff0c 优先使用极光推送 xff0c 下一篇将介绍如何使用阿里推送 使用说明 PS 真没想到极光大厂出的官方文档也有问题 xff0c 这里列出是最新版本修复可用版 创建新项目 react native in
  • 欢迎使用CSDN-markdown编辑器

    能力培养 与team leader讨论 xff0c 大抵将能力培养分成三类 业务能力 解决具体反馈的问题 xff1b 总结通用的解决方案 xff1b 从根本上改善根本问题技术能力 设计架构的能力 xff0c 注重性能的改善泛化能力 明确问题
  • 开发原则

    1 提供完整的数据 xff0c 不需要调用者进行额外的处理 2 测试 xff0c 保证比较对象要都是真实正确的 3 以业务需求为驱动 xff0c 兼顾系统架构升级
  • Windows下多台电脑共享剪切板的方法

    转自于 http www microsoft com china MSDN library WebServices WebServices WebServices mspx mfr 61 true
  • Cisco Packet Tracer模拟器使用

    第一篇 熟悉界面 一 设备的选择与连接 在界面的左下角一块区域 xff0c 这里有许多种类的硬件设备 xff0c 从左至右 xff0c 从上到下依次为路由器 交换机 集线器 无线设备 设备之间的连线 xff08 Connections xf
  • 各种路由器接口与连接方法

    转自于 http bbs pcsoft com cn thread 138952 1 4 html 路由器所在的网络位置比较复杂 xff0c 既可是内部子网边缘 xff0c 也可位于内 外部网络边缘 同时为了实现强大的适用性 xff0c 它
  • line vty 0 4 什么意思

    转自于 http hi baidu com rxlly blog item 9072bc397ae18bde7c1e71f6 html line vty 0 4是不是指启用5个telnet会话的意思 xff1f 那line vty 0 0是
  • 内网远程协助工具_分享几个常用的免费远程软件

    转载自 xff1a https blog csdn net weixin 39806779 article details 110962599 1 说到远程工具 xff0c 首先我们想到的是影子 Radmin 外网需要映射端口 xff0c
  • matlab实现牛顿迭代法求解非线性方程组

    http hi baidu com aillieo blog item 0800e2a10ac9a59647106493 html 已知非线性方程组如下 3 x1 cos x2 x3 1 2 61 0 x1 2 81 x2 43 0 1 2