java实现施密特正交化

java实现施密特正交
今天线代课刚学了这个
施密特正交化
然后今天⽼师布置的作业就是这个
我这⼀看,这计算量,就我这计算⽔平,难免会有算错的
所以就⾃⼰写了个程序帮我计算,啊不对,是帮我验证我算的对不对
程序是⽤java写的(需要装了jdk才能运⾏)
只做了正交,单位化暂时还没做,如果以后做出来的话我会再上传的
想⽤可以直接把代码复制粘贴过去就能⽤了,如果想看怎么实现的话,我觉得我写的注释应该能看得懂,哈哈哈,如果有什么疑问的话,可以在评论区留⾔哦
那废话不多说
代码如下:
/*
本篇代码的命名极其的不规范(请勿参考)
英语不好,⼜懒得去百度翻译,所以好多命名就都是拼⾳,哈哈哈
*/
import java.util.Scanner;
/**
* <p><b>类名:</b>{@code Test}
* <p><b>功能:</b><br>⽤来测试和运⾏
*
* @author 60rzvvbj
* @data 2020/5/25
*/
class Test {
public static void main(String[] args){
Shimitezhengjiao shimitezhengjiao =new Shimitezhengjiao();
<();
}
}
/**
* <p><b>类名:</b>{@code Shimitezhengjiao}
* <p><b>功能:</b><br>将向量组施密特正交化
* <p><b>⽅法:</b>
* <br>{@link #Shimitezhengjiao()}⽆参构造
* <br>{@link #on()}启动
*
* @author 60rzvvbj
* @data 2020/5/25
*/
public class Shimitezhengjiao {
Shimitezhengjiao(){
/
/啥也没写,哈哈哈
}
/**
/**
* <p><b>⽅法名:</b>{@code on}
* <p><b>功能:</b><br>启动
*
* @author 60rzvvbj
* @data 2020/5/25
*/
public void on(){
Scanner sca =new Scanner(System.in);
//先打印⼏句废话
System.out.println("欢迎使⽤!");
System.out.println("本程序可以利⽤施密特正交化⽅法,将向量组化为正交的向量组(单位化还在开发中)");
System.out.println("作者: 60rzvvbj\n");
while(true){
//提⽰语
System.out.println("请输⼊向量组中向量组的个数:");
int n = Int();
System.out.println("请输⼊向量组:");
//创建两个组向量,阿尔法和贝塔
XiangLiang[] aErfa =new XiangLiang[n];
XiangLiang[] beiTa =new XiangLiang[n];
//输⼊值
for(int i =0; i < n; i++){
aisString t = Line();
aErfa[i]=new XiangLiang(t);
beiTa[i]=new XiangLiang(t);
}
//打印向量组阿尔法
System.out.println("输⼊的向量组为:");
for(int i =0; i < n; i++){
System.out.println("a"+(i +1)+":\t"+ aErfa[i]);
}
//⽤施密特正交计算贝塔
for(int i =1; i < n; i++){
for(int j =0; j < i; j++){
beiTa[i]= beiTa[i].jian(beiTa[j].shuCheng((aErfa[i].shuLiangJi(beiTa[j])).chu(beiTa[j].shuLiangJi(beiTa[j]))));
}
}
//打印向量组贝塔
System.out.println("\n正交向量组为:");
for(int i =0; i < n; i++){
System.out.println("b"+(i +1)+":\t"+ beiTa[i]);
}
//是否继续
System.out.println("\n按1继续,其它键退出");
String t = Line();
if(!"1".equals(t)){
break;
}
}
//释放资源
sca.close();
//卖⼀波萌
System.out.println("谢谢使⽤!\nヾ(≧∪≦*)ノ〃");
}
}
/**
* <p><b>类名:</b>{@code Fenshi}
* <p><b>功能:</b><br>分式
* <p><b>⽅法:</b>
* <br>{@link #Fenshi(int)}构造⽅法(int)
* <br>{@link #Fenshi(Fenshi)}构造⽅法(Fenshi)
* <br>{@link #Fenshi(String)}构造⽅法(String)
福泽谕吉* <br>{@link #getFenzi()}获取分⼦
* <br>{@link #getFenmu()}获取分母
* <br>{@link #toString()}重写的toString⽅法weipu
* <br>{@link #jia(Fenshi)}加法
* <br>{@link #jia(Fenshi)}加法
* <br>{@link #jian(Fenshi)}减法
* <br>{@link #cheng(Fenshi)}乘法
* <br>{@link #chu(Fenshi)}除法,除数为0会抛异常
*
* @author 60rzvvbj
* @data 2020/5/25
*/
class Fenshi {
/**
* 分⼦
*/
private int fenzi;
/**
* 分母
*/
private int fenmu;
/
**
* 正负号(true为正,false为负)
*/
private boolean zhengfu =true;
/**
* <p><b>⽅法名:</b>{@code Fenshi}
* <p><b>功能:</b><br>⽤字符串创建⼀个分式,字符串格式为(-)+分⼦+/+分母    *
* @param str 满⾜分式格式的字符串
* @author 60rzvvbj
* @data 2020/5/25
*/
mc小霞
public Fenshi(String str){
//⽤'/'分割字符串
String[] zm = str.split("/");
//分割后第⼀个转化成分⼦
fenzi = Integer.parseInt(zm[0]);
//调整正负号
if(fenzi <0){
中国美容化妆品论坛fenzi =-fenzi;
zhengfu =false;
}
//如果有第⼆个,则把第⼆个转化成分母,如果没有,则分母为1
fenmu = zm.length ==2? Integer.parseInt(zm[1]):1;
//调整正负号
if(fenmu <0){
fenmu =-fenmu;
zhengfu =!zhengfu;
}
//约分
yueFen();
}
/**
* <p><b>⽅法名:</b>{@code Fenshi}
* <p><b>功能:</b><br>⽤⼀个分式创建⼀个新的分式
*
* @param f 分式
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi(Fenshi f){
//将分⼦和分母赋值
fenzi = f.getFenzi();
fenmu = f.getFenmu();
//调整正负号
if(fenzi <0){
fenzi =-fenzi;
zhengfu =false;
}
}
/**
* <p><b>⽅法名:</b>{@code Fenshi}
* <p><b>功能:</b><br>将⼀个整数转化成分式
*
* @param x 整数
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi(int x){
//调整正负号,分⼦赋值分母为1
if(x <0){
fenzi =-x;
zhengfu =false;
}else{
fenzi = x;
}
fenmu =1;
}
/**
* <p><b>⽅法名:</b>{@code yueFen}
* <p><b>功能:</b><br>将分式约分
*
* @author 60rzvvbj
* @data 2020/5/25
*/
private void yueFen(){
//如果分⼦为0的话,直接把分母变成1
if(fenzi ==0){
fenmu =1;
return;
}
//当分⼦分母都不是1的时候才约分,否则没必要约
if(!(fenzi ==1|| fenmu ==1)){
int t = d(fenzi, fenmu);
fenzi /= t;
fenmu /= t;
}
}
/**
* <p><b>⽅法名:</b>{@code toString}
* <p><b>功能:</b><br>将分式转化成字符串
*
* @author 60rzvvbj
* @data 2020/5/25
*/
@Override
public String toString(){
return(zhengfu ?"":"-")+(fenmu ==1? fenzi : fenzi +"/"+ fenmu); }
/**
* <p><b>⽅法名:</b>{@code getFenzi}
* <p><b>功能:</b><br>获取分⼦
*
* @author 60rzvvbj
* @data 2020/5/25
*/
public int getFenzi(){
return zhengfu ? fenzi :-fenzi;
}
/**
* <p><b>⽅法名:</b>{@code getFenmu}
* <p><b>功能:</b><br>获取分母
*
* @author 60rzvvbj
* @data 2020/5/25
* @data 2020/5/25
*/
public int getFenmu(){
return fenmu;
}
/**
* <p><b>⽅法名:</b>{@code jia}
* <p><b>功能:</b><br>返回this与x的和
*
* @param x 加数
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi jia(Fenshi x){
//分⼦直接交叉相成在相加,分母是原来两个数的分母相乘
return new Fenshi((Fenzi()* x.getFenmu()+ x.getFenzi()* fenmu)+"/"+(fenmu * x.getFenmu())); }
/**
* <p><b>⽅法名:</b>{@code jian}
* <p><b>功能:</b><br>返回this与x的差
*
* @param x 减数
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi jian(Fenshi x){
//分⼦直接交叉相成在相减,分母是原来两个数的分母相乘
return new Fenshi((Fenzi()* x.getFenmu()- fenmu * x.getFenzi())+"/"+(fenmu * x.getFenmu())); }
/**
* <p><b>⽅法名:</b>{@code cheng}
* <p><b>功能:</b><br>返回this与x的积
*
* @param x 乘数
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi cheng(Fenshi x){
//分⼦相乘,分母相乘
return new Fenshi((Fenzi()* x.getFenzi())+"/"+(fenmu * x.getFenmu()));
}
/**
* <p><b>⽅法名:</b>{@code jia}
* <p><b>功能:</b><br>返回this与x的商,除数为0会抛出异常
*
* @param x 除数
* @author 60rzvvbj
* @data 2020/5/25
*/
public Fenshi chu(Fenshi x){
//如果除数为0则抛出异常
Fenzi()==0){
throw new ArithmeticException("除数不能为0");
}
/
/除就是乘倒数
return new Fenshi((Fenzi()* x.getFenmu())+"/"+(fenmu * x.getFenzi()));
}
}
/**
* <p><b>类名:</b>{@code XiangLiang}
木酢液* <p><b>功能:</b><br>向量类,⾥⾯的坐标是分式
* <p><b>⽅法:</b>
* <br>{@link #XiangLiang(String)}构造⽅法(String)
* <br>{@link #XiangLiang(Fenshi[])}构造⽅法(Fenshi[])
* <br>{@link #getFenshi(int)}获取分式数组中某个分式
* <br>{@link #getFenshis()}获取分式数组
* <br>{@link #toString()}重写的toString⽅法

本文发布于:2024-09-20 19:36:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/437376.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:向量   分式   分母   正交   除数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议