前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java|写一个用迭代法解方程的Java程序

Java|写一个用迭代法解方程的Java程序

作者头像
算法与编程之美
发布2019-11-24 16:30:36
1.2K0
发布2019-11-24 16:30:36
举报

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

迭代法也称辗转法,是一种逐次逼近方法,在使用迭代法解方程组时,其系数矩阵在计算过程中始终不变。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或步骤)时,都从变量的原值推出它的一个新值。

迭代法具有循环的计算方法,方法简单,适宜解大型稀疏矩阵方程组,在用计算机计算时只需存储A的非零元素(或可按一定公式形成系数,这样A就不需要存储)。

(1)对于给定的方程组X =Bx+f,用式子逐步代入求近似解的方法称为迭代法(或称为一阶定常迭代法,这里与B和k无关)

(2) 如果limx(k), x→∞存在(记作x* ),称此迭代法收敛,显然x就是方程组的解,否则称此迭代法发散。

解决方案

解法介绍

牛顿迭代法是一种线性化方法,其基本思想是将非线性方程f(x)= 0逐步归结-为某种线性方程来求解.设已知方程f(x)=0有近似根X (假定f’(xk)≠ 0),将函数f(x)在点xk展开,有:

f(x)≈f(xk)+f’(xk)(x-xk)于是方程f(x)=0可近似地表示为f(x)+ f’(xk)(x-xk)=0(是个线性方程),记其根为xk+1,则xk+1的计算公式为xk+1=xk-f(xk)f’(xk)(k=0,1,2……)

例题讲解

例:用牛顿迭代法三次求方程f(x)=x5-x2+x-30=0,在区间[1,3]中的近似值请详细解答

解:

f(1)=-29

f(3)=207 所以[1,3]之间一定有零点。而且明显更靠近x=3。

f (2) =-2

f(2. 5)=63.9

f(2.2)=19.2

f(2.1)=8.53

f(2. 01)=0.78

f(2 001)=0.08

所以f(2. 0001)=0.008应该满足要求了。所以x=2.0001

例:使用牛顿迭代法求方程的解,X3-2x-5=0,在区间[2,3]上的根。

package Lab_02.Test_01; public class Test_01 { public static void main(String[] args) { double x=2; for(int i=0;i<20;i++) { x=-f(x)/f1(x)+x; } System.out.println(x+""); } static double f(double x) { double ans; ans=Math.pow(x, 3)-2*x-5; return ans; } static double f1(double x) { double ans; ans=3*Math.pow(x, 2)-2; return ans; }}

END

实习编辑 | 王楠岚

责 编 | 刘 连

where2go 团队

微信号:算法与编程之美

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档