今天线代课刚学了这个
施密特正交化
然后今天老师布置的作业就是这个
我这一看,这计算量,就我这计算水平,难免会有算错的
所以就自己写了个程序帮我计算,啊不对,是帮我验证我算的对不对
程序是用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();
shimitezhengjiao.on();
}
}
/**
* <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 = sca.nextInt();
sca.nextLine();
System.out.println("请输入向量组:");
//创建两个组向量,阿尔法和贝塔
XiangLiang[] aErfa = new XiangLiang[n];
XiangLiang[] beiTa = new XiangLiang[n];
//输入值
for (int i = 0; i < n; i++) {
String t = sca.nextLine();
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(