雅克比迭代——java实现

有方程组:
在这里插入图片描述
用雅可比迭代法及赛德尔迭代法解此方程组
终止条件:
在这里插入图片描述源代码:

**
 * @program: Seidel
 * @Package: PACKAGE_NAME
 * @Description: TODO
 * @author: Mr.John
 * @date: 2020/3/14 15:28
 */
public class Seidel {
    public static void main(String[] args) {
        double x1=0, x2=0, x3=0;                //初始值
        double x1_i, x2_i, x3_i;                //迭代后的值
        int i=0;
        double error=1.0;                       //误差
        double Precision = Math.pow(10,-4);     //精度
        double max;                             //两次迭代相减后的行范数
        double[] vector = new double[3];                          //两次迭代相减后的向量
        do {
            i++;
//          迭代计算x
            x1_i = (-0.4*x2)-(0.2*x3)-2.4;
            x2_i = (0.25*x1_i)-(0.5*x3)+5;
            x3_i = (-0.2*x1_i)+(0.3*x2_i)+0.3;

//            将x_k+1和x_k进行相减
            vector[0]= Math.abs(x1_i-x1);
            vector[1]= Math.abs(x2_i-x2);
            vector[2]= Math.abs(x3_i-x3);
//            得到行范数
            max = Math.abs(vector[0]);
            for (int j=0; j<vector.length;j++){
                if (max<Math.abs(vector[j])){
                    max = Math.abs(vector[j]);
                }
            }
            error = max;
//            更新x的值
            x1 = x1_i;
            x2 = x2_i;
            x3 = x3_i;
            System.out.print("第"+i+"次迭代:");
            if (error>Precision){
                System.out.printf("x1=%-4f     x2=%-4f     x3=%-4f     error=%-4f>%f",x1, x2, x3, error,Precision);
            }else {
                System.out.printf("x1=%-4f     x2=%-4f     x3=%-4f     error=%-4f<%f",x1, x2, x3, error,Precision);
            }
            System.out.println();
        }while (error>Precision);
//        得到最终结果
        System.out.println("符合精度的值为:");
        System.out.println("x1="+x1+";  x2="+x2+";    x3="+x3);
    }
}

结果:
在这里插入图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值