手搓指数函数实现

1.概况

最近博主有使用指数函数的需求,需要一条在第一象限、底数为10的曲线。但是由于芯片资源有限,所以无法使用数学库。不能调用数学库里面的指数函数。于是就在网上找了一圈,发现毫无质量。
1.只考虑到了整数次幂的简单情况。

2.要么就是调用数学库,没有一个有用的。

于是打算自己手搓一个指数函数。

2.算法

首先要想实现指数函数,我们需要知道怎么去计算指数函数。简单的比如 101 = 10

102 = 10 * 10 =100

103 = 10* 10 * 10 = 1000
倘若我拿出小数次幂,阁下又该如何应对。
比如:10^0.001的值是多少?

100.001 = ?

elna = a

100.001 = eln2 0.001

泰勒展开公式:ex =
ex=1+x\frac1!+x2/2!+x3/3!+⋯,-∞<x<∞

3.代码实现示例

float pow(float x, int y) 
{if (y == 0)return 1;float result = 1.0;int i;for (i = 0; i < y; i++) {result *= x;}return result;
}int factorial(int y) {if (y == 0)return 1;float result = 1.0;int i;for (i = 1; i <= y; i++) {result *= i;}return result;
}float my_pow10(float z)
{int intPart = (int)z;float fractionalPart = z - intPart;float intResult = 1;float ln10_value = 2.302585;float fff;fff = ln10_value *fractionalPart;intResult+= fff;for (int i=2;i<=12;i++){ intResult+= pow(fff,i)/jie(i);}return intResult*pow(10,intPart);
}

3.1.代码解析

此代码示例只是博主为了实现自己需求求以10为底的在第一象限的指数曲线,仅供参考,大家若有其他指数需求可模仿开发

3.1.1计算原理

参数从my_pow10中输入(0~无穷),
根据指数法则:10a * 10b = 10(a+b)将传入的参数分为整数部分和小数部分。小数部分值用函数factorial计算泰勒展开值。整数部分用函数pow计算。最终将两部分值相乘输出。

3.1.2计算精度控制

代码中精度控制为代码中的循环次数,若循环次数更多则结果更逼近最终结果,博主这里精度算到12以满足,如需要更高精度,修改这里的循环次数即可。

for (int i=2;i<=12;i++)
{ intResult+= power1(fff,i)/jie(i);
}

4.总结

本文博主示范了以10为底的指数函数实现,若实现其他为底的,可以模仿这个实现。能实现小数次幂的指数计算,可以说泰勒展开真的是功不可没。很难想象在还没有泰勒展开以前人们对求小数次幂毫无办法。膜拜这些伟大的数学家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879565.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝详情页批量抓取组合商品价格

需求:客户需要抓取淘宝商品的不同组合价格,步骤如下图通过切换分类获取相应的价格 客户需求我们可以这样实现:循环点击产品分类,点击一次相应获取一次商品价格 1、首先商品价格,我们发现不同的商品参加活动不一,导致商品价格样式有多种如下2、商品价格样式的多样性使得价…

EvalPlanner:基于“计划-执行”双阶段的大语言模型评估框架

大语言模型(LLM)评估系统在生成思维链(Chain-of-Thought, CoT)序列时,需要系统地捕捉评估过程中的推理步骤。但是由于缺乏人工标注的CoT训练数据,以及预定义评估提示在复杂任务中的局限性,构建高质量的LLM评估模型面临重大挑战。另外手动调整评估指令的方法在面对多样化和复…

[网摘实践]基于本地部署DeepSeek+VSCode+Cline编写代码

前面的本地部署部分,我已经搭建好了。可以参考:https://www.cnblogs.com/haochuang/p/18700495 这里只是在本地基于模型搭建代码编写相关组件 使用deepseek-r1 + Vscode + Cline/Continue 构建本地代码编辑器 这个落地方案是实现本地代码编辑器,但是具体的效果见仁见智,pro…

docker compose搭建immich开源免费相册管理工具

一、immich介绍 1.1 immich简介直接从您的手机自托管照片和视频备份解决方案。1.2 immich注意事项该项目正在非常积极的开发中。⚠️预计会出现错误和重大更改。 ⚠️ 请勿将该应用程序用作存储照片和视频的唯一方式。 ⚠️始终遵循 3-2-1 备份计划,为您珍贵的照片和视频! 1.…

vue3支持低版本浏览器

安装包 npm install @vitejs/plugin-legacy -D #如果打包不了,安装terser包,如果能正常打包,不安装这个包也可以 npm install terser -D在vite.config.ts文件中添加如下配置 import legacy from @vitejs/plugin-legacy export default defineConfig({plugins: [vue(), legac…

【运维自动化-作业平台】如何使用全局变量之数组类型?

数组类型的全局变量也是作业平台里常用的,支持关联数组和索引数组,目前仅支持shell,语法跟shell一致。索引数组 语法 arry=(1 2 3 a b c) ---定义一个数组arry ${arry[*]} ---获取所有数组元素 ${arry[@]} ---获取所有数组元素 ${arry[0]} --获取第一个数组元素实操演示 1、…

用 DeepSeek 分析,SaaS 多租户的3种隔离模式,结果。。。

大家好,我是汤师爷~ 在SaaS模式下,多租户之间的资源隔离是基础且关键的一环。 SaaS服务商需要在确保运营效率和控制成本的前提下,搭建一个让多个租户能够同时访问的共享环境。 虽然大家都在用同一套SaaS产品服务,但资源访问必须严格隔离,确保租户之间互不干扰。 下面,介绍…

HTTP和HTTPS的区别和作用

HTTP和HTTPS的区别和作用:一、核心区别(分点清晰)协议安全性HTTP:明文传输,数据无加密,易被窃听(如登录密码、用户隐私泄露)。 HTTPS:HTTP + TLS/SSL加密层,数据在传输前加密(使用对称加密传输数据 + 非对称加密交换密钥),防止中间人攻击。默认端口HTTP默认80端口…

DeepSeek-R1真算得上开源吗?

1 啥是 DeepSeek-R1? 如你曾为一道棘手数学题绞尽脑汁,就明白多花时间仔细思考多重要。OpenAI o1 模型证明,当 LLM 在推理时,通过增加计算量进行类似训练后,它们在数学、编程和逻辑等推理任务上的表现显著提升。 然而,OpenAI 推理模型的训练方法一直是秘密。直到DeepSee…

WPS:如何创建序号列表:一、1.1、1.1.1

目标:生成如下图所示的多级标题序号 步骤: 1)修改样式标题1 2)格式→编号在多级编号中选择如下编号序列点击右下角的自定义,修改编号样式为一,二,三……(如果该项为灰色,无法修改,请取消勾选右下角的正规形式编号) 此时在右边的预览中可以看到一级序号已经变为汉字…

DataFrame 的rolling()函数

rolling参数 DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)window:表示时间窗口的大小;可省略不写。两种形式:int和offset。如果使用int,数值表示计算统计量的观测值的数量即向前几个数据。如果是offset类型,…