QuickJS 如何计算黄金分割率 ?

WSL 安装 Debian 12 后,Linux 如何安装 curl , quickjs ? 在 WSL 中的 Debian 12 系统上安装 curl 容易,安装 QuickJS 要通过源码编译的方式完成。 阅读详情

参阅:bellard.org‌ : QuickJS 如何使用 qjs 执行 js 脚本

在 QuickJS 中计算黄金分割率(φ)有多种方法,以下是几种精确且高效的计算方案:

1. 直接数学公式计算(推荐)

// 黄金分割率 φ = (1 + √5)/2 ≈ 1.618033988749895
function goldenRatio() {
    return (1 + Math.sqrt(5)) / 2;
}

// 使用示例
console.log("黄金分割率:", goldenRatio());  // 1.618033988749895

2. 斐波那契数列逼近法

function fibonacciGoldenRatio(precision = 15) {
    let a = 1n, b = 1n;  // 使用 BigInt 避免整数溢出
    
    // 计算足够大的斐波那契数
    for (let i = 0; i < precision + 10; i++) {
        [a, b] = [b, a + b];
    }
    
    // 计算比例 b/a
    const ratio = Number(b * 1000000000000000n / a) / 1000000000000000;
    return ratio;
}

// 使用示例
console.log("斐波那契逼近:", fibonacciGoldenRatio(20));  // 1.618033988749895

3. 连分数表示法(数学精确)

function continuedFraction(depth = 20) {
    let result = 1;
    for (let i = 0; i < depth; i++) {
        result = 1 + 1 / result;
    }
    return result;
}

// 使用示例
console.log("连分数计算:", continuedFraction(50));  // 1.618033988749895

4. 代数方程解法(解 φ² = φ + 1)

function solveQuadratic() {
    // 解方程 x² - x - 1 = 0
    const a = 1, b = -1, c = -1;
    const discriminant = b * b - 4 * a * c;
    return (-b + Math.sqrt(discriminant)) / (2 * a);
}

5. 精确计算模块(高精度)

// 高精度计算模块
const GoldenRatio = {
    // 精确值表达式
    EXACT: "(1 + √5)/2",
    
    // 数值计算
    value: function(precision = 15) {
        const sqrt5 = Math.sqrt(5);
        const phi = (1 + sqrt5) / 2;
        return Number(phi.toFixed(precision));
    },
    
    // 生成斐波那契数列
    fibonacci: function(n) {
        const phi = this.value(20);
        // 使用通项公式 Fₙ = (φⁿ - (-φ)⁻ⁿ)/√5
        return Math.round((Math.pow(phi, n) - Math.pow(-phi, -n)) / sqrt5);
    }
};

// 使用示例
console.log("精确值表达式:", GoldenRatio.EXACT);
console.log("数值计算:", GoldenRatio.value(20));
console.log("斐波那契第10项:", GoldenRatio.fibonacci(10));  // 55

黄金分割率特性验证

// 验证 φ = 1 + 1/φ
const phi = GoldenRatio.value(20);
console.log("验证 φ = 1 + 1/φ:", phi === 1 + 1/phi);  // true(计算误差内)

// 验证 φ² = φ + 1
console.log("验证 φ² = φ + 1:", Math.abs(phi*phi - phi - 1) < 1e-15);  // true

应用示例:黄金矩形生成

function createGoldenRectangle(width) {
    const phi = (1 + Math.sqrt(5)) / 2;
    return {
        width: width,
        height: width / phi,
        // 分割点:按黄金比例分割
        splitPoint: width / phi
    };
}

// 创建黄金矩形
const rect = createGoldenRectangle(1000);
console.log(`
  黄金矩形尺寸:
  宽度: ${rect.width.toFixed(2)}px
  高度: ${rect.height.toFixed(2)}px
  黄金分割点: ${rect.splitPoint.toFixed(2)}px
`);

关键数学知识

  1. 黄金分割率定义:

    φ = \frac{1 + \sqrt{5}}{2} \approx 1.6180339887...
    
  2. 独特数学性质:

    • φ = 1 + 1/φ
    • φ² = φ + 1
    • φ = [1; 1, 1, 1, …] (连分数表示)
  3. 斐波那契关联:

    \lim_{n \to \infty} \frac{F_{n+1}}{F_n} = \phi
    

