用LM方法的matlab求解,matlab中LM算法「建议收藏」

用LM方法的matlab求解,matlab中LM算法「建议收藏」symsabyxreal;f=a*exp(-b*x);Jsym=jacobian(f,[ab]);%拟合用数据。参见《数学试验》,p190,例2data_1=[0.250.511.523468];obs_1=[19.2118.1515.3614.1012.899.327.455.243.01];%2.LM算法%初始猜测sa0=10;b0=0.5…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

syms a b y x real;

f=a*exp(-b*x);

Jsym=jacobian(f,[a b]);

% 拟合用数据。参见《数学试验》,p190,例2

data_1=[0.25 0.5 1 1.5 2 3 4 6 8];

obs_1=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01];

% 2. LM算法

% 初始猜测s

a0=10; b0=0.5;

y_init = a0*exp(-b0*data_1);

% 数据个数

Ndata=length(obs_1);

% 参数维数

Nparams=2;

% 迭代最大次数

n_iters=50;

% LM算法的阻尼系数初值

lamda=0.01;

% step1: 变量赋值

updateJ=1;

a_est=a0;

b_est=b0;

% step2: 迭代

for it=1:n_iters dg

if updateJ==1

% 根据当前估计值,计算雅克比矩阵

J=zeros(Ndata,Nparams);

for i=1:length(data_1)

J(i,:)=[exp(-b_est*data_1(i)) -a_est*data_1(i)*exp(-b_est*data_1(i))];%

end

% 根据当前参数,得到函数值

y_est = a_est*exp(-b_est*data_1);

% 计算误差

d=obs_1-y_est;

% 计算(拟)海塞矩阵

H=J’*J;

% 若是第一次迭代,计算误差

if it==1

e=dot(d,d);

end

end

% 根据阻尼系数lamda混合得到H矩阵

H_lm=H+(lamda*eye(Nparams,Nparams));

% 计算步长dp,并根据步长计算新的可能的\参数估计值

dp=inv(H_lm)*(J’*d(:));

g = J’*d(:);

a_lm=a_est+dp(1);

b_lm=b_est+dp(2);

% 计算新的可能估计值对应的y和计算残差e

y_est_lm = a_lm*exp(-b_lm*data_1);

d_lm=obs_1-y_est_lm;

e_lm=dot(d_lm,d_lm);

% 根据误差,决定如何更新参数和阻尼系数

if e_lm

lamda=lamda/10;

a_est=a_lm;

b_est=b_lm;

e=e_lm;

disp(e);

updateJ=1;

else

updateJ=0;

lamda=lamda*10;

end

end

%显示优化的结果

a_est

b_est

这是LM算法的例子,我想问一下其中updateJ是什么作用?求讲解一下~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187236.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月20日 上午9:07
下一篇 2026年4月20日 上午9:13


相关推荐

  • 游戏中的“垂直同步”与“三重缓冲”究竟是个啥?[通俗易懂]

    游戏中的“垂直同步”与“三重缓冲”究竟是个啥?[通俗易懂]从今天开始,我们会开启“小教程”的兄弟栏目——小科普,给大家介绍在配电脑或玩游戏过程中经常会遇到的专业名词。第一期“小科普”我们来讲讲游戏中经常会遇到的一个画面选项——垂直同步我们曾在一期语音里和大家讲探讨过垂直同步的功用,可惜语音有60秒的长度限制,并不能和大家解释清楚,那么今天就来详细分析一下“垂直同步”:它到底是干嘛用的?它有什么缺点吗?

    2022年5月11日
    143
  • python标识符在命名时有哪些规则_php标识符的命名规则

    python标识符在命名时有哪些规则_php标识符的命名规则在Python中,一切都是对象,包括常量数据类型,如整数数据类型(1,2,3…),字符串数据类型(“ABC”)。想要使用这些对象,就要使用它的对象引用。赋值操作符,实际上是使得对象引用对内存中存放数据的对象进行引用。那什么是标识符?标识符是对对象引用起的一个名字。有效的Python标识符规则:1.长度任意长;2.标识符不能与关键字同名;3.在2.x版本的Python中,标识符以ASCII的字母…

    2025年9月23日
    10
  • cookie获取java_java中如何获取cookie

    cookie获取java_java中如何获取cookie展开全部 1 设置 cookie 到客户端 Cookiec1 newCookie username hzh response addCookie c1 Cookiec2 newCookie password 123 设置生命周期为 1 小时 秒 e58685e5aeb3 为单位 c2

    2026年3月19日
    2
  • 交换机vlan配置实例_h3c vlan配置

    交换机vlan配置实例_h3c vlan配置锐捷交换机vlan配置示例,能够帮助理解vlan原理

    2025年12月9日
    5
  • Java与Python哪个更好?「建议收藏」

    Java与Python哪个更好?「建议收藏」一些开发人员声称Python比Java更有生产力。但更应先说明的是:Python和Java有什么区别?PythonvsJava            Java是一个典型化的编程语言,这意味着变量名必须显示声明。相比之下,我们有动态类型的Python,它不需要声明变量。对于编程语言的动态和静态类型有很多争论。不过请注意这样一个特征:Python是一个有着简单句法的多样性的语…

    2022年7月7日
    26
  • matlab经典案例_小苹果最炫民族风串烧

    matlab经典案例_小苹果最炫民族风串烧%Mostshiningnationalwind//最炫民族风onMatlab%TheModificationisfrom”canon”,notbymefs=44100;%sampleratedt=1/fs;T16=0.125;t16=[0:dt:T16];[tempk]=size(t16);t4=linspace(0,4*T16,4*k…

    2026年2月13日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号