习题3设用正则化方法求对应的LS问题的解[解]由定理314.doc

习题3设用正则化方法求对应的LS问题的解[解]由定理314.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习题3设用正则化方法求对应的LS问题的解[解]由定理314

习题3 1.设 用正则化方法求对应的LS问题的解. [解]由定理3.1.4可知, LS问题的解就是下列正则化方程组解: 即 解得: 2.设 求对应的LS问题的全部解. [解]由定理3.1.4可知, LS问题的解就是下列正则化方程组解: 经初等行变换得其同解方程组 从而 即 , 其中 设,求一个Householder变换和一个正数使得 [解] 由于2范数具有正交不变性, 故. 于是 于是,令 那么,可以验证满足该题的要求. 4.确定和使得 [解]由2范数具有正交不变性,故 于是 从而 5.假定是一个二维复向量,给出一种算法计算一个如下形式的酉矩阵 使得的第二个分量为零. [解]对于复向量的2范数定义如下: 显然,在复数空间中,2范数仍然保持着正交不变性。即对酉矩阵Q有 根据题意,不妨设,从而 注意到 于是 由,从而 不妨设,即 , 又因,所以 . 6.假定和是中的两个单位向量,给出一种使用Givens变换的算法,计算一个正交阵,使得 [解] 首先考虑对指定的一个二维非零向量和一个实数,如何构造Givens变换 使。注意2范数的正交不变性,则 (这里我们假定了,稍后对此加以处理) 那么,G应满足 即 注意,则矩阵 于是 这样,我们便可考虑从的前两个分量开始,施以Givens变换,便其第一个分量变换为. 然后对施以Givens变换,使其首分量变换为;这样一直继续次变换,最后使得变换为 几点说明: ? 为使算法能一步步正常进行,需要首先对单位向量用一组Givens变换进行规范化处理,使其成为标准单位向量.这样在接下来的步的Givens变换中就能保证. ? 在规范化后,对其实施正交变换的每一步中,可以通过逐次计算向量的范数,当其等于1时,即可结束算法。因为此时,和的剩余分量均以为零。 算法总结: 算法1(用Givens变换求正交矩阵使单位向量满足:) void standard(double **g,double *x,int n) { ??? int i,j; ??? for(i=0;in;i++) ??????? for(j=0;jn;j++) ??????????? if(j==i) g[i][j]=1; else g[i][j]=0; ??? double c,s; ??? double a,b,t; ??? for(i=n-2;i=0;i--) ??? { ??????? if(x[i+1]==0) ??????牋牋?continue; 牋牋牋?else if(fabs(x[i+1])fabs(x[i])) 牋牋牋?{ 牋牋牋牋牋?t=x[i]/x[i+1]; 牋牋牋牋牋?s=1.0/sqrt(1.0+t*t); 牋牋牋牋牋?c=s*t; 牋牋牋?} 牋牋牋?else 牋牋牋?{ 牋牋牋牋牋?t=x[i+1]/x[i]; 牋牋牋牋牋?c=1.0/sqrt(1.0+t*t); 牋牋牋牋牋?s=c*t; 牋牋牋?} 牋牋牋?x[i]=c*x[i]+s*x[i+1]; 牋牋牋?x[i+1]=0; 牋牋牋?for(j=0;jn;j++) 牋牋牋?{ 牋牋牋牋牋?a=g[i][j];b=g[i+1][j]; 牋牋牋牋牋?g[i][j]=c*a+s*b; 牋牋牋牋牋?g[i+1][j]=c*b-s*a; 牋牋牋?} 牋?} } 算法2(计算Givens变换,,其中已知) void GetCS(double *g,double *x,double y) { 牋?double a; 牋?a=sqrt(x[0]*x[0]+x[1]*x[1]-y*y); 牋?if(a==0) 牋?{ 牋牋牋?g[0]=1; 牋牋牋?g[1]=0; 牋?} 牋?else 牋?{ 牋牋牋?g[0]=(x[0]*y+a*x[1])/(x[0]*x[0]+x[1]*x[1]); 牋牋牋?g[1]=(x[1]*y-a*x[0])/(x[0] ??????? if(x[i+1]==0) ?????*x[0]+x[1]*x[1]); 牋牋牋?x[0]=y; 牋牋牋?x[1]=a; 牋?} } 算法3(使用Givens变换,求正交矩阵G使单位向量满足:) void XtoY(double **g,double *x,double *y,int n) { 牋?standard(g,x,n); 牋?double c,s,t; 牋?double cs[2]; 牋?t=0.0; 牋?for(int i=0;in-1;i++) 牋?{ 牋牋牋?GetCS(cs,

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档