matlab中高精度计算函数vpa与非厄米矩阵本征值的求解

bash 复制代码
clear;clc;close all
tic
%并行设置%
delete(gcp('nocreate'));%关闭之前的并行
c=parcluster('local');
c.NumWorkers=50;%手动设置线程数(否则默认最大线程为12)
parpool(c, c.NumWorkers);
%并行设置%

w=1;
u=2.5;

N=30;


valsto=zeros(2*N+2,100);
v10=linspace(-3,3,100).';


parfor jj=1:length(v10)


    v1=v10(jj);

    [~,val]=eig(vpa(H(u,v1,w,N),30));%设置30位高精度计算
    %[~,val]=eig(H(u,v1,w,N));
    tval=diag(val);
    [~,index]=sort(real(tval));
    val=tval(index);
    valsto(:,jj)=val;

end

figure
hold on
plot(linspace(-3,3,100),abs(valsto(:,:)),'k.')

%%%%%%%%%%=========%%%%%%%%%%%%%%
%%%%%%%%%%=========%%%%%%%%%%%%%%



clearvars -except N
syms u v w real


val2=eig(H(u,v,w,N));
val2=subs(val2,{u,w},{2.5,1});

valsto2=zeros(2*N+2,100);
v10=linspace(-3,3,100).';


parfor jj=1:length(v10)


    v1=v10(jj);
    tval=val2;
    tval=double(subs(tval,v,v1));
    [~,index]=sort(real(tval));
    tval=tval(index);
    valsto2(:,jj)=tval;

end

plot(linspace(-3,3,100),abs(valsto2(:,:)),'bo')
hold off
saveas(gcf,"VAPtest0.fig")
toc

function [H0]=H(u,v,w,N)

T1=[];
T2=[];
for hh=1:N
    T1=[T1;v+u;w+u];
    T2=[T2;v-u;w-u];
end
T1=[T1;v+u];
T2=[T2;v-u];
H0=diag(T1,1)+diag(T2,-1);


end

上面代码没用高精度计算函数vpa之前数值计算的特征值能谱有部分和符号计算(篮圈)是对不上的,如下:

使用了vpa高精度函数后,数值计算和符号计算的结果完全一致:

相关推荐
种时光的人21 小时前
CANN仓库核心解读:catlass夯实AIGC大模型矩阵计算的算力基石
线性代数·矩阵·aigc
Zfox_1 天前
CANN Catlass 算子模板库深度解析:高性能矩阵乘(GEMM)原理、融合优化与模板化开发实践
线性代数·矩阵
aini_lovee1 天前
MATLAB基于小波技术的图像融合实现
开发语言·人工智能·matlab
lbb 小魔仙1 天前
面向 NPU 的高性能矩阵乘法:CANN ops-nn 算子库架构与优化技术
线性代数·矩阵·架构
空白诗1 天前
CANN ops-nn 算子解读:大语言模型推理中的 MatMul 矩阵乘实现
人工智能·语言模型·矩阵
3GPP仿真实验室1 天前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
池央1 天前
ops-nn 算子库中的数据布局与混合精度策略:卷积、矩阵乘法与 RNN 的优化实践
rnn·线性代数·矩阵
rit84324991 天前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
我找到地球的支点啦1 天前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
深鱼~2 天前
大模型底层算力支撑:ops-math在矩阵乘法上的优化
人工智能·线性代数·矩阵·cann