各方法对比

方法精度计算速度适用场景
直接公式计算★★★★☆极快通用计算
斐波那契逼近★★☆☆☆慢教学演示
连分数迭代★★★☆☆中等展示数学表示
代数方程解法★★★★☆快数学原理验证
高精度模块★★★★★快科学计算、精确设计

建议在 QuickJS 中使用直接公式计算法,它既精确又高效。对于需要高精度的场景(如金融或设计领域),可使用高精度模块并设置更多小数位。


code goal

技术前沿:半导体前道检测和量测设备修复技术 半导体前道检测设备是目前除光刻机外,国产渗透率较低的环节之一,近年来我国初步实现国产突破。前道检测相对后道检测环节壁垒更高,国内多家涉及后道测试,涉及前道检测和中道检测相对较少。 阅读详情

相关推荐

D触发器(D Flip-Flop)与D锁存器(D Latch)

在解释这个练习题之前,我们先来简单回顾一下D触发器(D flip-flop)和D锁存器(D latch)的概念,以及它们在数字电路中的作用。这将帮助我们理解所提到的练习。

weixin_65190179的博客 9166

demo11:斐波那契数列+黄金分割

3.熟悉的斐波那契数列(1 1 2 3 5 8...)+黄金分割(0.618) (1)斐波那契数列(也被叫做生兔子问题,感兴趣可以去搜了解了解) 分析规律:除前两个数字外,其余数字都等于前两个数字之和:f(n)=f(n-1)+f(n-2) a.代码如下:(使用数组解决) #include<stdio.h> int main(){ int n=0,i=2; printf("请输入要打印多少个数:\n"); scanf("%d",&n); int arr[n]={1,1};

m0_56194716的博客 544

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 295

javascript:d3.js 读取csv , 画折线图

参考 https://blog.youkuaiyun.com/github_37483541/article/details/54934158 d3_csv_line1.html <!DOCTYPE html> <html> <head> <meta charset='gb2312' /> <script src="/d3/d3.v3.min.js"&...

belldeep的专栏 4607

【编号326】全国地灾数据全国25万多个地质灾害点空间分布数据

全国地质灾害点分布数据涵盖25万多个各类灾害点信息,为灾害防治提供重要依据。通过分析灾害分布规律,可识别高风险区,指导监测预警、应急避险和基础设施建设。多地成功案例(如湖北兴山崩塌避险、重庆长寿滑坡预警、湖南"挪床行动")证明,提前预警和科学防治能有效避免人员伤亡。云南省2024年通过预警体系成功避让31起灾害,保护1342人生命安全。这些实践表明,地质灾害防治需结合科技手段与群防体系,实现早预警、早处置。

千奇百怪无奇不有 1471

手把手教你用STM32实现SPWM逆变器控制(附完整代码)

本文提供了一份基于STM32实现SPWM逆变器控制的完整实战指南。文章从硬件选型(如STM32F103C8T6、IR2104驱动器)入手,详细解析了利用定时器TIM1生成SPWM波形的核心原理与代码实现,并涵盖了驱动电路、全桥功率电路及LC滤波器的设计要点与调试技巧,旨在帮助读者从零构建一个可靠的单相全桥逆变器系统。

weixin_29208327的博客 589

java : mozilla rhino js引擎 使用教程

https://mozilla.github.io/rhino/ 下载 rhino1_7R5.zip , 解压后运行 cmd cd D:\rhino\rhino1_7R5 先测试最简单的: java -jar js.jar swing1.js var SwingGui = new JavaImporter(javax.swing, javax.swing.event, javax.swin...

belldeep的专栏 2696

C#串口通信从入门到精通(5)——打开、关闭串口

本文详细介绍如何打开串口

qq_34059233的博客 6781

vue:vite 代理服务器 server: proxy 配置

vue 3:vite 代理服务器 server: {proxy: 配置};还有 http-proxy-middleware

belldeep的专栏 2303

