资源简介
用MATLAB实现 的,高斯牛顿法和莱文伯格算法matlab源码,自己写的,完全可以用
代码片段和文件信息
close all;
clc;
lamda = 0.01;
lamda
vv = 2;
updateJ=1;
errorsum1=[];
a=0.5; b=2;
x1=1:5;
x2=1:5; %x1x2在1-5中随机取25个点
x=[x1;x2]; % 变量矩阵
[X1 X2]=meshgrid(x1x2);
y=1./(X1+a)+X2.^2./(b+X2.^2);
randn(0);
random=randn(size(y)).*sqrt(0.1);
Y=y+random;
S1=reshape(X1251);
S2=reshape(X2251);
S3=reshape(Y251);
%figure(1);
%plot3(X1X2y);
%hold on
% figure(2);
% plot3(X1X2y);
%scatter3(S1S2S3‘r‘);
%hold on;
X1=X1‘;
X2=X2‘;
Y=Y‘;
syms a b; %MATLAB不支持符号变量编译为exe,所以只要用到符号变量的就只能在MATLAB运行罢了
B=[a b]; %但是求导是只能用符号变量的,所以无法编译为独立运行的exe
B1=[20 20]; %步骤1给ab赋予初值
f = 1./(X1+B(1))+X2.^2./(B(2)+X2.^2);
r=Y-f;
error=r‘*r;
error1=subs(errorBB1);
errorsum=sum(error1(:).^2);
errorsum1=[errorsum1 error
评论
共有 条评论