MyMathLib系列(线性空间)

安装 C# 科学计算库 Math.NET Numerics 在 Visual Studio 2015 中安装 Math.NET Numerics 科学计算库。 阅读详情

线性空间的算法不是特别多,这里是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyMathLib
{
    /// <summary>
    /// 线性空间
    /// </summary>
    public class LinearSpace
    {
        /// <summary>
        /// 求向量Vector在基底BasisOfLinearSpace下的坐标向量
        /// </summary>
        /// <param name="BasisOfLinearSpace">线性空间的基</param>
        /// <param name="Vector">目标向量</param>
        /// <returns>坐标向量.</returns>
        public static double[] CalcVectorCoordinate(List<double[]> BasisOfLinearSpace,double[] Vector)
        {
            if (BasisOfLinearSpace == null && BasisOfLinearSpace.Count <= 0)
            {
                throw new Exception("基底不能为空!");
            }
            var theCoeffs = BasisOfLinearSpace.To2DArrayT();
            var theRet = LinearAlgebra.LinearEquationsEM2(theCoeffs, Vector);
            if (theRet.SolutionType == SolutionType.OnlyOne)
            {
                return theRet.SolutionVectors[0];
            }
            throw new Exception("参数错误!");

        }
        /// <summary>
        /// 求向量Vector在另一个基底下的坐标向量
        /// </summary>
        /// <param name="P">过渡矩阵</param>
        /// <param name="Vector">向量</param>
        /// <returns>坐标向量.</returns>
        public static double[] CalcVectorY(double[,] P, double[] Vector)
        {
            if (P == null || P.GetLength(0) <= 0 || P.GetLength(1) <= 0)
            {
                throw new Exception("过渡矩阵不能为空!");
            }
            var theP = new TMatrix(P);
            var theP1 = TMatrix.GetInverseMatrix(theP);
            double[][] theVectors = new double[1][];
            theVectors[0] = Vector;
            var theAt = TMatrix.Transposition(new TMatrix(theVectors));
            var theRet = (theP1 * theAt);
            return theRet.Elements.GetVectorCol(0);
        }
        /// <summary>
        /// 获取T在此基底下的坐标矩阵A.
        /// </summary>
        /// <param name="P">变换矩阵</param>
        /// <param name="BasisVectors">基底</param>
        /// <returns>坐标矩阵A</returns>
        public static TMatrix CalcCoordinateMatrixOfT(double[,] P, List<double[]> BasisVectors)
        {
            if (BasisVectors ==null || P == null || 
                P.GetLength(0) <= 0 || P.GetLength(1) <= 0
                || P.GetLength(0)!=P.GetLength(1)
                || P.GetLength(0)!=BasisVectors.Count
                || BasisVectors.Count <=0 
                || BasisVectors[0].Length != BasisVectors.Count)
            {
                throw new Exception("参数有误!");
            }
            var theBasis = BasisVectors.To2DArrayT();
            var theBasisM =  new TMatrix(theBasis);
            var thePM =  new TMatrix(P);
            var theBasisM_1 = TMatrix.GetInverseMatrix(theBasisM);
            return theBasisM_1 * thePM * theBasisM;
        }

        /// <summary>
        /// 获取T在此BasisVectors基底下的关系矩阵P.
        /// </summary>
        /// <param name="A">T在基底下的坐标矩阵A</param>
        /// <param name="BasisVectors">基底矩阵</param>
        /// <returns>坐标矩阵A</returns>
        public static TMatrix CalcRelationMatrixOfT(double[,] A, List<double[]> BasisVectors)
        {
            if (BasisVectors == null || A == null ||
                A.GetLength(0) <= 0 || A.GetLength(1) <= 0
                || A.GetLength(0) != A.GetLength(1)
                || A.GetLength(0) != BasisVectors.Count
                || BasisVectors.Count <= 0
                || BasisVectors[0].Length != BasisVectors.Count)
            {
                throw new Exception("参数有误!");
            }
            var theBasis = BasisVectors.To2DArrayT();
            var theBasisM = new TMatrix(theBasis);
            var thePM = new TMatrix(A);
            var theBasisM_1 = TMatrix.GetInverseMatrix(theBasisM);
            return theBasisM  * thePM * theBasisM_1;
        }
    }
}

Mathlib:非常简单的C#数学库 Mathlib:一个非常简单的C#数学库 这是一个非常简单的C#数学库,我的软件渲染器和多代理模拟器项目仍在开发中。 创建它的目的是(在某种程度上)与Unity的数学库兼容(或多或少)。 执照 由开发的引擎代码; 它是根据。 所有文本和文档(即非代码文件)均可在[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License] [CC BY-NC-SA 4.0]下获得。 立即下载

