1.牛顿迭代法解方程的根:将方程写成最简单的f(x)=0的形式。在任意点处,如x=1处求取函数曲线的切线g1=f'(1)*x+(f(1)-f'(1)*1) 求取切线方程等于0时的横坐标x1=-(f(1)-f'(1)*1)/f'(1) 抽象成迭代式 x=-(f(x)-f'(x)*x)/f'(x)
对于多个根的情况,可以引入一个外部循环给定定义域。因为牛顿迭代总是能解出满足迭代方向距离初始值最近的根,因而可以通过给定定义域循环来求解定义域内所有的根(当然可能会有超出定义域的根,但无所谓)。为了避免由于小数位数而引起的根的不同,可以得出根时先进行比较。比如下面这个求解四次方根的程序:
public class Third { public static void main(String[] args) { double c=16; double t=0.0; double temp=-1000; double jduge=0.0; while(temp<=1000&&temp>=-1000){ t=temp; while(Math.abs(c-t*t*t*t)>1e-10){ t=(4*t*t*t*t-t*t*t*t+c)/(4*t*t*t); } if(Math.abs(jduge-t)>0.00001){ jduge=t; System.out.println(t); temp=temp+1; } else{ temp=temp+1; } } } }
2.递归
1)方法的第一条语句总是一个包含return的条件语句。
2)递归总是去尝试解决规模更小的子问题
3)递归的父问题不应和子问题产生交集