




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java解线性方程组方法一:高斯消去法importjava.util.Scanner;publicclassGauss{ /** *@列主元高斯消去法 */ staticdoublea[][]; staticdoubleb[]; staticdoublex[]; staticintn; staticintn2;//记录换行的次数publicstaticvoidElimination(){//消元 for(intk=1;k<=n-1;k++) { Wrap(k); for(inti=k+1;i<=n;i++) { doublel=a[i][k]/a[k][k]; a[i][k]=0.0; for(intj=k+1;j<=n;j++) a[i][j]=a[i][j]-l*a[k][j]; b[i]=b[i]-l*b[k]; } System.out.println("第"+k+"次消元后:"); PrintA(); } }publicstaticvoidBack()//回代{ x[n]=b[n]/a[n][n]; for(inti=n-1;i>=1;i--) x[i]=(b[i]-jisuan(i))/a[i][i];}publicstaticdoublejisuan(inti){ doublehe=0.0; for(intj=i+1;j<=n;j++) he=he+x[j]*a[i][j]; returnhe;}publicstaticvoidWrap(intk){//换行 doublemax=Math.abs(a[k][k]); intn1=k;//记住要交换的行 for(inti=k+1;i<=n;i++)//找到要交换的行 { if(Math.abs(a[i][k])>max){ n1=i; max=Math.abs(a[i][k]); } } if(n1!=k) { n2++; System.out.println("当k="+k+"时,要交换的行是:"+k+"和"+n1); for(intj=k;j<=n;j++)//交换a的行 { doublex1; x1=a[k][j]; a[k][j]=a[n1][j]; a[n1][j]=x1; } doubleb1;//交换b的行 b1=b[k]; b[k]=b[n1]; b[n1]=b1; System.out.println("交换后:"); PrintA(); }}publicstaticvoidDeterminant(){//求行列式 doubleDM=1.0; for(inti=1;i<=n;i++) { doublea2=a[i][i]; DM=DM*a2; } doublen3=(double)n2; DM=DM*Math.pow(-1.0,n3); System.out.println("该方程组的系数行列式:detA="+DM);}publicstaticvoidPrintA(){//输出增广矩阵 System.out.println("增广矩阵为:"); for(inti=1;i<=n;i++) { for(intj=1;j<=n;j++) System.out.print(a[i][j]+""); System.out.print(b[i]+""); System.out.print("\n"); }}publicstaticvoidPrint(){//输出方程的根 System.out.println("方程组的根为:"); for(inti=1;i<=n;i++) System.out.println("x"+i+"="+x[i]);} publicstaticvoidmain(String[]args){ Scanneras=newScanner(System.in);System.out.println("输入方程组的元数:");n=as.nextInt();a=newdouble[n+1][n+1];b=newdouble[n+1];x=newdouble[n+1];System.out.println("输入方程组的系数矩阵a:");for(inti=1;i<=n;i++) for(intj=1;j<=n;j++) a[i][j]=as.nextDouble();System.out.println("输入方程组矩阵b:");for(inti=1;i<=n;i++) b[i]=as.nextDouble();Elimination();Back();Print();Determinant(); }}方法二:杜里特尔法求解线性方程组importjava.util.Scanner;publicclassDuri_Ritter{ /** *@杜里特尔法求解线性方程组 */ staticdoublea[][]; staticdoubleb[]; staticdoublex[]; staticintn; publicstaticvoidLU(){//将系数矩阵进行LU分解 for(intj=2;j<=n;j++) a[j][1]=a[j][1]/a[1][1]; for(intr=2;r<=n;r++) { for(inti=r;i<=n;i++) a[r][i]=a[r][i]-jisuan(r,i); for(inti=r+1;i<=n;i++) a[i][r]=(a[i][r]-jisuan1(r,i))/a[r][r]; } PrintA(); } publicstaticvoidJie_xy(){ x[1]=b[1]; for(inti=2;i<=n;i++) x[i]=b[i]-jisuan2(i); PrintX(0); x[n]=x[n]/a[n][n]; for(inti=n-1;i>=1;i--) x[i]=(x[i]-jisuan3(i))/a[i][i]; PrintX(1); } publicstaticvoidHL(){//计算系数矩阵A的行列式 doublecj=1.0; for(inti=1;i<=n;i++) cj=cj*a[i][i]; System.out.println("A的行列式:|A|="+cj); } publicstaticdoublejisuan(intr,inti){ doubleSum=0.0; for(intk=1;k<=r-1;k++) Sum=Sum+a[r][k]*a[k][i]; returnSum; } publicstaticdoublejisuan1(intr,inti){ doubleSum=0.0; for(intk=1;k<=r-1;k++) Sum=Sum+a[i][k]*a[k][r]; returnSum; } publicstaticdoublejisuan2(inti){ doubleSum=0.0; for(intk=1;k<=i-1;k++) Sum=Sum+a[i][k]*x[k]; returnSum; } publicstaticdoublejisuan3(inti){ doubleSum=0.0; for(intk=i+1;k<=n;k++) Sum=Sum+a[i][k]*x[k]; returnSum; } publicstaticvoidPrintA(){//输出矩阵A System.out.println("分解后的矩阵A:"); for(inti=1;i<=n;i++) { for(intj=1;j<=n;j++) System.out.print(a[i][j]+""); System.out.print("\n"); } } publicstaticvoidPrintX(intx1){//输出数组X if(x1==0)System.out.println("方程组Ly=b的解为:"); elseSystem.out.println("方程组Ux=y的解为:"); for(inti=1;i<=n;i++) { if(x1==0) System.out.print("y"+i+"="+x[i]+""); elseSystem.out.print("x"+i+"="+x[i]+""); } System.out.print("\n"); } publicstaticvoidmain(String[]args){ Scanneras=newScanner(System.in);System.out.println("输入方程组的元数:");n=as.nextInt();a=newdouble[n+1][n+1];b=newdouble[n+1];x=newdouble[n+1];System.out.println("输入方程组的系数矩阵a:");for(inti=1;i<=n;i++) for(intj=1;j<=n;j++) a[i][j]=as.nextDouble();System.out.println("输入方程组矩阵b:");for(inti=1;i<=n;i++) b[i]=as.nextDouble();LU();Jie_xy();HL(); }方法三:高斯-赛德尔迭代法求线性方程组packagecom.springworks.db4o.test;importjava.util.Scanner;publicclassGauss_Seidel{ /** *@高斯-赛德尔迭代法求线性方程组 */ staticdoublea[][]; staticdoubleb[]; staticdoublex[]; staticdoublex2[]; staticintn; staticdoublee; publicstaticvoidIT(){ intk=0; System.out.println("kx1x2x3"); System.out.print(k+""); for(inti=1;i<=n;i++) { System.out.print(x[i]+""); } System.out.println("\n"); do{ k++; for(inti=1;i<=n;i++) x2[i]=x[i];for(inti=1;i<=n;i++){ x[i]=f_x(i);}System.out.print(k+""); for(inti=1;i<=n;i++) { System.out.print(x[i]+""); } System.out.println("\n"); }while(jisuan()>=e); } publicstaticdoublejisuan(){ doublemax=0.0; for(inti=1;i<=n;i++) { doublex3=Math.abs(x[i]-x2[i]); if(x3>max)max=x3; } returnmax; } publicstaticdoublef_x(inti){//算迭代式的值 doublex1=0.0; for(intj=1;j<=n;j++) if(j!=i)x1=x1+a[i][j]*x[j]; doublex2=(b[i]-x1)/a[i][i]; returnx2; } publicstaticvoidPrint_Jie()//输出方程组的解 { System.out.print("方程组的解为:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业软件外包合同
- 2025建筑室内设计合同协议书范本
- 2025年北京房屋买卖合同范本
- 2025合同法深度解析:无固定期限合同条款详解
- 苏州工业园区翰林小学等苏教版三年级数学下册单元试卷15份
- 二零二五版地质勘察技术服务合同
- 二零二五二手房公积金贷款买卖合同书
- 水田承包使用权转让合同书二零二五年
- 二零二五海外工程项目投标策略及合同管理
- 二零二五家庭居室装饰装修合同书
- 宁夏低空经济发展现状与策略实施路径探索
- 2024年西安市曲江第三中学行政人员及教师招聘考试真题
- 《化学键的断裂与形成》课件
- 2025年江苏泰州市泰兴经济开发区国有企业招聘笔试参考题库含答案解析
- 第十八届“地球小博士”全国地理知识科普竞赛题库(附答案)
- JJF 1338-2012相控阵超声探伤仪校准规范
- 二月份循证护理查房课件
- JJF(湘) 09-2018 纯水-超纯水系统监测仪表(电导率)计量校准规范-(高清现行)
- 大一下【世界古代史】期末复习资料
- 尾矿库筑坝施工组织方案
- 中药斗谱排序
评论
0/150
提交评论