相关推荐

一个简单的数学运算库c#版

一个简单而又功能强大的数学计算库,包含矩阵计算,基本几何运算功能

MyMathLib系列(向量运算--1)

主要是线性代数的第2章的算法,由于本章的大部分都是概念性的,而且后面还有矩阵,因此算法较少:/*Vector.cs * Albert.Tian on 20141225 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyMathLib {

三人行必有我师,手写三行必有所悟 2101

tiktok算法协议研究

经过上述分析,可以确定目标字符串来源于一段 JSON 数据,而这段 JSON 数据来自于一个经过加密的本地文件。对字符串 "sdi_v2" 进行 SHA-1 计算,得到 20 字节的结果;将第一步得到的数据进行MD5计算,生成16字节的结果;将第二步的结果转换为十六进制字符串,从而得到 32 字节的密钥。写这种算法分析的帖子真的是太无聊了,就先分析到这里吧,后续有机会再来谈下被加密的本地文件是怎么来的!!自我感觉TT的算法并不难,就是量太大了,所以我想问问有没有感兴趣的朋友来一起分析,欢迎联系。

2503_90751938的博客 2582

.NET数学库NMath使用教程——通用函数

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程。本节展示在NMatht中简单的将一元和二元函数应用于向量元素的便捷方法。 ...

yuyuyuyo的博客 2617

从Excel到‘一张图’办案:手把手教你用AbutionGraph构建公安经侦知识图谱(含数据建模避坑指南)

本文详细介绍了如何利用AbutionGraph时序图数仓技术,将公安经侦领域的Excel、银行流水等碎片化数据转化为可交互的知识图谱。通过数据清洗、实体关系模型设计、时序数据处理等步骤,实现高效智能分析,提升办案效率。特别包含数据建模避坑指南和实战案例,助力公安金融案件侦破。

weixin_33702545的博客 343

Delta-Sigma调制(DSM)技术

前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制(PCM)ADC受到了制造工艺的限制,无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺下实现高分辨率(大于16位),同时由于结构简单,所以易于实现。低成本高性能使得Delta-Sigma调制技术得到了广泛的应用。 Delta-Sigma型ADC的结构原理图如下图所示: 它最大的优势在于仅用1位ADC进行数据转换,同时其模拟电路部分结构简单不需要

阿星的博客 2万+

MyMathLib系列(行列式计算3)

到今天,行列式和线性方程组部分就完成了。using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyMathLib { /// /// 行列式计算,本程序属于MyMathLib的一部分,欢迎使用,参考,提意见。 /// 有时间

三人行必有我师,手写三行必有所悟 2464

(MIUI)小米手机录音文件深度寻踪:从系统缓存到数据目录的实战解析

本文深入解析了MIUI系统中录音文件丢失的常见原因及解决方案,包括系统升级兼容性问题、应用缓存机制异常和存储权限变动。通过实战操作指南,详细介绍了如何从系统目录、数据库层面恢复录音文件,并提供了预防措施和自动化备份方案,帮助小米手机用户有效找回重要录音数据。

weixin_42699679的博客 518

MyMathLib系列(一元多项式-准备)

这里定义的类TExp是基本的计算项,这里的表达式与C#自带的表达式有很大的区别,这里定义这个类主要是为了进行矩阵运算,当然本身也支持普通的运算,但目前不支持除法。这个类目前的用途主要是为了计算矩阵的特征值,特征向量,有时间,再扩展成支持常见的复数域类的数值和符号运算。代码有点长,需要有点耐心:using System; using System.Collections.Generic; using

三人行必有我师,手写三行必有所悟 2236

Dify-前端本地运行-单点登录

本文介绍了如何在已部署Dify的系统中实现AI应用跳转及页面定制化改造。通过iframe跳转无法满足甲方需求后,作者对Dify前端源码进行了本地化二次开发,主要步骤包括:1) 按照官方文档搭建本地开发环境;2) 修改.env配置文件连接部署好的后端服务;3) 隐藏侧边栏和头部导航栏;4) 实现单点登录功能,通过URL参数获取用户邮箱自动登录。过程中解决了请求拦截导致的登录校验问题,最终达成仅保留对话框界面并同步用户信息的需求。该方案涉及Next.js框架和React技术的应用,为类似定制化需求提供了参

weixin_43163457的博客 3226

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1136

【目录】开源Math.NET基础数学类库使用总目录

本博客所有文章分类的总目录链接:【总目录】本博客博文总目录-实时更新  1.开源Math.NET数学组件文章   1.开源Math.NET基础数学类库使用(01)综合介绍   2.开源Math.NET基础数学类库使用(02)矩阵向量计算   3.开源Math.NET基础数学类库使用(03)C#解析Matlab的mat格式   4.开源Math.NET基础数学类库使用(04)C#解析M...

weixin_34348111的博客 264

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

自己用C#写的一个Math类,数学不好,大家帮我看下

最近一直在用C#写程序,第一次使用C#,项目中有一个评估模块,涉及了一些算法,Math.Net应该都有,只是我不想去找到底用哪个,所以自己根据客户要求,写了一个类,算法公式由于客户提供的,我数学不好,不知道对不对,请大家帮我验证一下,谢谢。 public static class MathTool { /// /// 获取相关系数

octdream的专栏 1036

CKA-CN考试之路----2

部分知道就可以了,考试不用输入,后面不再复述.这里我们需要将两端内容凭借成1个yaml。执行题目中给的的命令进行测试。

Q先生 242

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MathLib 开源的数据函数库

http://www.codeplex.com/MathLib 转载于:https://www.cnblogs.com/chinaontology/archive/2008/06/11/1217583.html

weixin_30767835的博客 1095

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Pixhawk-姿态解算源码注释

通过比例积分控制器把它反馈到陀螺仪,定位估计逐渐被迫跟踪参考向量,这样陀螺的漂移就被消除了。测量从方向余弦矩阵计算出相应的参考矢量的叉积是一个错误的指示。它大约等于这个旋转,将不得不用这个参考矢量和这个计算矢量校准。我们感兴趣的是旋转校正量,这个量我们需要用在方向余弦矩阵中,它等于旋转误差的负值。通过交换叉积的秩序可以很方便的计算修正。

Gen_Ye的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java各种优秀开源库收集

一、科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库。它是Matlab、Octave、FreeMat、Scilab的一个克隆,但完全采用纯Java实现。 JSci:Java 科学对象(JSci)开放源代码项目是 Durham(英国 Durham)大学粒子理论中心的三年级研究生 Mark Hale 创立的。JSci 是一个包集合,包含数学和科学类。 使用 JSci,您既可以在 AWT 中也可以在 Swing 中创建简单的条形图、折线图

java之路 4644

Lua资料之数学库

Lua 数学库由一组标准的数学函数构成。数学库的引入丰富了 Lua 编程语言的功能,同时也方便了程序的编写。常用数学: math.rad(x) 角度x转换成弧度 math.deg(x) 弧度x转换成角度 math.max(x, ...) 返回参数中值最大的那个数,参数必须是number型 math.min(x, ...) 返回参数中值最小的那个数,参数必须是number型 math.rand...

宅羽的博客 624

复杂数学计算类库 JMathLib

JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库。它是Matlab、Octave、FreeMat、Scilab的一个克隆,但完全采用纯Java实现。     项目主页: http://www.jmathlib.de/   MATLAB Builder JA 2.0.3 for Java language http://www...

wen66 2397

一个简单的跨域跨数据库事务处理架构

原来只是有点这个想法,怎么去做这个事务,这次给公司做新架构演示,随带就加进去了,居然还成了,还像那么回事:我的做法很简单:自己写了个事务处理类,提供一个静态的启动事务方法,然后就是Commit,Rollback方法,再利用GUID作为事务ID。有事务处理类管理本地数据库链接和远程跨域服务信息,利用这些信息在Commit或者rollback时进行提交或者回滚,在数据库级上并行执行命令,需要对远程跨域

三人行必有我师,手写三行必有所悟 1万+

腾讯面试题(除掉N个整数中重复数)解题(线性时间,原地置换排序算法)(已修正)

题目:一个大小为N的数组,里面是N个整数,怎样去除重复, 要求时间复杂度为O(n),空间复杂度为O(1).               //下面的思路没问题,但算法有问题,修正后的算法见后面.         ///         /// 需要除掉重复的整数的数组,

三人行必有我师,手写三行必有所悟 1万+

归并排序(MergeSort)的原理及延伸性思考

前面一篇博文写了归并排序的算法实现,虽然做了些注释,但没有写归并排序的原理,这篇就补上,同时对归并所隐含的思想做一个探讨。 1)归并排序的原理      为了便于说明,这里我们提到的已排好序的序列都是指从小到大的升序(对于降序其实原理是一样的。     假设有两个已排好序的

三人行必有我师,手写三行必有所悟 1万+
上一篇: MyMathLib系列(矩阵算法--2)
下一篇: MyMathLib系列(一元多项式-准备)
广州接入
广州接入 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄24年 2224粉丝 731原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值