《Linux GPU 驱动核心机制:面向图形与 AI 计算的 DRM 内存管理与任务调度》 目录

本文以缓冲区对象(BO)生命周期为主线,系统解析 Linux DRM 子系统中 GPU 驱动的核心机制。涵盖 GEM 与 TTM 内存管理、dma-buf/dma-fence 共享同步、GPU 调度与地址空间管理,结合 amdgpu、Xe 等驱动代码,深入剖析其设计动机与实现逻辑。旨在填补中文领域对 GPU 内核机制系统性讲解的空白,为图形与 AI 计算场景下的内存泄漏、同步死锁等疑难问题提供可追溯的分析路径。

图形/计算GPU的驱动与虚拟化技术分享园地 3721

UG NX二次开发-博客文章速览

写了一些UG NX二次开发的心得体会,内容较多,感觉不好查找相应的内容,所以决心把导航写出来,方便自己也方便读者。主专栏是“”,C#专栏为 : “” ,Python专栏为 : “这三个专栏都会持续的更新。如果有需要咨询或者学习讨论的,请私信博主或者加QQ群:749492565。博主几乎每天都在。

GimiGimmy 3714

javascript:echarts 画基金周K线图

以广发双擎升级混合基金 (005911)为例 W005911.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> echarts Kline </title> <!-- 引入ECharts文件 --> ...

belldeep的专栏 1700

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5831

RGraph : svg : 玫瑰图

www.rgraph.net 下载 RGraph.minified-2018-08-14.zip 解压后,将目录 libraries 简化为: lib rose图例子: RGraph/svg_rose1.html [code="html"] RGraph : SVG rose charts API ...

belldeep的专栏 1653

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

vite:npm 安装 pdfjs-dist , PDF.js View 预览功能示例

pdfjs-dist 是 Mozilla 的 PDF.js 库的预构建版本,能让你在项目里展示 PDF 文件。

belldeep的专栏 1633

VC中sqlite的使用

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

node.js 使用 elementtree 生成思维导图 Freemind 文件

node.js 读目录.txt文件,使用 elementtree 生成思维导图 Freemind(.mm)文件

belldeep的专栏 1568

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

QuickJS 在生物化学计算中的应用

QuickJS 是一款轻量级的 JavaScript 引擎,下面为你介绍 QuickJS 在生物化学计算里的一些具体应用场景以及实现示例。

belldeep的专栏 1464

pywebview 通过 JSBridge 调用本地 python程序

pywebview 通过 JSBridge 调用本地 python程序;运行python show_pywebview.py 如果 Win 10 上也运行不了,可能是调用了 IE11 的 MSHTML内核, 修改webview.start(gui='cef', debug=True)

belldeep的专栏 1424

nodejs:express 调用本地 python程序

假设已经安装好 nodejs ; cd /js/node_js ; 安装在当前目录的 node_modules/ ; npm install express --save; 运行 node server.js ; jQuery.ajax 读取文本文件

belldeep的专栏 1400

p5.js:sound(音乐)可视化,动画显示音频高低变化

通过4个案例介绍了使用 p5.js 进行音乐可视化的实践,包括将音频振幅转化为图形、生成波形图。fft: 快速傅里叶变换

belldeep的专栏 1322

node.js 读目录.txt文件,用 xml2js 转换为json数据,生成jstree所需的文件

node.js 读目录.txt文件,用 elementtree 生成 xml,用 xml2js 转换为json数据,ejs 生成 jstree模板所需的文件。

belldeep的专栏 1183

python:lxml 读目录.txt文件,用 xmltodict 转换为json数据,生成jstree所需的文件

python 读目录.txt文件,用 lxml etree 生成 xml,用 xmltodict 转换为 json数据,jinja2 生成 jstree模板所需的文件。

belldeep的专栏 1180

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳。创建互动分形树

belldeep的专栏 1142

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 140

React 性能:memo / useMemo / useCallback

讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。

JudithHuang的博客 325

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346
上一篇: 开源版 PyMOL 如何绘制 新冠病毒 分子结构?
下一篇: 黄金分割率在生物化学中的应用
belldeep
博客等级 码龄20年 1820粉丝 584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值