📄 newton_2.m
字号:
%适用Newton法计算下面函数的极小点:(带步长因子的牛顿法)
% x1^2+4*x2^2+9*x3^2-2*x1+18*x3,
%初始点任取
clc;
clear;
syms x1 x2 x3 alfa a b c;
fx=x1^2+4*x2^2+9*x3^2-2*x1+18*x3;
f=subs(fx,{x1,x2,x3},{a,b,c});
g=[diff(fx,x1);diff(fx,x2);diff(fx,x3)];
G=[diff(g(1),x1) diff(g(1),x2) diff(g(1),x3);diff(g(2),x1) diff(g(2),x2) diff(g(2),x3);diff(g(3),x1) diff(g(3),x2) diff(g(3),x3)];
x1=0;x2=0;x3=0;
e=0.01;
for times=0:100
if norm(eval(g))<e
min=[x1;x2;x3];
break;
else
d=-eval(G)\eval(g);
f=subs(f,{a,b,c},{x1+alfa*d(1),x2+alfa*d(2),x3+alfa*d(3)});
t=diff(f);
alfa=eval(solve(t));
x1=x1+alfa*d(1);
x2=x2+alfa*d(2);
x3=x3+alfa*d(3);
end
end
fprintf('精度为%d时,经过%d次牛顿迭代,求得极小点为(%f,%f,%f)',e,times,min(1),min(2),min(3));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -