我将Fortran 77中的书面代码转换为Matlab代码。该函数使用QL算法计算矩阵的特征值和特征向量。由于某些原因,我不能在matlab中使用eig函数的结果。这种方法得到的特征值与eig函数得到的特征值不一样,有些相同但有些不同。我不知道问题在哪里。感谢您的任何帮助和建议。如果需要运行并观察结果,我可以给出输入数组。

这里是fortran代码:

SUBROUTINE tqli(d,e,n,np,z)

INTEGER n,np

REAL d(np),e(np),z(np,np)

CU USES pythag

INTEGER i,iter,k,l,m

REAL b,c,dd,f,g,p,r,s,pythag

do 11 i=2,n

e(i-1)=e(i)

11 continue

e(n)=0.

do 15 l=1,n

iter=0

1 do 12 m=l,n-1

dd=abs(d(m))+abs(d(m+1))

if (abs(e(m))+dd.eq.dd) goto 2

12 continue

m=n

2 if(m.ne.l)then

if(iter.eq.30)pause 'too many iterations in tqli'

iter=iter+1

g=(d(l+1)-d(l))/(2.*e(l))

r=pythag(g,1.)

g=d(m)-d(l)+e(l)/(g+sign(r,g))

s=1.

c=1.

p=0.

do 14 i=m-1,l,-1

f=s*e(i)

b=c*e(i)

r=pythag(f,g)

e(i+1)=r

if(r.eq.0.)then

d(i+1)=d(i+1)-p

e(m)=0.

goto 1

endif

s=f/r

c=g/r

g=d(i+1)-p

r=(d(i)-g)*s+2.*c*b

p=s*r

d(i+1)=g+p

g=c*r-b

C Omit lines from here ...

do 13 k=1,n

f=z(k,i+1)

z(k,i+1)=s*z(k,i)+c*f

z(k,i)=c*z(k,i)-s*f

13 continue

C ... to here when finding only eigenvalues.

14 continue

d(l)=d(l)-p

e(l)=g

e(m)=0.

goto 1

endif

15 continue

return

END以下是matlab代码:

function [d,z]=tqli(d,e,n,np,z)

for i=2:n

e(i-1)=e(i);

end

e(n)=0.;

for l=1:n

iter=0;

for m=l:(n-1)

dd=abs(d(m))+abs(d(m+1));

if ((abs(e(m))+dd)==dd)

break

end

end

m=n;

if (m~=l)

if (iter==30)

disp('too many iteration in tqli')

end

iter=iter+1;

g=(d(l+1)-d(l))/(2.*e(l));

r=pythag(g,1.);

g=d(m)-d(l)+e(l)/(g+r*sign(g));

s=1.;

c=1.;

p=0.;

for i=(m-1):-1:l

f=s*e(i);

b=c*e(i);

r=pythag(f,g);

e(i+1)=r;

if(r==0.)

d(i+1)=d(i+1)-p;

e(m)=0.;

break

end

s=f/r;

c=g/r;

g=d(i+1)-p;

r=(d(i)-g)*s+2.*c*b;

p=s*r;

d(i+1)=g+p;

g=c*r-b;

for k=1:n

f=z(k,i+1);

z(k,i+1)=s*z(k,i)+c*f;

z(k,i)=c*z(k,i)-s*f;

end

end

d(l)=d(l)-p;

e(l)=g;

e(m)=0.;

end

end

end

fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量相关推荐

  1. java进制代码_Java将字节转换为十六进制代码分享

    /** * reference apache commons * href="http://commons.apache.org/codec/">http://commons ...

  2. javapdf转换成html,java pdf转换为html代码

    java pdf转换为html代码 [2021-02-08 23:39:03]  简介: php将html转为图片的方法:首先借助类库mPDF将html转换成pdf,代码为[$pdf_name= md ...

  3. c语言将图像转换成字符画,25行Java代码将普通图片转换为字符画图片和文本的实现...

    本文主要介绍了25行Java代码将普通图片转换为字符画图片和文本的实现,分享给大家,具体如下: 原图 生成字符画文本(像素转换字符显示后,打开字符画显示相当于原图的好几倍大,不要用记事本打开,建议用n ...

  4. 使用MATLAB Coder将工具箱中的系统对象转换为C代码

    使用MATLAB Coder将工具箱中的系统对象转换为C代码 现在你一个脚本文件,这个文件是个完整的程序,有输入也有输出,运行这个脚本文件会得到你想要的结果.在这个文件里你使用了某个工具箱中的系统对象 ...

  5. PCA降维算法原理及代码实现(python和matlab)

    常见的数据降维算法有:奇异值分解(SVD).主成分分析(PCA).因子分析(FA).独立成分分析(ICA). PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值.特征向量. ...

  6. matlab中codegen是什么,从 MATLAB 代码生成 C/C++ 代码。 - MATLAB codegen - MathWorks 中国...

    -c生成 C/C++ 代码,但不调用 make 命令. -config:dll使用默认配置参数生成动态 C/C++ 库. -config:exe使用默认配置参数生成静态 C/C++ 可执行文件. -c ...

  7. Matlab中常见实用函数(敲代码碰到的)

    目录 1.norm函数 2.varargin函数(varargout) 3.nargout函数(nargin) 4.ndgrid函数 5.ndims函数 6.surface函数 7.gcbf函数 8. ...

  8. 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究

    公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...

  9. babel—ES6代码转换为ES5代码

    为什么要将ES6代码转换为ES5代码? 为了浏览器兼容,以及为了在node.js环境可以顺畅运行应用程序.ES6作为JS的新规范,加入了很多新的语法和API,但现代浏览器对ES6新特性支持度不高,所以 ...

最新文章

  1. iOS处理高并发量的数据请求和数据集合的对应关系
  2. Android模拟器入门
  3. COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
  4. jboss 配置上下文路径_JBoss Portal上的“ Hello World” portlet
  5. 安卓学习笔记07:事件处理、窗口跳转与传递数据
  6. Pessimistic and Optimistic locking
  7. 大侠学java之继承
  8. eyoucms栏目类型介绍
  9. USB大容量存储类规范概述
  10. inputBox 与 Application.inputBox 的用法与区别。
  11. VS code编辑器出现open a floder or workspace... (File -> Open Folder)错误
  12. 新型冠状病毒实时动态
  13. c语言——简单计算器
  14. GRUB4DOS(六) find命令的实现
  15. 智能人员考勤系统(C语言)
  16. python:talib 计算 OBV
  17. 人民币升值会给我们带来什么(个人收藏)
  18. 2019 年 5 月移动互联网全行业排行榜
  19. 文本溢出时,如何显示为省略号
  20. 三年级计算机下册全册教案,清华版小学信息技术三年级下册全套教案.doc

热门文章

  1. 对比Oracle和Mysql在锁机制上的类似和差异点
  2. Nginx----基础
  3. Foundry feats. MultiverseStudio
  4. Python+Selenium练习篇之2-利用ID定位元素
  5. ubuntu16 深度学习环境搭建步骤
  6. Vijos——T 1629 八
  7. 关于android:windowNoTitle不起作用的解决办法
  8. XVI Open Cup named after E.V. Pankratiev. GP of Eurasia
  9. 推荐一款非常强大的扒站工具
  10. HDOJ 1875 畅通工程再续