Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import Jama.Matrix;
- import java.util.Random;
- public class Main {
- public static void main(String[] args) {
- Random rand=new Random();
- int m=4,n=4;
- Matrix A=new Matrix(m,n);
- Matrix b= new Matrix(n,1);
- Matrix x= new Matrix(n,1);
- Matrix x1= new Matrix(n,1);
- Matrix D=new Matrix(m,n);
- Matrix R=new Matrix(m,n);
- Matrix I=new Matrix(m,n);
- Matrix D1=new Matrix(m,n);
- for(int i=0;i<m;i++){
- for(int j=0;j<n;j++){
- A.set(i,j,rand.nextDouble());
- if(i==j)A.set(i,j,A.get(i,j)+10);
- }
- }
- for(int j=0;j<n;j++) {
- b.set(j, 0, rand.nextDouble());
- x.set(j,0,0);
- x1.set(j,0,1);
- }
- for(int i=0;i<m;i++){
- for(int j=0;j<n;j++){
- if(i==j){
- D.set(i,j,A.get(i,j));
- R.set(i,j,0);
- I.set(i,j,1);
- }else {
- R.set(i,j,A.get(i,j));
- D.set(i,j,0);
- I.set(i,j,0);
- }
- }
- }
- for(int i=0;i<m;i++){
- for(int j=0;j<n;j++){
- if(i==j){
- D1.set(i,j,1/D.get(i,j));
- }else {
- D1.set(i,j,D.get(i,j));
- }
- }
- }
- double normInf=0,norm1=0;
- norm1=I.minus(D1.times(A)).norm1();
- normInf=I.minus(D1.times(A)).normInf();
- for (int i=0;i<1000;i++){
- if(norm1>1||normInf>1){
- System.out.println(i);
- break;
- }
- if(x1.minus(x).normF()>0.000001){
- x1=(I.minus(D1.times(A))).times(x).plus(D1.times(b));
- x=x1;
- break;
- }
- }
- x.print(2,4);
- A.solve(b).print(2,4);
- System.out.println(norm1+" "+normInf);
- A.print(2,4);
- D.print(2,4);
- D1.print(2,4);
- R.print(2,4);
- I.print(2,4);
- b.print(2,4);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement