broyden matlab,broyden方法求解非线性方程组的matlab实现

这篇博客介绍了如何在MATLAB中使用Broyden方法来求解非线性方程组。代码示例展示了全局收敛的Broyden求解器,包括Armijo规则和一维存储策略。该方法包含迭代统计显示、步长减少限制等参数设置,并在达到预设的误差容忍度或最大迭代次数后终止。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gifbroyden方法求解非线性方程组的matlab实现

Broyden 方法求解非线性方程组的 Matlab 实现注:matlab 代码来自网络,仅供学习参考。 1. 把以下代码复制在一个.m 文件上 function [sol, it_hist, ierr] = brsola(x,f,tol, parms) % Broyden s solver, globally convergent % solver for f(x) = 0, Armijo rule, one vector storage % % This code comes with no guarantee or warranty of any kind. % % function [sol, it_hist, ierr] = brsola(x,f,tol,parms) % % s: % initial iterate = x % function = f % tol = [atol, rtol] relative/absolute % error tolerances for the nonlinear iteration % parms = [maxit, maxdim] % maxit = maxmium number of nonlinear iterations % default = 40 % maxdim = maximum number of Broyden iterations % before restart, so maxdim-1 vectors are % stored % default = 40 % % output: % sol = solution % it_hist(maxit,3) = scaled l2 norms of nonlinear residuals % for the iteration, number function uations, % and number of steplength reductions % ierr = 0 upon successful termination % ierr = 1 if after maxit iterations % the termination criterion is not satsified. % ierr = 2 failure in the line search. The iteration % is terminated if too many steplength reductions % are taken. % % % internal parameter: % debug = turns on/off iteration statistics display as% the iteration progresses % % alpha = 1.d-4, parameter to measure sufficient decrease % % maxarm = 10, maximum number of steplength reductions before % failure is reported% % set the debug parameter, 1 turns display on, otherwise off % debug=1; % % initialize it_hist, ierr, and set the iteration parameters % ierr = 0; maxit=40; maxdim=39; it_histx=zeros(maxit,3); maxarm=10; % if nargin == 4maxit=parms(1); maxdim=parms(2)-1; end rtol=tol(2); atol=tol(1); n = length(x); fnrm=1; itc=0; nbroy=0; % % uate f at the initial iterate % compute the stop tolerance % f0=f(f,x); fc=f0; fnrm=norm(f0)/sqrt(n); it_hist(itc+1)=fnrm; it_histx(itc+1,1)=fnrm; it_histx(itc+1,2)=0; it_histx(itc+1,3)=0; fnrmo=1; stop_tol=atol + rtol*fnrm; outstat(itc+1, :) = [itc fnrm 0 0]; % % terminate on entry? % if fnrm = (1 - lambda*alpha)*fnrmo if iarm==0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值