C++运算符重载如何模拟数学表达式,或模拟Python sympy和numpy

在人工智能数学基础一书中,下面是一题Python求函数极限的例子:

【例2.6】使用Python编程求 lim( x → 1) (x^2 - 1 / x - 1)


—————————————————————————————————————————
import sympy

from sympy import oo #注意无究符号表示形式为两个小定字母o
import numpy as np
x = sympy.Symbol('x') #注意Symbol首字母大写

f = (x ** 2 - 1) / (x-1) # 定义极限表达式

lim = sympy.limit(f,x,1)
print(lim)

2
—————————————————————————————————————————

import sympy
from sympy import oo
import numpy as npx = sympy.Symbol('x')f = (x**2-1) / (x-1)print(sympy.limit(f,x,1))

这Python带的库真的是强大。

下面我们如果用C++来模拟,注意:下面代码只是最初构思,运算符重载还要修改。

#include "X:\Work\Share\CCode\CPlatform\Math\_math_out.h"using namespace lf;int main()
{ga.initialize();_Variable x;_function f;//f(x) = (x ^ 2 - 1) / (x - 1);	 f(x) = (x ^ 2 - 1 ) / (x - 1);_cout << f.limit() << _t("\n");return 0;
}

运行结果,这里没有添加任何库:

_Variable定义和_function定义:

class _Variable  : public _Object
{
private:_DList<_Variable> _multiple;
public:_Variable();~_Variable();_Variable operator-(const int& n) const;_Variable operator+(const int& n) const;_Variable operator/(const int& n) const;_Variable operator/(const _Variable& other) const;// 重载加法运算符_Variable operator+(const _Variable& other) const;_Variable operator*(const _Variable& other) const;_Variable operator^(const _Variable& other) const;_Variable operator^(const size_t& nPower) const;
private:};class _function : public _Object
{
public:_function(const _Variable& v);_function();_function& operator()(const _Variable& other);_Variable limit()const;
};//--------------------------------------------------------_Variable::_Variable()
{}_Variable::~_Variable()
{}_Variable _Variable::operator-(const int& n) const
{_cout << _t("_Variable _Variable::operator-\n");return _Variable();
}_Variable _Variable::operator+(const int& n) const
{_cout << _t("_Variable _Variable::operator+\n");return _Variable();
}_Variable _Variable::operator/(const int& n) const
{_cout << _t("Variable _Variable::operator/\n");return _Variable();
}_Variable _Variable::operator/(const _Variable& other) const
{_cout << _t("_Variable::operator/\n");return _Variable();
}_Variable _Variable::operator+(const _Variable& other) const
{_cout << _t("_Variable _Variable::operator+\n");return _Variable();
}_Variable _Variable::operator*(const _Variable& other) const
{_cout << _t("_Variable _Variable::operator*\n");return _Variable();
}_Variable _Variable::operator^(const _Variable& other) const
{_cout << _t("_Variable::operator^\n");return _Variable();
}_Variable _Variable::operator^(const size_t& nPower) const
{_cout << _t("_Variable::operator^\n");return _Variable();
}_function::_function(const _Variable& v)
{
}_function::_function()
{
}_function& _function::operator()(const _Variable& other)
{_cout << _t("_function::operator()\n");return  *this;
}_Variable _function::limit() const
{_cout << _t("这里求函数极限!\n");return _Variable();
}

下一步,完善_Variable 和 _function 这两个类。 

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

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

相关文章

医疗大数据现状及发展问题探讨

医疗大数据&#xff0c;作为近年来备受瞩目的领域&#xff0c;其发展和变化的速度之快令人瞩目。从最初的概念炒作到如今的实际应用&#xff0c;短短三年多的时间&#xff0c;我们已经见证了医疗大数据领域的巨大变革。 临床数据的公开透明&#xff0c;为医疗大数据的利用提供…

Java基础知识总结(41)

&#xff08;1&#xff09; 在Java语言中&#xff0c;根据定义变量的位置不同&#xff0c;可以将变量分成两大类&#xff1b;成员变量和局部变量。 &#xff08;2&#xff09;成员变量 成员变量包括类变量&#xff08;用static修饰的变量&#xff09;和实例变量&#xff08;不用…

用Skimage学习数字图像处理(018):图像形态学处理(上)

本节开始讨论图像形态学处理&#xff0c;这是上篇&#xff0c;将介绍与二值形态学相关的内容&#xff0c;重点介绍两种基本的二值形态学操作&#xff1a;腐蚀和膨胀&#xff0c;以及三种复合二值形态学操作&#xff1a;开、闭和击中击不中变换。 目录 9.1 基础 9.2 基本操作…

ubuntu远程服务部署,Docker,蓝牙无线局域网,SSH,VNC,xfce4,NextTerminal,宝塔,NPS/NPC,gost,openwrt

开机启动 /lib/systemd/system/rc-local.service 添加 [Install] WantedBymulti-user.target Aliasrc-local.service/etc/rc.local #!/bin/sh 添加开机启动需要执行的脚本sudo chmod 777 /lib/systemd/system/rc-local.service sudo chmod x /etc/rc.local #systemctl dis…

漫谈GIS和空间数据库技术

1 GIS和CAD有啥区别 地理信息系统&#xff08;GIS&#xff09;和计算机辅助设计&#xff08;CAD&#xff09;是两种不同的技术&#xff0c;它们在功能、应用和数据处理方面有着显著的区别。以下是根据搜索结果得出的GIS和CAD的主要区别&#xff1a; 1. **数据处理的侧重点不同…

