用牛顿迭代法求方程的根matlab程序,牛顿迭代法求方程解 程序如下 | 您所在的位置:网站首页 › matlab一般迭代法求方程的根 › 用牛顿迭代法求方程的根matlab程序,牛顿迭代法求方程解 程序如下 |
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 function [x_reality,n_reality] = Newt( f_name,x_start,tolerance,n_limit) %% %牛顿迭代法(切线法)求解方程f_name = 0根的MATLAB实现 % f_name为迭代函数 % x_start为开始迭代的初始坐标 % tolerance为函数迭代的精度要求 % n_limit为函数的最大迭代次数 %% % x_reality为最终迭代结果 % n_reality为最后的迭代次数 %% format long; % 计算结果保留到小数点后14位 fprintf('牛顿迭代法求方程: %s = 0 的近似根\n',f_name); del_x = 0.0000001; % 用于求函数导数值的极小量 n_reality = 0; x_reality = x_start; x_start = x_reality + 1000; % 保证迭代能开始 %% while 1 if(abs(x_reality - x_start) n_limit) % 如果迭代次数超过限制,输出提示语,结束循环 disp('迭代次数超界'); break; else x_start = x_reality; % 把x_reality的值赋给x_start,用于求x_start点的到数值以及迭代 if(feval(f_name,x_start + del_x) - feval(f_name,x_start))==0 disp('导数为0') break; else y_deriv = (feval(f_name,x_start + del_x) - feval(f_name,x_start)) / del_x; % x_start点的导数值 x_reality = x_start - feval(f_name,x_start) / y_deriv; % 牛顿迭代 n_reality = n_reality + 1; % 迭代次数加1 fprintf('n_reality=%d, x_start=%14.14f,y_start=%14.14f\n',n_reality,x_start,feval(f_name,x_start)); end end end disp('牛顿迭代发结束'); end |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |