matlab lltsa函数,带平方根的(LLT)Cholesky算法分解对称正定矩阵 c语言实现 - 数学 - 小木虫 - 学术 科研 互动社区...

article/2025/8/30 6:43:07

0a23c9cbf3c8f9c9607fb4f1f99b8c6b.gif

xiuyouxu

建议找一本数值分析的书看一下,里面有具体的算法,我以前实现过,其他语言的,没有用c语言做过.

5a9cf3e94de0c652e426013c24ee228c.png

舒马诺

引用回帖:

xiuyouxu at 2012-05-03 21:28:11:

建议找一本数值分析的书看一下,里面有具体的算法,我以前实现过,其他语言的,没有用c语言做过.

# include

# include

void main()

{

float m,A[9];

float L[6];

printf("璇疯緭鍏ョ煩闃�: \n ");

scanf("%f %f %f\n%f %f %f\n%f %f %f\n",&A[0],&A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7],&A[8]);

printf("璇疯緭鍏ュ�?璁歌宸�:m=");

scanf("%f",&m);

if

A[0]>m&&(A[0]*A[4]-A[1]*A[3]>m)&&(A[6]*A[4]*A[2]+A[0]*A[7]*A[5]+A[1]*A[3]*A[8]-A[0]*A[4]*A[8]-A[1]*A[6]*A[5]-A[2]*A[3]*A[7]>m)&&(A[1]==A[3])&&(A[2]==A[6])&&(A[5]==A[7])

{

L[0]=sqrt(A[0]);

L[1]=A[3]/L[0];

L[3]=A[6]/L[0];

L[2]=sqrt(A[4]-L[1]*L[1]);

L[4]=(A[7]-L[3]*L[1])/L[2];

L[5]=sqrt(A[8]-L[3]*L[3]-L[4]*L[4]);

printf("鎵�姹傜煩闃典负L=\n %f 0 0\n%f %f 0\n%f %f %f\n",L[0],L[1],L[2],L[3],L[4], L[5]);

}

else

printf("杈撳叆鏈夎锛岃妫�鏌�");

}

璋冭瘯杩?琛岋細