金陵科技学院软件工程学院软件工程专业

感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦~~ 感兴趣的小伙伴可以私信我哦~~ 是笔者写的各种高质量作业和实验哦…

【其他】灾害预警,科技助力:手机地震预警功能设置指导

22024年4月3日7时58分在台湾花莲县海域遭遇了一场7.3级的强烈地震&#xff0c;震源深度12公里&#xff0c;震中位于北纬23.81度&#xff0c;东经121.74度&#xff0c;距台湾岛约14公里。震中5公里范围内平均海拔约-3560米。这场突如其来的自然灾害给当地居民的生活带来了巨大的…

从永远到永远-Git中tag的使用

Git中tag的使用 1.tag的作用2.使用背景3.tag的使用1.种类2.创建标签3.查看标签3.推送标签4. 删除标签: 4.idea可视化操作1.创建标签2.推送标签 999 删除、指定commit、验证暂时不表 1.tag的作用 Tag(标签)用来记录某个特定的提交(commit)。一个 Tag 被用来标记重要的历史节点&…

物联网实战--入门篇之(八)嵌入式-空气净化器

目录 一、风扇调速 二、通讯协议 三、净化器运行逻辑 一、风扇调速 单片机是不能直接驱动电机的&#xff0c;因为主芯片的驱动电流比较小(50mA左右)&#xff0c;他们之间正常还要有个电机驱动器&#xff0c;常用的有TB6612、L298和L9110等&#xff0c;目前项目用的这个电机它…

工具篇之Hutool

一、概述 1.1介绍 Hutool是一个小而全的Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xff0c;使Java拥有函数式语言般的优雅&#xff0c;让Java语言也可以“甜甜的”。 Hutool中的工具方法来自于每个用户的精雕细…

猫头虎技术分享 || 断网了,还能ping127.0.0.1吗?

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

【数据分析面试】6.计算对话总数(SQL)

题目&#xff1a;计算对话总数 给定了名为 messenger_sends 的消息发送表格&#xff0c;找出总共有多少个唯一的对话。 注&#xff1a;在某些记录中&#xff0c;receiver_id 和 sender_id 从初始消息中互换了。这些记录应视为同一个对话。 示例&#xff1a; 输入&#xff1…

Linux进程控制 Part 1

Linux进程控制 文章目录 Linux进程控制Linux系统任务管理的方法PCB的原型 Linux查看获取进程id的方式现象解释 Linux 进程的状态首先学习查看进程状态的命令常见的几种状态僵尸进程的危害 孤儿进程&#xff1a; 进程优先级概念&#xff1a;PRI and NI查看进程优先级的命令 环境…

wordpress全站开发指南-面向开发者及深度用户(全中文实操)--php函数

php函数 wordpress会封装一部分函数&#xff0c;比如bloginfo该函数的作用是直接调用你设置的你的网站的名称 示例 This is our amazing custom theme <?php echo 22; function myfirstfunction(){ echo 33; echo "<p>Hello ,this is my first function</…

2024-04-02(js)

1.将函数A作为参数传递给函数B&#xff0c;称A为回调函数 2.插件&#xff1a;就是别人写好的一些代码&#xff0c;我们只需要复制对应的代码&#xff0c;就可以直接实现对应的效果 3.js是一种单线程语言&#xff0c;同一时间只能做一件事 4.js先执行完所有的同步任务&#x…

【pycharm】在debug循环时,如何快速debug到指定循环次数

【pycharm】在debug循环时&#xff0c;如何快速debug到指定循环次数 【先赞后看养成习惯】求关注收藏点赞&#x1f600; 在 PyCharm 中&#xff0c;可以使用条件断点来实现在特定循环次数后停止调试。这可以通过在断点处右键单击&#xff0c;然后选择 “Add Breakpoint” -&g…

力扣刷题部分笔记

Leetcode 力扣刷题笔记&#xff0c;记录了几个月来的题目记录&#xff0c;将会继续保持刷题~ 2024.01 1768.交替合并字符串 创建字符串不需要声明长度&#xff08;动态分配内存&#xff09;&#xff0c;push_back()可以加入某个字符&#xff0c;append()一般用于添加字符串…

MySQL基础【语句执行顺序】

一个SQL语句它的执行顺序对于我们思考题意有着很重要的关系 题意就是&#xff1a;找出哪些只逛超市不买单的人&#xff08;买单0元也算哦&#xff0c;可能是使用的是代金券吧&#xff09; 看到此题关键找出两个数据 参观过的人 和 买单的人 他们的差就是白嫖的人&#xff08;支…

包子凑数【蓝桥杯】/完全背包

包子凑数 完全背包 完全背包问题和01背包的区别就是&#xff0c;完全背包问题每一个物品能取无限次。 思路&#xff1a;当n个数的最大公约数不为1&#xff0c;即不互质时&#xff0c;有无限多个凑不出来的&#xff0c;即n个数都可以表示成kn&#xff0c;k为常数且不为1。当n个…

H12-821_182

182.当0SPF运行在广播型网络中时&#xff0c;需要选举DR和BDR。那么以下哪一种状态会进行DR和BDR的选举? A.2-way B.Full C.Exchange D.Init 答案&#xff1a;A 注释&#xff1a; 每台路由器发送的hello报文都有DR字段和BDR字段。 路由器接口刚开始运行OSPF时&#xff0c;在等…