标签: numerical

数值配方的LU分解不起作用; 我究竟做错了什么?

我从字面上复制并粘贴了C的数字配方的源代码,用于就地LU矩阵分解,问题是它不起作用.

我确信我做的事情很愚蠢,但我很高兴有人能指出我正确的方向; 我整天都在努力工作,看不出我做错了什么.

POST-ANSWER UPDATE:项目已完成并正在运行.感谢大家的指导.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define MAT1 3
#define TINY 1e-20

int h_NR_LU_decomp(float *a, int *indx){
  //Taken from Numerical Recipies for C
  int i,imax,j,k;
  float big,dum,sum,temp;
  int n=MAT1;

  float vv[MAT1];
  int d=1.0;
  //Loop over rows to get implicit scaling info
  for (i=0;i<n;i++) {
    big=0.0;
    for (j=0;j<n;j++)
      if ((temp=fabs(a[i*MAT1+j])) > big) 
        big=temp;
    if (big == 0.0) return -1; //Singular Matrix
    vv[i]=1.0/big;
  }
  //Outer kij loop
  for (j=0;j<n;j++) {
    for (i=0;i<j;i++) {
      sum=a[i*MAT1+j];
      for …
Run Code Online (Sandbox Code Playgroud)

c numerical matrix numerical-methods

3
推荐指数
2
解决办法
5749
查看次数

避免和计算计算Mathematica中基本统计数据的非数值

请考虑:

dalist={{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 
       {2.88`, 2.04`, 4.64`,0.56`, 4.92`, 2.06`, 3.46`, 2.68`, 2.72`,0.820},   
       {"Laura1", "Laura1", "Laura1", "Laura1", "Laura1", 
       "Laura1", "Laura1", "Laura1", "Laura1","Laura1"}, 
       {"RIGHT", 0, 1, 15.1`, 0.36`, 505, 20.059375`,15.178125`, ".", "."}}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

实际数据集大约是6 000行和147列.但是上面反映了它的内容.我想计算一些基本的统计数据,比如均值.我的尝试:

Table[Mean@dalist[[colNO]], {colNO, 1, 4}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我怎么能创建一个功能,如:

  • 避免使用非数值和

  • 计算每个列表中找到的非数值的数量.

我还没有成功找到正确的模式机制.

statistics numerical design-patterns wolfram-mathematica

3
推荐指数
1
解决办法
479
查看次数

如何安排此计算以获得数值稳定性?

我正在尝试计算一个向量,其总和为 1,其元素定义如下:

v[i] = exp(tmp[i])/exp(tmp).sum()
Run Code Online (Sandbox Code Playgroud)

问题是指数中的值可能很大(在 -10^2 和 10^2 之间),使得指数计算结果为 inf 或 0。

我尝试了一些变体,例如用分子和分母减去最大元素或 tmp 的平均值,但这仍然不够。

基本上,我需要一种减少 tmp 中平均值和离散度的转换,或者对此计算的巧妙排序。

我使用 numpy 数组作为容器,exp 是 numpy.exp。

python numerical numpy stability exponential

3
推荐指数
1
解决办法
1201
查看次数

MATLAB的"SIGMA必须是对称且肯定的"错误有时没有意义

我不确定这是一个编程或统计问题,但我确定应该有一个数值问题.因此,可能会提出一种程序化解决方案.

我正在使用MATLAB的mvnpdf函数来计算某些观测值的多变量高斯PDF.经常我得到"SIGMA必须是对称且肯定的"错误.

但是,我从数据中获取了covarince矩阵,因此数据应该是合法的.重新生成问题的代码是:

err_cnt = 0;
for i = 1:1000
    try 
        a = rand(3); 
        c = cov(a); 
        m = mean(a); 
        mvnpdf(a, m, c);
    catch me
        err_cnt = err_cnt + 1;
    end
end
Run Code Online (Sandbox Code Playgroud)

每次跑步都会出现约500-600个错误.

PS我不会在我的情况下生成随机数据,只是在这里生成来演示.

matlab numerical probability

3
推荐指数
1
解决办法
8066
查看次数

xsl:sort:按数值排序

我必须按数字顺序整理代码.代码有四个字符和四个数字.

例如,

COMP2100
COMP2400
COMP3410
LAWS2202
LAWS2250
Run Code Online (Sandbox Code Playgroud)

当我这样做<xsl:sort select="code" order="ascending" /> 时显示上面的结果.

但是,我希望它是'数字顺序'

COMP2100
LAWS2202
COMP2250
COMP2400
COMP3410
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

sorting xslt numerical

3
推荐指数
1
解决办法
1万
查看次数

ILNumerics 在向量上的简单数学运算与系统数组和 Math.NET 的性能对比

我最近正在研究 C# 中的数值算法。因此我做了一些实验来寻找最适合.NET 的数学库。我经常做的一件事是评估目标函数,这些函数通常是将向量作为输入并返回向量作为输出的函数。我比较了 ILNumerics、系统数组和 Math.NET 中相同目标函数的实现。ILNumerics 的语法确实使其脱颖而出,因为它类似于 MatLab 和 R 的冗长数学公式。然而,我发现对于相同数量的评估,ILNumerics 似乎比 Math.NET 的任何一个系统数组花费的时间都要长得多。下面是我用来比较的代码。我在这里不做任何线性代数,只是纯粹将数学公式应用于长向量。

[Test]
public void TestFunctionEval()
{
    int numObj = 2;
    int m = 100000;
    Func<double[], double[]> fun1 = (x) =>
    {
        double[] z = new double[numObj];
        z[0] = x[0];
        double g = 1.0;
        for (int i = 1; i < x.Length; i++)
            g = g + 9.0 * x[i] / (m - 1);
        double h = 1.0 - Math.Sqrt(z[0] / g);
        z[1] = g * h; …
Run Code Online (Sandbox Code Playgroud)

c# numerical ilnumerics math.net

3
推荐指数
1
解决办法
2996
查看次数

雅可比迭代并未结束

我正在尝试在MATLAB中实现Jacobi迭代,但我无法使其收敛.我已经在网上和其他地方查找了用于比较的工作代码但是我找不到任何与我的代码类似的东西并且仍然有效.这是我有的:

function x = Jacobi(A,b,tol,maxiter)

n = size(A,1);
xp = zeros(n,1); 
x = zeros(n,1); 
k=0; % number of steps

while(k<=maxiter)
    k=k+1;

    for i=1:n
       xp(i) = 1/A(i,i)*(b(i) - A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x(i+1:n));
    end

    err = norm(A*xp-b);

    if(err<tol)
        x=xp;
        break;
    end

    x=xp;

end
Run Code Online (Sandbox Code Playgroud)

无论我使用什么A和b,这都会爆炸.这可能是我忽略的一个小错误,但如果有人能解释什么是错的,我将非常感激,因为这应该是正确的,但在实践中并非如此.

matlab numerical numerical-analysis numerical-methods

3
推荐指数
1
解决办法
4597
查看次数

使用浏览器内 JS 数值求解三角方程

给定变量sv、 和 的值h,并给定一个库(例如numeric.js),我如何在给定的精度范围内数值求解以下方程a

奇异超越三角方程

我想要一个在浏览器中使用的 JS 算法。

javascript math numerical numeric numerical-methods

3
推荐指数
1
解决办法
1451
查看次数

小数点 - 语言R中的概率值为0

如何治疗R中的p值?

我期待非常低的p值,如:

1.00E-80
Run Code Online (Sandbox Code Playgroud)

我需要-log10

-log10(1.00E-80)
Run Code Online (Sandbox Code Playgroud)

-log10(0)是Inf,但是在圆整的意义上也是Inf.

但似乎在1.00E-308之后,R收益率为0.

1/10^308  
[1] 1e-308

 1/10^309 
[1] 0
Run Code Online (Sandbox Code Playgroud)

p值显示的准确性与lm功能是否与截止点1e-308相同,或者它的设计使得我们需要一个截止点,我需要考虑一个不同的截止点 - 例如1e-100(对于例如)用<1e-100替换0.

numerical r probability decimal

2
推荐指数
1
解决办法
1156
查看次数

使用CBLAS的外部产品

我在使用CBLAS执行外部产品时遇到问题.我的代码如下:

//===SET UP===//
double x1[] = {1,2,3,4};
double x2[] = {1,2,3};
int dx1 = 4;
int dx2 = 3;
double X[dx1 * dx2];
for (int i = 0; i < (dx1*dx2); i++) {X[i] = 0.0;}

//===DO THE OUTER PRODUCT===//
cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasTrans, dx1, dx2, 1, 1.0, x1, dx1, x2, 1, 0.0, X, dx1);

//===PRINT THE RESULTS===//
printf("\nMatrix X (%d x %d) = x1 (*) x2 is:\n", dx1, dx2);
for (i=0; i<4; i++) {
    for (j=0; j<3; j++) {
        printf ("%lf …
Run Code Online (Sandbox Code Playgroud)

c numerical linear-algebra scientific-computing

2
推荐指数
2
解决办法
2091
查看次数