matlab编写 牛顿法解非线性方程的程序

你帮我回答了matlab编写牛顿法解非线性方程的程序那天我打错了我们是非专业的不懂这个但是要用你能不能帮我解释一下这个程序怎么样使用???谢谢function[ci,D,... 你帮我回答了matlab编写 牛顿法解非线性方程的程序 那天我打错了 我们是非专业的 不懂这个 但是要用 你能不能帮我解释一下这个程序怎么样使用???谢谢function [ci,D,danfan, xddf, hanfan , Xk, Yk]= newtonzun (X, tol,ftol,gxmax)Y=Z(X);for i=1:gxmax dY=JZ(X);D=det(dY);Xk=X-(dY\Y')'; hanfan=norm(Y);danfan=norm(Xk-X);xddf=danfan/(norm(Xk)+eps);X=Xk;Y=Z(X);ci=i;if D~=0ci=i; Xk=X-(dY\Y')';Yk=Y;[ci,D,danfan,xddf,hanfan,X,Y];elsedisp('请注意!迭代方程组的系数行列式的值等于零. ')endif (hanfan <ftol)&(( danfan <tol)|( xddf < tol))[ci,D,danfan, xddf, hanfan , X, Y];return; endendif i>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax,请重新输入初始值.')return;end 展开
 我来答
匿名用户
推荐于2017-12-16
展开全部
这个牛顿法程序对吗?给你一个可用的: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 = x0 - feval(fname,x0)/feval(dfname,x0);
fprintf('x[%d]=%12.9f\n', k, x)
end
if k == N
fprintf('已达到迭代次数上限');
end
结果:x[0]= 0.100000000
x[1]= 0.261295899
x[2]= 0.434317505
x[3]= 0.504499011
x[4]= 0.510928606
x[5]= 0.510973427
x[6]= 0.510973429x = 0.5110>>
VSH艾羽
2025-09-30 广告
上海艾羽信息科技有限公司是一家以CAE软件销售、技术咨询及服务,仿真咨询及规划布局为一体的高科技公司。作为ANSYS的合作伙伴,艾羽致力于将ANSYS推出的产品,通过业界性能颇佳、丰富的工程仿真软件产品组合帮助客户解决复杂的仿真难题。力求与... 点击进入详情页
本回答由VSH艾羽提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式