首页 > 编程知识 正文

4次牛顿插值matlab例题,使用matlab仿真优点

时间:2023-05-03 19:07:55 阅读:125658 作者:194

1 .定义目标函数及其雅可比矩阵和赫塞矩阵:

function [f_val,f_grad_val,f_hess_val]=v_func(x_val,y_val ) syms x y; f=(x-2 ) (4) x-2 ) (2) (y )2) (y 1) ) 2; f_grad=Jacobian(f,[x; y ) ); f_hess=Jacobian(f_grad,[x,y]; f_val=subs(f,{x,y},{x_val,y_val} ); f_grad_val=subs(f_grad,{x,y},{x_val,y_val} ); f_hess_val=subs(f_hess,{x,y},{x_val,y_val} ); end 2.迭代求解图像并绘制

clearclcinit _ point=[ 12,15 ] '; iter_max=30; [f_init,f_grad_init,f _ Hess _ init ]=v _ func (init_point (2(1),init _ point ) )2); %需要2*x大小的数组存储x_steps_val=Zeros(2,iter_max ),因为每次迭代都需要更新两个变量。 f_steps_val=Zeros(1,iter_max; x _ steps _ val (:1 )=init_point; f _ steps _ val (:1 )=f_init; err_val=inf; err_max=1e-6; iter=1; residual=Zeros(1,iter_max ); wile err _ valerr _ maxifiter==ITER _ max disp ('已达到最大迭代次数); 布雷克; endx=x_steps_val(:iter ); [f_val_prev,f_grad_val,f_hess_val]=v_func(x(1),x )2); x_steps_val(:iter 1) ) x_steps_val ) :iter )-inv ) f_hess_val ) *(f_grad_val ' x_2=x_steps_val(:iter 1); [f_val_cur,f_grad_val,f_hess_val]=v_func(x_2(1),x_2) residual(:iter ERR_val=residual(:iter ); if err_val err_max disp ('找到满足精度要求的解); disp(x_2; disp([ '重复次数',num2str(ITER ) ]; 布雷克; end iter=iter 1; end%定义三维图像显示范围x=-15:0.5:15; y=-15:0.5:15; 绘制%三维函数图像[xx,YY]=meshgrid(x,y ); [f,f_grad,f_hess]=v_func(xx,yy ); 图形; mesh(xx,yy,double(f ) ) f ); 阿尔法(0.3 )锁定; %迭代点图像fori=1: iterspan=1:1: I-1; satter3(x_steps_val(2(1,I ),x_steps_val ) 2,I )、f_steps_val(i ) I )、'标记语言颜色', m(I )=获取帧; 结束

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。