fortran转换 matlab代码,将Fortran77代码转换为Matlab代码以查找特征值/向量
我将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代码以查找特征值/向量相关推荐
- java进制代码_Java将字节转换为十六进制代码分享
/** * reference apache commons * href="http://commons.apache.org/codec/">http://commons ...
- javapdf转换成html,java pdf转换为html代码
java pdf转换为html代码 [2021-02-08 23:39:03] 简介: php将html转为图片的方法:首先借助类库mPDF将html转换成pdf,代码为[$pdf_name= md ...
- c语言将图像转换成字符画,25行Java代码将普通图片转换为字符画图片和文本的实现...
本文主要介绍了25行Java代码将普通图片转换为字符画图片和文本的实现,分享给大家,具体如下: 原图 生成字符画文本(像素转换字符显示后,打开字符画显示相当于原图的好几倍大,不要用记事本打开,建议用n ...
- 使用MATLAB Coder将工具箱中的系统对象转换为C代码
使用MATLAB Coder将工具箱中的系统对象转换为C代码 现在你一个脚本文件,这个文件是个完整的程序,有输入也有输出,运行这个脚本文件会得到你想要的结果.在这个文件里你使用了某个工具箱中的系统对象 ...
- PCA降维算法原理及代码实现(python和matlab)
常见的数据降维算法有:奇异值分解(SVD).主成分分析(PCA).因子分析(FA).独立成分分析(ICA). PCA降维的基本思想:通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值.特征向量. ...
- matlab中codegen是什么,从 MATLAB 代码生成 C/C++ 代码。 - MATLAB codegen
- MathWorks 中国...
-c生成 C/C++ 代码,但不调用 make 命令. -config:dll使用默认配置参数生成动态 C/C++ 库. -config:exe使用默认配置参数生成静态 C/C++ 可执行文件. -c ...
- Matlab中常见实用函数(敲代码碰到的)
目录 1.norm函数 2.varargin函数(varargout) 3.nargout函数(nargin) 4.ndgrid函数 5.ndims函数 6.surface函数 7.gcbf函数 8. ...
- 彩色matlab代码拷贝到word研究,matlab编辑器合并_彩色MATLAB代码拷贝到WORD研究
公众号:理念世界的影子 文不可无观点,观点不可无论据. 转载请注明出处 结果简单,重在过程 有时将彩色Matlab代码拷贝到Word中,可能出现彩色消失.中文乱码.没有行号.字体不佳等问题.已有的措施 ...
- babel—ES6代码转换为ES5代码
为什么要将ES6代码转换为ES5代码? 为了浏览器兼容,以及为了在node.js环境可以顺畅运行应用程序.ES6作为JS的新规范,加入了很多新的语法和API,但现代浏览器对ES6新特性支持度不高,所以 ...
最新文章
- iOS处理高并发量的数据请求和数据集合的对应关系
- Android模拟器入门
- COMA(二):Counterfactual Multi-Agent Policy Gradients 论文讲解
- jboss 配置上下文路径_JBoss Portal上的“ Hello World” portlet
- 安卓学习笔记07:事件处理、窗口跳转与传递数据
- Pessimistic and Optimistic locking
- 大侠学java之继承
- eyoucms栏目类型介绍
- USB大容量存储类规范概述
- inputBox 与 Application.inputBox 的用法与区别。
- VS code编辑器出现open a floder or workspace... (File -> Open Folder)错误
- 新型冠状病毒实时动态
- c语言——简单计算器
- GRUB4DOS(六) find命令的实现
- 智能人员考勤系统(C语言)
- python:talib 计算 OBV
- 人民币升值会给我们带来什么(个人收藏)
- 2019 年 5 月移动互联网全行业排行榜
- 文本溢出时,如何显示为省略号
- 三年级计算机下册全册教案,清华版小学信息技术三年级下册全套教案.doc