没有合适的资源?快使用搜索试试~ 我知道了~
数值算法求矩阵的最大特征值的幂法.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 106 浏览量
2022-10-26
22:20:41
上传
评论
收藏 281KB PDF 举报
温馨提示
试读
14页
。。。
资源推荐
资源详情
资源评论
[数值算法]求矩阵的最大特征值的幂法.
对于工程计算而言,矩阵的特征值和特征向量都
是相当重要和常见的数据,这里给出的幂法是一种常
见的求解方法,用的是迭代的思想。
符号说明:
1A 为待求的矩阵,
2Uk,Vk 为迭代用的列向量。
3 最后的最大特征值 maxLamda 由最后一次的
max(Uk)-----求 Uk 中的绝对值最大的元素的绝对值.
所决定。
而 maxLamda 所对应的特征向量由最后一次迭代的
Vk 所决定.
主要的想法就是先选一个不为 0 的初始向量
U0!=0,然后按下面的式子迭代。
U0=V0!=0
Do
{
Uk=AVk-1
Vk=Uk/max(Uk)
}while(abs(max(Uk)-max(Uk-1))>=e)好了,就这
样,更多的细节请去参考相关的数值算法书籍.
在贴出程序之前,先对一部分我新增加的实用函
数进行说明:
如:
void twoDArrMemApply(Type*** inArr,int
rowNum,int colNum)
{
int i=0;/*iterator vaule*/
(*inArr)=(Type**)malloc(sizeof(Type*)*r
owNum);
(*inArr)[i]=(Type*)malloc(sizeof(Type)*colNum
);
assertF(*inArr!=NULL,"in
for(i=0;i<rowNum;i++)
twoDArrMemApply,inArr at last is null\n");
}
void twoDArrMemFree(Type*** inArr,int
rowNum)
{
int i=0;/*iterator value*/
assertF((*inArr)!=NULL,"in 2d arr mem
free,in arr is null\n");
for(i=0;i<rowNum;i++)
free((*inArr)[i]);
}
free((*inArr));
这两个函数的作用相信大家一看就明白,是实现
二维指针的申请内存和释放内存的,这样,以后再主
程序里的工作量就会小多了。
还有,我在写一些程序段的时候对待外部传进的
指针采用如下处理手段(纯 C 条件下)
除非这个函数有特殊的作用,如申请内存,或要
读入外部文本内容到二维指针等。 其余的情况,一
律不对外部指针进行任何申请或释放内存的处理。
对于要保护数据的外部传入指针,则在函数内部
再做一个局部指针,在函数结尾释放.
对局部指针的操作,也仅限于赋值,而绝对不要
用外部传入针指去指向它(即赋一个临时区的地址给
外部的指针变量),这当然是错误的。
好了,下面是程序段:
/*for max lamda resolve*/
Type powerMethodForLamda(Type** matrixA,int
size,char* outputFileName)
{
Type maxLamda;
Type* listV;
Type* listU;
FILE* outputFile;/*the outputFile for
the data output*/
剩余13页未读,继续阅读
资源评论
G11176593
- 粉丝: 6649
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功