java实现 Jacobi(雅可比)迭代求解方程组

问题描述

主要是动态数组那里我不明白怎么搞定问题多多找到了一个C++编写的程序本人想用java来实现希望有高手能帮我讲代码写出来或者指点一下感激不尽了!本人刚刚接触Java还不怎么熟悉主要是以下代码不知道用java如何实现:(主要是二维数组的动态声明以及添加和遍历)voidJacobi(vector<vector<double>>A,vector<double>B,intn){vector<double>X(n,0);vector<double>Y(n,0);vector<double>D(n,0);intk=0;//记录循环次数do{X=Y;for(inti=0;i<n;i++){doubletem=0;for(intj=0;j<n;j++){if(i!=j)tem+=A[i][j]*X[j];}Y[i]=(B[i]-tem)/A[i][i];cout<<left<<setw(8)<<Y[i]<<"";}cout<<endl;k++;if(k>100){cout<<"迭代失败!(可能是函数不收敛)"<<endl;return;}for(inta=0;a<n;a++){D[a]=X[a]-Y[a];}}while(MaxOfList(D)>0.00001||MaxOfList(D)<-0.00001);return;}//以下是C++完整代码希望有大神帮我改成java的感激不尽!!!!#include<iostream>#include<iomanip>#include<string>#include<vector>usingnamespacestd;//函数求数组中的最大值doubleMaxOfList(vector<double>x){doublemax=x[0];intn=x.size();for(inti=0;i<n;i++)if(x[i]>max)max=x[i];returnmax;}//雅可比迭代公式voidJacobi(vector<vector<double>>A,vector<double>B,intn){vector<double>X(n,0);vector<double>Y(n,0);vector<double>D(n,0);intk=0;//记录循环次数do{X=Y;for(inti=0;i<n;i++){doubletem=0;for(intj=0;j<n;j++){if(i!=j)tem+=A[i][j]*X[j];}Y[i]=(B[i]-tem)/A[i][i];cout<<left<<setw(8)<<Y[i]<<"";}cout<<endl;k++;if(k>100){cout<<"迭代失败!(可能是函数不收敛)"<<endl;return;}for(inta=0;a<n;a++){D[a]=X[a]-Y[a];}}while(MaxOfList(D)>0.00001||MaxOfList(D)<-0.00001);return;}intmain(){intn;cout<<"请输入方程组未知数的个数n:";cin>>n;cout<<endl;vector<vector<double>>A(n,vector<double>(n,0));vector<double>B(n,0);cout<<"请输入方程组的系数矩阵:"<<endl;for(inti=0;i<n;i++){for(intj=0;j<n;j++){cin>>A[i][j];}}cout<<endl;cout<<"请输入方程组的值向量:"<<endl;for(intk=0;k<n;k++){cin>>B[k];}cout<<endl;cout<<"您输入的方程组为:"<<endl;for(inta=0;a<n;a++){for(intb=0;b<n;b++){cout<<A[a][b]<<"";}cout<<""<<B[a]<<endl;}cout<<endl;cout<<"由雅可比迭代公式求的方程组的解为:"<<endl;Jacobi(A,B,n);return0;}

解决方案

时间: 2024-10-26 14:41:58

java实现 Jacobi(雅可比)迭代求解方程组的相关文章

java.lang.IllegalArgumentException 错误异常求解

问题描述 java.lang.IllegalArgumentException 错误异常求解 上面是代码的日志 求大神指点 解决方案 有一个方法传参或者是什么,参数类型错了 看看提示在哪一行 解决方案二: 解决spring的java.lang.IllegalArgumentException异常.hibernate中java.lang.IllegalArgumentException异常可能的原因

代码-Java数值计算问题,新手求解。

问题描述 Java数值计算问题,新手求解. package chapter5; import java.math.BigDecimal; class Rectangle { private double length; private double width; public Rectangle(double length, double width) { this.length = length; this.width = width; } double findArea() { return

java里有反向迭代标签

问题描述 像一般的标签都是从0开始迭代,一直迭代到最后一位.有没有一种可以从最后一位开始迭代然后一直迭代到0的标签啊? 问题补充:bestchenwu 写道 解决方案 有ListIterator就是iterator的一种实现比如: List list=new ArrayList(); list.add(1); list.add(2); list.add(3); ListIterator it=list.ListIterator (list.size()); while(it.hasPreviou

java源码-这个题目求解,没太看懂????

问题描述 这个题目求解,没太看懂???? ??求解啊,这个求源码,没大看懂??大神?????????????????????????????????? 解决方案 Scanner reader=new Scanner(System.in); String[] lines = scanner.nextLine().split("|"); for (int i = 0; i < lines.length(); i++) { String[] data = lines[i].split(

Java对象奇异现象,求解

问题描述 public static void main(String[] args) { Integer count = new Integer(0); new SendThread(count).start(); new SendThread(count).start(); new SendThread(count).start(); new SendThread(count).start(); new SendThread(count).start();}public class Send

多表 多条件 且 条件数目不明 java拼接sql问题,求解!

问题描述 需要完成的功能如下表结构大概如下目前完成的代码多表多条件且条件数目不明确,所以在java代码中有各种判断目前搞定单条件的,那么2个条件3个条件4个条件算下来的话会有很多条件组合的模式出现,如果向以上一个个if去写代码会很臃肿,很奇葩....求各位遇到类似情况的大爷...指点迷津..求好的程序方案! 解决方案 解决方案二:个人建议:你的sql里面还是把所有参数写全.然后再程序判断里面判断传入参数是否为空,不为空就填写参数进去,否则不填就是.或者将可能出现的所有字段用一个对象封装起来,然后

JAVA 定时任务报错,求解

问题描述 错误内容:[ERROR]2014-12-3122:02:00,010(19797)-->[org.springframework.scheduling.quartz.SchedulerFactoryBean#0_QuartzSchedulerThread]org.quartz.core.ErrorLogger.schedulerError(QuartzScheduler.java:2015):Anerroroccuredinstantiatingjobtobeexecuted.job=

关于java单例模式(Singleton) 求解 -

问题描述 在我理解,单例就是在整个jvm中只存在一个类实例.但是不知道在什么时候,在什么地方使用单例.所以举个例子,帮忙看下我的理解对不对.jsp页面 userName=1 passWord=2 (用户1提交)jsp页面 userName=3 passWord=4 (用户2提交)两人同时新增的话,进入action,如果实体类(Model)是单例的话,就会出现用户甲和用户乙的数据混乱对吗? 问题补充:问题1:在我理解,单例就是在整个jvm中只存在一个类实例. 理解对不对问题2:在什么时候,在什么地

matlab实现牛顿迭代法求解非线性方程组

已知非线性方程组如下 3*x1-cos(x2*x3)-1/2=0 x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0 exp(-x1*x2)+20*x3+(10*pi-3)/3=0 求解要求精度达到0.00001 ---------------------------------------------------------分--割--线--------------------------------------------------------- 首先建立函数fun 储存方