Matlab 非线性迭代法(2)高斯牛顿法

news2024/11/18 19:44:35

一、思想

高斯牛顿法的对象是最小二乘法。

采用一定的方法对Hession 矩阵进行近似,这样的话可以减少计算量,只需要计算一阶偏导数得到雅可比矩阵即可。

               minF(x)=|| f(x)||^2  

那么x在xk处的增量Δxk出的最小二乘法为 

    minF(xk+Δxk)=∣∣f(xk​+Δxk​)∣∣^2

同理:

     F(xk+Δxk)=≈∣∣f(xk​)+J(xk​)TΔxk​∣∣^2

J(xk​) 是一阶导数,也就是雅可比矩阵,xk是一个已知数据,只有Δxk​是未知数,那么我们要计算的就是这个Δxk​。

二、算法流程

1、确定函数的模型,设定迭代精度m

2、设定一个初始值  y=A*exp(Bx),  已知x y 数据,所以拟合的就是参数  A 和B,那么就要给A  和B 设定一个初始值。

3、对与k次迭代,计算J(xk)雅可比矩阵 和 误差r 

 y'=A*exp(Bx),  r=y-y'

4、计算 Δxk=inv(J(xk)'J(xk)T)*(-J(xk)*r)

5、计算 norm(Δxk) <m?Ok:x(k+1)=x(x)+Δxk    ---》返回3

eg1 :

clear ;
clc;
iterator_num=500;
segma=1e-8;% 迭代精度
% y=a*exp(bx)+c 函数模型
% 设置其实参数值
a=6;
b=0.3;
c=0.1;
act_x=[1;2;3;4;5;6;7;8];
act_y=[8.3;11.0;14.7;19.7;26.7;35.2;44.4;55.9];
% 开始迭代
for i=1:iterator_num
    y=a*exp(b*act_x);
    %计算误差 r=act_y-y
    r=act_y-y;
    % 计算偏导数a 的雅可比矩阵
    Jacobian_a=exp(b*act_x);
    % 计算偏导数b 的雅可比矩阵
    Jacobian_b=a*exp(b*act_x).*act_x;
  
    % 联立雅可比方阵
    Jf=[Jacobian_a,Jacobian_b];
    % =====
    delta_abc=inv(Jf'*Jf)*Jf'*r;
    if norm(delta_abc)<segma
        break;
    end
    a_iterator=a+delta_abc(1);
    b_iterator=b+delta_abc(2);
    % 判断精度
    if norm(r)<segma
        break;
    end
    a=a_iterator;
    b=b_iterator;
end
it_y=a*exp(b*act_x);
plot(act_x,act_y,'.',act_x,it_y,'-');
xlim([0 10]);
ylim([0 70]);
legend('act','fit','Location','southoutside','Orientation','horizontal')





eg2;

Matlab Gauss 拟合_Σίσυφος1900的博客-CSDN博客

从上面的链接可以得到一些数据x y

 函数的模型是:y(i)=a*exp(-(x(i)-b).^2/c.^2)+0.1*rand(1);

补充:求导数


>> syms  act_x
>> y=a*exp(-(act_x-b).^2/c.^2)
 
y =
 
a*exp(-(act_x - b)^2/c^2)
 
>> diff_a=diff(y,a)
 
diff_a =
 
exp(-(act_x - b)^2/c^2)
 
>> diff_b=diff(y,b)
 
diff_b =
 
(a*exp(-(act_x - b)^2/c^2)*(2*act_x - 2*b))/c^2
 
>> diff_c=diff(y,c)
 
diff_c =
 
(2*a*exp(-(act_x - b)^2/c^2)*(act_x - b)^2)/c^3
 
>> 

拟合效果:

% 牛顿高斯迭代系数
close all;
clear;
clc;
% y(i)=a*exp(-(x(i)-b).^2/c.^2)+0.1*rand(1); 函数模型
% 在拟合数据的时候用的系数是
% a=1;
% b=4;
% c=10;
% 因此在拟合参数的时候,这里用 a=0.866
a=0.966;
b=3.98;
c=9.98;
segma=0.00000001;
iterator_num=1000;
x=load('x.mat');
act_x=x.x;
y=load('y.mat');
act_y=y.y;
plot(act_x,act_y,'.');
hold on;
for i=1:iterator_num
    % 计算误差
    y=a*exp(-(act_x-b).^2/c.^2);
    r=act_y-y;
    % 开始计算偏导数矩阵
    jacobian_a=exp(-(act_x - b).^2/c.^2);
    jacobian_b=(a*exp(-(act_x - b).^2/c.^2).*(2.*act_x - 2*b))/c.^2;
    jacobian_c=(2*a*exp(-(act_x - b).^2/c.^2).*(act_x - b).^2)/c.^3;
     
    Jf=[jacobian_a,jacobian_b,jacobian_c];
    delta_abc=inv(Jf'*Jf)*Jf'*r;
    if norm(delta_abc)<segma
        break;
    end
    a_iterator=a+delta_abc(1);
    b_iterator=b+delta_abc(2);
    c_iterator=c+delta_abc(3);
    % 判断精度
    if norm(r)<segma
        break;
    end
    a=a_iterator;
    b=b_iterator;
    c=c_iterator;
end
it_y=a*exp(-(act_x-b).^2/c.^2)+0.02;
plot(act_x,it_y,'-');
legend('act','fit','Location','southoutside','Orientation','horizontal')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Word处理控件Aspose.Words功能演示:使用 Java 处理 Word 文档的原始版本或修订版本

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理&#xff0c;并…

企业电子招投标采购系统源码之登录页面-java spring cloud

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

制造业为什么要数字化?有何意义?

制造业为什么要数字化&#xff1f;有何意义&#xff1f; 党的二十大报告指出&#xff0c;要“坚持把发展经济的着力点放在实体经济上&#xff0c;推进新型工业化”“促进数字经济和实体经济深度融合”。 新一代信息技术催生第四次工业革命&#xff0c;互联网、大数据、人工智能…

MISC:图片隐写的破解方法.

MISC&#xff1a;图片隐写的破解方法. Misc即杂项&#xff0c;是信息隐藏又称信息伪装&#xff0c;就是通过减少载体的某种冗余&#xff0c;如空间冗余、数据冗余等&#xff0c;来隐藏敏感信息&#xff0c;达到某种特殊的目的。 信息隐藏打破了传统密码学的思维范畴&#xff0…

软件开发企业如何合理解决企业增值税和所得税问题?

业务是流程&#xff0c;财税是结果&#xff0c;税收问题千千万&#xff0c;关注《税算盘》来帮你找答案。 软件开发是根据用户的要求建造出软件系统或者系统中的软件部分的过程&#xff0c;软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。 与传统产业的…

实现高并发秒杀的 7 种方式

1.引言 高并发场景在现场的日常工作中很常见&#xff0c;特别是在互联网公司中&#xff0c;这篇文章就来通过秒杀商品来模拟高并发的场景。文章末尾会附上文章的所有代码、脚本和测试用例。 本文环境&#xff1a; SpringBoot 2.5.7 MySQL 8.0 X MybatisPlus Swagger2.9.2 …

【GPT-4理论系列篇】GPT-4核心技术探秘 | 京东云技术团队

作者&#xff1a;京东零售 刘岩 前言 GPT-4已经发布有一段时间了&#xff0c;但是出于安全性等各种原因&#xff0c;OpenAI并没有公布GPT-4的技术细节和代码&#xff0c;而是仅仅给出了一个长达100页的技术报告[1]。这个技术报告着重介绍了GPT-4的强大之处&#xff0c;仅仅给…

分享Python采集66个html5代码,总有一款适合您

分享Python采集66个html5代码&#xff0c;总有一款适合您 Python采集的66个html5代码下载链接&#xff1a;https://pan.baidu.com/s/1z0AsahthBcpDECA1bVg5ZA?pwd168a 提取码&#xff1a;168a 基于canvas的背景颜色渐变动画插件 jquery音乐播放器插件jsRapAudio HTML5 sv…

SpringBoot整合ES,ik分词器

"reason": "Failed to parse mapping: analyzer [ik_max_word] has not been configured in mappings" 这是因为没有安装ES的IK分词器 下载地址 Release v8.7.0 medcl/elasticsearch-analysis-ik GitHub ElasticSearch 内置了分词器&#xff0c;如标准…

分享Python采集240个jQuery代码,总有一款适合您

分享Python采集240个jQuery代码&#xff0c;总有一款适合您 Python采集的240个jQuery代码下载链接&#xff1a;https://pan.baidu.com/s/1S_lV6aoXOtohc3zk3r3uxA?pwd2h4r 提取码&#xff1a;2h4r jQuery实时搜索插件-HideSeek ps样式的jQuery颜色选择插件 colpick-jQuer…

蓝桥杯青少组python:第十三届省赛第一场

选择题 1、下列二进制中最大数是&#xff08;&#xff09; A 110 B 1010 C 1100 D 1001 2、以下方法&#xff0c;不是对文件读操作的是() A readline() B readlines() C readtext() D read() 3、以下对turtle库中函数描述正确的是() A goto()函数设置当前画笔移动到原点位置…

抢先看~详细、全面的文档处理控件Aspose.words 功能一览

Aspose.Words是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。(技术交流q群&#xff1a;761297826) Aspose API…

三.Android系统的启动流程

Android系统总体启动流程 Boot ROM (启动只读存储器,Loader层) 当电源按下时,引导芯片代码会从预定义的地方(固化在ROM中,Read Only Memory)开始执行,加载引导程序BootLoader到RAM(Random Access Memory),然后执行 Boot Loader (启动加载器,类似于Windows的bios系统,Loader层)…

C++:C++PrimerPlus第六版:Chapter9:内存模型和名称空间

Chapter9&#xff1a;内存模型和名称空间 1. C源文件组织策略我们先看下面程序清单&#xff1a; coordin.hmain.cppCoordin.cpp 2. 内存存储方案2.1 自动存储持续性2.2 静态存储持续变量2.3 存储方案和动态分配 本章节从三个大方面做总结 C多个源文件组织方式C存储方案C名称空间…

案例告诉你 ChatGPT 最有可能取代哪些职业

ChatGPT 的应用场景ChatGPT 最可能取代哪些职业&#xff1f;写在最后 ChatGPT 的应用场景 ChatGPT 的应用场景大体上可以归类为三大模块。 第一类是 代码相关 的任务场景。包含程序语言之间的相互转换&#xff08;如 python 转 java&#xff09;、程序命令的生成、代码 bug 的…

考虑多能负荷不确定性的区域综合能源系统鲁棒规划(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

单链表OJ题:LeetCode--21.合并两个有序链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;今天给大家带来的是LeetCode中876题&#xff1a;链表的中间结点 数 据 结 构&#xff1a;数据结构专栏 作 者&#xff1a;stackY、 C 语 言 &#xff1a;C语言专栏 LeetCode &#xff1a;LeetCode刷题训练营 L…

5月16日,亚马逊云科技邀你一起探索游戏的无限可能

游戏精品化趋势越发明显&#xff0c;如何才能让技术帮助创意更好地实现&#xff1f;游戏出海如火如荼&#xff0c;如何才能在全球市场分一杯羹&#xff1f;生成式AI横空出世&#xff0c;如何才能充分利用&#xff0c;实现降本增效、利润提升&#xff1f;相信每个游戏人&#xf…

Word控件Spire.Doc 【文本框】教程(3):如何在 Word 中插入或删除文本框

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

基于VC + MSSQL实现的县级医院医学影像PACS

一、概述&#xff1a; 基于VC MSSQL实现的一套三甲医院医学影像PACS源码&#xff0c;集成3D后处理功能&#xff0c;包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等功能。 二、医学影像PACS实现功能&#xff1a; 1、…