java牛顿法求方程根_求非线性方程的根(二分法.定点迭代法.牛顿法)

这篇博客介绍了如何用Java实现求非线性方程根的三种方法:二分法、定点迭代法和牛顿法。通过具体示例函数y=x.^2-3*x+2-exp(x),详细展示了每个方法的MATLAB代码实现,包括迭代过程和误差检查。同时提供了所需的辅助函数,如原函数及其导数。
摘要由CSDN通过智能技术生成

求非线性方程的根(二分法.定点迭代法.顿法)

下面是自己写的几个求非线性方程的根(matlab描述)方法:

以y=x.^2-3*x+2-exp(x)为例

1)二分法(文件名:ErFen.m)

a)function[R]=ErFen(f,a,b,e1,n)

% 二分法求根算法实验2

% f 要求根函数名

% a 初试有根区间最小值

% b 初试有根区间最大值

% e 精度

% n 跌代次数

k=0;

fb=feval_r(f,b);

fa=feval_r(f,a);

x=(a+b)/2;

fx=feval_r(f,x);

while

abs(a-b)>e1&k

k=k+1;

disp([k,x,fx,abs(a-b)]); %显示跌代过程

if fx*fa<0

b=x;

fb=fx;

else

a=x;

fa=fx;

end

x=(a+b)/2;

fx=feval_r(f,x);

end

R=x;

b)

二分法、牛顿法所需用的原函数(文件名Myfun.m:)

function[y]=myfun(x)

y=x.^2-3*x+2-exp(x)

2)定点迭代法(文件名:DieDai.m)

a) function [R]=DieDai(g,x1,N,e)

% 定点迭代法

% g 要求根函数名

% x1 迭代初值

% N 迭代最大次数

% e 精度

k=0;

x2=feval_r(g,x1);

while abs(x2-x1)>e&k

k=k+1;

disp([k,x1,x2,abs(x1-x2)]); 显示跌代过程%

x1=x2;

x2=feval_r(g,x1);

end

R=x2;

if k==N

error('error');% 所需迭代已达到

end

b) 实现定点迭代法所需用的函数(文件名:myfun1.m)

function[y]=myfun1(x)

% 要求的函数方程

y=(x.^2+2-exp(x))/3

3)牛顿法(文件名:Newton.m)

a)function [R]=newton(g,dg,x0,n,e)

% 牛顿法

% g 要求根函数名

% dg 要求根函数的导函数名

% x0 初值

% e 精度

% n 跌代次数

x1=x0- feval_r(g,x0)/feval_r(dg,x0);

k=0;

while ke;

k=k+1;

if feval_r(dg,x0)==0

error(error);%导函数为0程序停止

else

disp([k,x1,x0,abs(x1-x0)]);% 显示跌代过程

x0=x1;

x1=x0-

feval_r(g,x0)/feval_r(dg,x0);

end

end

end

b) 牛顿法所需用的原函数的导函数( 文件名:Dmyfun.m)

function[y]=dmyfun(x)

y=2*x-3-exp(x);

太很简单,是吧!

高人看到勿笑话,多指教!

如有错误,多谢指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值