文件名称:牛顿法迭代
介绍说明--下载内容来自于网络,使用问题请自行百度
function main()
clc; clear all;
f = @(x)log(x+sin(x)); % 测试函数
df = @(x)(1+cos(x))/(x+sin(x)); % 导数函数
x0 = 0.1; % 迭代初值
x = TestNewton(f, df, x0) % 牛顿法求解
function x = TestNewton(fname, dfname, x0, e, N)
% 用途:Newton迭代法解非线性方程f(x)=0
% fname和dfname分别表示f(x)及其导函数的M函数句柄或内嵌函数表达式
% x0为迭代初值,e为精度(默认值1e-7)
% x为返回数值解,并显示计算过程,设置迭代次数上限N以防发散(默认500次)
% 输入参数
if nargin < 5
N = 500;
end
if nargin < 4
e = 1e-7;
end
x = x0; % 初值
x0 = x+2*e; % 浮动
k = 0; % 步数
fprintf('x[%d]=%12.9f\n', k, x) % 打印信息
while abs(x0-x)>e && k<N % 循环迭代条件
k = k+1; % 记录步数
x0 = x; % 更新x(k)
x = x0 - feval(fname,x0)/feval(dfname,x0); % 更新x(k+1)
fprintf('x[%d]=%12.9f\n', k, x) % 打印信息
end
if k == N
fprintf('已达到迭代次数上限'); % 迭代结束
end
clc; clear all;
f = @(x)log(x+sin(x)); % 测试函数
df = @(x)(1+cos(x))/(x+sin(x)); % 导数函数
x0 = 0.1; % 迭代初值
x = TestNewton(f, df, x0) % 牛顿法求解
function x = TestNewton(fname, dfname, x0, e, N)
% 用途:Newton迭代法解非线性方程f(x)=0
% fname和dfname分别表示f(x)及其导函数的M函数句柄或内嵌函数表达式
% x0为迭代初值,e为精度(默认值1e-7)
% x为返回数值解,并显示计算过程,设置迭代次数上限N以防发散(默认500次)
% 输入参数
if nargin < 5
N = 500;
end
if nargin < 4
e = 1e-7;
end
x = x0; % 初值
x0 = x+2*e; % 浮动
k = 0; % 步数
fprintf('x[%d]=%12.9f\n', k, x) % 打印信息
while abs(x0-x)>e && k<N % 循环迭代条件
k = k+1; % 记录步数
x0 = x; % 更新x(k)
x = x0 - feval(fname,x0)/feval(dfname,x0); % 更新x(k+1)
fprintf('x[%d]=%12.9f\n', k, x) % 打印信息
end
if k == N
fprintf('已达到迭代次数上限'); % 迭代结束
end
相关搜索: Newton
(系统自动生成,下载前可以参看下载内容)
下载文件列表
压缩包 : 1.txt 列表
本网站为编程资源及源代码搜集、介绍的搜索网站,版权归原作者所有! 粤ICP备11031372号
1999-2046 搜珍网 All Rights Reserved.