首页 > 编程语言 >JavaScript 实现伽马算法

JavaScript 实现伽马算法

时间:2023-04-24 13:11:21浏览次数:30  
标签:return JavaScript 算法 let gamma 伽马 Math result

伽马函数是数学中的一个非常重要的函数,它在统计学、物理学等领域有广泛的应用,其中最重要的应用就在概率统计和计算机科学中。

接下来,我们来介绍如何使用JavaScript实现伽马算法。

  1. 递归实现
function gamma(x) {
  if (x === 1) {
    return 1;
  } else {
    return (x-1)*gamma(x-1);
  }
}

 

   

 

 

这是最基本的递归实现方法,如果对数值过大,可能会出现栈溢出的问题。

  1. 迭代实现
function gamma(x){
  if (x === 1) {
    return 1;
  }
  let result = 1;
  for(let i = 1; i < x; i++) {
    result = result * i;
  }
  return result;
}

 

 

 

 

 

 

这是一种使用循环的迭代实现方法,能够有效避免递归栈溢出的问题。

  1. Lanczos逼近法实现

Lanczos逼近法是一种利用有限个数项的级数近似计算伽马函数的方法,具有很高的精度和计算效率。

function gamma(x) {
  const p = [
    0.99999999999980993,
    676.5203681218851,
    -1259.1392167224028,
    771.32342877765313,
    -176.61502916214059,
    12.507343278686905,
    -0.13857109526572012,
    9.9843695780195716e-6,
    1.5056327351493116e-7
  ];
  let g = 7;
  if(x < 0.5) {
    return Math.PI / (Math.sin(Math.PI * x) * gamma(1 - x));
  }
  x -= 1;
  let a = p[0];
  const t = x + g + 0.5;
  for(let i = 1; i < p.length; i++) {
    a += p[i] / (x + i);
  }
  return Math.sqrt(2 * Math.PI) * Math.pow(t, x + 0.5) * Math.exp(-t) * a;
}

 

 

 

 

 

 

 

 

 

 

 

这段代码实现了Lanczos逼近法,使用了一个数组预先计算伽马函数的一些值,并使用其计算了伽马函数的值。Lanczos逼近法的精度较高,但需要注意需要满足 x>0 的条件。

以上三种方法是JavaScript实现伽马算法的常用方法,可以根据实际需要选择合适的算法

标签:return,JavaScript,算法,let,gamma,伽马,Math,result
From: https://www.cnblogs.com/gaosj20210301/p/17349113.html

相关文章

  • 回溯算法:剑指 Offer 38. 字符串的排列
    题目描述:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制:1<=s的长度<=8  classSolution{Set<String>res=newHashSet<>();publicString[]permutation(Strings){b......
  • 前端进化笔记-JavaScript(一)
    简介:实现:三部分ecmascript语言核心DOM文档对象模型BOM浏览器对象模型DOM:用于html的应用程序接口(API),把整个页面映射成一个多层节点结构。例如:<html> <head> <title>samplepage</title> </head> <body> <p>helloworld</p> </body></html>DOM......
  • JavaScript 基础问答
      JavaScript数据类型有哪几种?  一共有五种:number、string、object、boolean、undefined.其中最后一个是定义变量后没有赋值介绍隐式类型转换字符串+数字=字符串;字符串-数字=数字;+数字字符串=数字null经过数字转换之后会变为0undefined经过数字转换之后会变为NaN......
  • 抖音视频播放量 视频搜索接口算法 XG XK 算法 设备注册
    Q44804487于2022-08-2221:31:48发布1067收藏11文章标签:音视频ios版权最近应客户要求研究了下抖音搜索视频和播放视频的接口现在已做完放出部分接口给大家参考下注:全套需要配合抖音设备使用视频搜索接口   defsearch_video_ios(query,page,sort_type,publish_time......
  • 抖音直播间人气接口算法 抖音协议
    Q44804487于2022-04-0210:15:54发布6525收藏26文章标签:python版权因为业务需要最近研究了下抖音直播间接口发现只要一直给一个接口发送心跳包就能保持这个用户的在线状态有些团队用这个实现直播间刷虚假人气上代码片段有感兴趣的可以一起交流学习    defbullet_chat......
  • 五分钟理解Java算法的时间复杂度
    关注我了解更多Java技术知识,带你一路“狂飙”到底!上岸大厂不是梦!前言时间复杂度主要是为了反映函数的执行时间随着输入规模增长而变化的规律,在一定程度上可以体现程序的执行效率和算法的优劣。作为程序员,掌握基本的算法时间复杂度的计算是很有必要的。时间复杂度介绍理论上,执......
  • 二叉树的遍历(递归算法)
    //二叉树的遍历(递归算法)#include<stdio.h>#include<malloc.h>typedefstructBiTNode{intdata;structBiTNode*lchild,*rchild;//存储二叉树的左孩子和右孩子}BiTNode,*BiTree;voidInitTree(BiTree&root){root=(BiTNode*)malloc(sizeof(BiTNo......
  • Javascript数据类型
    值类型和引用类型原始类型(alias:值类型,基础类型)primitive:stringnumberbooleannullundefinedsymbol引用类型:Object其他内置Object派送类型ArrayFunctionMapSetWeakMapWeakSetRegExpNaN:特殊的Number类型,IsNaN()判断一个值是否为NaN引用类型可以有......
  • 算法学习day05数组part扩展-69、35、34
    packageLeetCode.arraypart01;/***69.x的平方根*给你一个非负整数x,计算并返回x的算术平方根。*由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。*注意:不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。*示例:*输入:x=......
  • 2023-04-23 算法面试中常见的动态规划问题
    动态规划1什么是动态规划以菲波那切数列求和为例,通过1.普通的递归2.引入记忆数组memo3.自下而上地解决问题,即动态规划动态规划的定义dynamicprogramming(alsoknownasdynamicoptimization)isamethodforsolvingacomplexproblembybreakingitdowninto......