楼主: 此情可待402
1249 5

急求,用sas编程求解QR 分解,(不使用sas自带的函数) [推广有奖]

  • 0关注
  • 0粉丝

本科生

26%

还不是VIP/贵宾

-

威望
0
论坛币
370 个
通用积分
0.9065
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1660 点
帖子
42
精华
0
在线时间
105 小时
注册时间
2015-1-8
最后登录
2024-4-24

5论坛币
矩阵a
a={1 0.2 0.3,
0.2 5 0.1,
0.3 0.1 6}

最佳答案

learsaas 查看完整内容

这个是计算机精度问题,(比如:你不可能让计算机显示根号3)吧实际上已经是上三角矩阵了,下三角部分无穷小了,实际上就是0了。如果你看不顺眼下三角部分的花,就把下三角部分变为0好了,方法如下:在print Q;语句上面加一段代码:
关键词:SAS编程 不使用
沙发
learsaas 发表于 2016-4-22 18:31:03 |只看作者 |坛友微信交流群
这个是计算机精度问题,(比如:你不可能让计算机显示根号3)吧实际上已经是上三角矩阵了,下三角部分无穷小了,实际上就是0了。如果你看不顺眼下三角部分的花,就把下三角部分变为0好了,方法如下:在print Q;语句上面加一段代码:
  1.                 do i=1 to nrow(R);
  2.                         do j=1 to i-1;
  3.                                 R[i,j]=0;
  4.                         end;
  5.                 end;
复制代码

使用道具

藤椅
learsaas 发表于 2016-4-24 11:27:42 |只看作者 |坛友微信交流群
  1. proc iml;
  2.         A={1 0.2 0.3,0.2 5 0.1,0.3 0.1 6};
  3.         Q=j(nrow(A),ncol(A),.);
  4.         do i=1 to ncol(A);
  5.                 T=j(ncol(A),1,0);
  6.                 do j=1 to i-1;
  7.                         T=T+(sum(A[,i]#Q[,j])/Q[##,j])#Q[,j];
  8.                 end;
  9.                 Q[,i]=A[,i]-T;
  10.                 Q[,i]=Q[,i]/sqrt(Q[##,i]);
  11.         end;
  12.         R=Q`*A;

  13.         print Q;
  14.         print R;
  15. quit;
复制代码

使用道具

板凳
此情可待402 发表于 2016-4-26 10:33:15 |只看作者 |坛友微信交流群
learsaas 发表于 2016-4-24 11:27
请问答主,用您的代码进行QR分解,得到的R矩阵不是具有正对角元的上三角矩阵啊?

使用道具

报纸
此情可待402 发表于 2016-4-26 10:34:24 |只看作者 |坛友微信交流群
这是根据代码得到的矩阵

QQ截图20160426103008.png (7.18 KB)

这是得到的Q,R矩阵

这是得到的Q,R矩阵

使用道具

learsaas 发表于 2016-4-22 18:31
这个是计算机精度问题,(比如:你不可能让计算机显示根号3)吧实际上已经是上三角矩阵了,下三角部分无穷小了 ...
太感谢了,答主666666

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 14:43