1>.\Debug\shiyan.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. {_~0p'1a@'7v par 1>Build log was saved at "file://e:\360data\閲?瑕?鏁版?甛妗岄?shiyan\shiyan\Debug\BuildLog.htm"

1>shiyan - 1 error(s), 0 warning(s)

========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

宸ョ▼鏃犳硶寤虹珛

棰勬湡鏁堟灉锛�

璇疯緭鍏ョ煩闃碉細

1 2 3

2 4 5

3 5 6

璇疯緭鍏ュ�?璁歌宸細m=1e-6

杈撳叆鏈夎锛岃妫�鏌�

璇疯緭鍏ョ煩闃碉細

5 2 -4

2 1 -2

-4 -2 5

璇疯緭鍏ュ�?璁歌宸細m=1e-6

鎵�姹傜煩闃礚=

2.236068 0 0

0.894427 0.4472136 0

-1.788854 -0.894427 1

鎴戠殑绠楁硶杩?琛屼�?閫氳繃鍟婏紝鑰屼笖鏍规湰鏈兘瀹炵幇閽堝浠绘�?闃舵鐨勭煩闃点�傘�傘�傛眰澶х甯繖~

5a9cf3e94de0c652e426013c24ee228c.png

舒马诺

引用回帖:

xiuyouxu at 2012-05-03 21:28:11:

建议找一本数值分析的书看一下,里面有具体的算法,我以前实现过,其他语言的,没有用c语言做过.

# include

# include

void main()

{

float m,A[9];

float L[6];

printf("请输入矩阵: \n ");

scanf("%f %f %f\n%f %f %f\n%f %f %f\n",&A[0],&A[1],&A[2],&A[3],&A[4],&A[5],&A[6],&A[7],&A[8]);

printf("请输入允许误差:m=");

scanf("%f",&m);

if

A[0]>m&&(A[0]*A[4]-A[1]*A[3]>m)&&(A[6]*A[4]*A[2]+A[0]*A[7]*A[5]+A[1]*A[3]*A[8]-A[0]*A[4]*A[8]-A[1]*A[6]*A[5]-A[2]*A[3]*A[7]>m)&&(A[1]==A[3])&&(A[2]==A[6])&&(A[5]==A[7])

{

L[0]=sqrt(A[0]);

L[1]=A[3]/L[0];

L[3]=A[6]/L[0];

L[2]=sqrt(A[4]-L[1]*L[1]);

L[4]=(A[7]-L[3]*L[1])/L[2];

L[5]=sqrt(A[8]-L[3]*L[3]-L[4]*L[4]);

printf("所求矩阵为L=\n %f 0 0\n%f %f 0\n%f %f %f\n",L[0],L[1],L[2],L[3],L[4], L[5]);

}

else

printf("输入有误,请检查");

}

调试运行:

1>.\Debug\shiyan.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. {_~0p'1a@'7v par 1>Build log was saved at "file://e:\360data\重要数据\桌面\shiyan\shiyan\Debug\BuildLog.htm"

1>shiyan - 1 error(s), 0 warning(s)

========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

工程无法建立

失败了,而且达不到针对任意阶次矩阵的效果!

0a23c9cbf3c8f9c9607fb4f1f99b8c6b.gif

xiuyouxu

matlab里面直接用root函数就可以了, 下面是我写的c++的:

// 定义Matrix类(略)

// m*n阶0矩阵

void Matrix::zeros(int m,int n,double** a){

for(int i=0;i

for(int j=0;j

a[j]=0;

}

}

}

// n为矩阵的阶

void Matrix::root(int n,double** A,double** L){

zeros(n,n,L);

for(int i=0;i

for(int j=0;j

double sum=0;

for(int k=0;k

sum+=L[k]*L[j][k];

}

L[j]=(A[j]-sum)/L[j][j];

}

double sum=0;

for(int k=0;k

sum+=L[k]*L[k];

}

L=sqrt(A-sum);// 显然 A-sum<0时不是正定矩阵

}

}

5a9cf3e94de0c652e426013c24ee228c.png

舒马诺

引用回帖:

xiuyouxu at 2012-05-03 22:29:03:

matlab里面直接用root函数就可以了, 下面是我写的c++的:

// 定义Matrix类(略)

// m*n阶0矩阵

void Matrix::zeros(int m,int n,double** a){

for(int i=0;i<m;i++){

for(int j=0;j<n;j++){

a=0; ...

还是运行不通。。。

0a23c9cbf3c8f9c9607fb4f1f99b8c6b.gif

xiuyouxu

晕,这个回复框不能放代码啊,有一部分代码被替换掉了,代码里不能出现,会被替换掉

0a23c9cbf3c8f9c9607fb4f1f99b8c6b.gif

xiuyouxu

看看这样行不行 \[i\]


http://chatgpt.dhexx.cn/article/Wygj7RhE.shtml

相关文章

python 趋势线计算式_LLT指标-低延迟趋势线对中证500的python复现过程

大家好,我是上海大侠 看了半个小时的研报和视频,对具体实现过程含糊其辞,表述不清,模糊重点,甚至还有多处写错 本着知识开源的想法,我将我的探索过程公开,以期给同样在这条路上摸索的朋友节省一点走弯路的力气 废话先不多讲,我是个喜欢在本地数据上运行代码的男人,因为…

根据《LLT低延迟趋势线与交易性择时 短线择时策略研究》的python模型 策略开发

《低延迟趋势线与交易性择时短线择时策略研究》  传统移动平均线&#xff08;MA&#xff09;的缺点 移动平均线&#xff08;MA&#xff09;是技术分析中常用的一类趋势跟踪指标&#xff0c;其可以在一定程度上刻画股票价格或指数的变动方向。MA 的计算天数越多&#xff0c;平…

解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解

目录 1. 前言 1.1 为什么要进行矩阵分解&#xff1f; 1.2 矩阵与矩阵分解的几何意义&#xff1f; 2. LU三角分解 3. Cholesky分解 — LDLT分解 4. Cholesky分解 — LLT分解 5. QR分解 6. 奇异值分解 7. 特征值分解 本文转自大佬博客&#xff1a;https://blog.csdn.ne…

基于gtest、mockcpp写C++LLT测试入门级教程

一、googletest 下载地址&#xff1a;https://github.com/google/googletest 编译googletest: 在根目录下执行 cmake . make 编译出的libgtest.a后面用 注意&#xff1a;有可能编译会失败&#xff0c;是gtest需要C11以上 可以在顶级的CMakeList.txt里加入 set(CMAKE_CXX_STA…

量化策略分享 | MA超进化:LLT低延迟趋势线

移动平均线&#xff08;MA&#xff09;是我们技术分析中常用的一种趋势跟踪指标&#xff0c;但在使用的时候你是否也会有这样的烦恼&#xff1a;交易信号延迟太久&#xff0c;或者交易信号太频繁了&#xff01;延迟性和平滑性问题似乎是不可兼得的“鱼和熊掌”。 针对这个问题&…

LLT-发现股市中的“大浪”

引言&#xff1a; 股市中小的波动经常干扰股票投资人对大趋势的判断&#xff0c;倘若股市的波动同信号波动类似&#xff0c;那是不是可以用处理信号的方式处理股票波动发现大的波动呢&#xff1f;我们知道通信领域在处理信号波动时也常会遇到被噪音干扰的问题&#xff0c;这些噪…

HDU2544 最短路dij

纯最短路。 1 ///HDU 2544堆优化的最短路2 #include <cstdio>3 #include <iostream>4 #include <sstream>5 #include <cmath>6 #include <cstring>7 #include <cstdlib>8 #include <string>9 #include <vector>10 #include &l…

dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少(示例代码)...

算法实现步骤&#xff1a; a.初始时&#xff0c;只包括源点&#xff0c;即S {v}&#xff0c;v的距离为0。U包含除v以外的其他顶点&#xff0c;即&#xff1a;U {其余顶点}&#xff0c;若v与U中顶点u有边&#xff0c;则(u,v)为正常权值&#xff0c;若u不是v的出边邻接点,则(u,v…

dij算法堆优化_迪杰斯特拉算法(Dijkstra) (基础dij+堆优化) BY:优少

算法实现步骤&#xff1a; a.初始时&#xff0c;只包括源点&#xff0c;即S {v}&#xff0c;v的距离为0。U包含除v以外的其他顶点&#xff0c;即&#xff1a;U {其余顶点}&#xff0c;若v与U中顶点u有边&#xff0c;则(u,v)为正常权值&#xff0c;若u不是v的出边邻接点,则(u,v…

图的最短路径——DIJ算法,有向图的矩阵实现,图的基本操作

图是一种非常重要的数据结构&#xff0c;在研究从一点出发到各个顶点的最短距离。 实验目的 1. 掌握图的基本概念、表示方法、遍历方法。 2. 掌握图的最短路径算法。 实验要求 1&#xff0e; 输入图的顶点数n&#xff08;不超过10个&#xff09;、边数m&#xff0c;顶点分…

堆优化dij

模板 【算法介绍】 用一个优先级队列来记录点和dis值&#xff0c;按照顺序进行边的松弛即可 1.农场派对 【题意】 有向图&#xff0c;求1-n所有点中到x点一去一回的最短路的最大值 【分析】 建立原图和反图&#xff0c;以x为源点跑两次dijkstra&#xff0c;对于1-n每个点…

图中的搜索——dij

Dijkstra(迪杰斯特拉算法)常常用于求解图中的单点最短路径问题。其主要实现方法可拆分为两个步骤&#xff1a;①更新距离信息②找出当前最小路径 如下图所示&#xff0c;要求求出1结点到6结点的最短路径。 我们可以先定义一下重点内容&#xff1a; 邻接矩阵map[i][j]&#xf…

关于普通dij算法为什么不能解决负权边的分析

我们首先来分析下含负权边的无向图&#xff1a; 1.先看图 我们求A点到C点的最短距离&#xff0c;很明显答案为1. 2.我们用dij来跑下&#xff0c;看过程&#xff1a; 先把A点标记哈&#xff0c;不需要访问本身首先找到距A最近的且直接相连的点&#xff08;也就是两点间没有…

dij最短路+堆优化

dij一个主要思路&#xff0c;将所有点分为两个集合S&#xff0c;T&#xff0c;初始集合S中只包含了起点&#xff0c;T集合包含所有点&#xff0c;要做的就是从T集合中不断选取与S集合中的点距离最短的并且未被加入S集合中的点&#xff0c;将这个点加入S集合&#xff0c;并用这个…

FreeType移植到 STM32 单片机以支持矢量字体

目录 一、准备工作 二、复制文件 三、添加C文件到Keil中 四、修改接口 五、调用 六、优化 七、效果 一、准备工作 下载Freetype源码 ----- 下载FreeType 以移植到Keil 的STM32工程为例 移植前的软件环境&#xff1a; 1&#xff0c;实现了内存分配函数 2&#xff0c;实现了文件…

freetype库实现文字显示

原文&#xff1a;http://www.cnblogs.com/lifexy/p/8503070.html 1 .数码相框-通过freetype库实现矢量显示 本章主要内容如下: 1)矢量字体原理2)使用freetype库实现矢量字体显示 1. 矢量字体原理 将汉字的笔划边缘用直线段描述成封闭的曲线&#xff0c;并将线段各端点的坐标经压…

常用字体介绍(freetype)

字体显示原理 字体和图片一样&#xff0c;存储为像素&#xff0c;绘制的时候需要找到字体对应的像素显示 字体文件格式 ttf&#xff0c;只包含一种字体格式&#xff0c;矢量字体ttc&#xff0c;ttc包含多个ttf文件&#xff0c;包含多种字体格式otf&#xff0c;ttf的扩展&…

FreeType 简单使用

FreeType 2 第一步 &#xff0d;&#xff0d; 简易的字形装载 介绍 这是“FreeType2 教程”的第一部分。它将教会你如何&#xff1a; * 初始化库 * 通过创建一个新的 face 对象来打开一个字体文件 * 以点或者象素的形式选择一个字符大小 * 装载一个字形(glyph)图像&…

freetype的安装与使用

一、在PC上的安装与使用 1) 开发环境 系统版本&#xff1a; ubuntu14.04 freetype版本&#xff1a; freetype-2.4.10 gcc版本&#xff1a; gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 2) 步骤 1. 解压缩 tar xjf freetype-2.4.10.tar.bz2 2. 配置 …

freetype环境安装记录

&#xff08;一&#xff09;摘要 最近在学习韦东山老师的驱动入门课程&#xff0c;在freetype环境安装时碰到到了一下这个报错&#xff0c;于是想记录下自己的安装过程方便其他碰到问题的同学解决&#xff01; &#xff08;二&#xff09;碰到的报错 我是用的是IMX6ULL PRO开…