精华内容
下载资源
问答
  • c++常见面试题:求正数a的平方根的迭代公式为:xn+1=(xn+a/xn)/2。建立一个类SQRT,用来求某正数平方根的近似值。具体要求如下:(1)私有数据成员float n:存放某个正数。float sq:存放正数n的近似平方根。(2)...

    c++常见面试题:

    求正数a的平方根的迭代公式为:xn+1=(xn+a/xn)/2。建立一个类SQRT,用来求某正数平方根的近似值。具体要求如下:

    (1)私有数据成员

    float n:存放某个正数。
    float sq:存放正数n的近似平方根。
    (2)公有成员函数
    void set(int m):用m初始化n。
    void calc():用上述迭代公式计算正数n的平方根,要求前后两次求出的根的近似值之差的绝对值小于10-5。
    void print():输出n及sq的值。
    (3)在主函数中对该类进行测试。
    定义实型变量m和类SQRT的对象s。
    给m赋值。
    调用对象s的set成员函数,设置s的数据成员n为m的值。
    调用对象s的calc成员函数,计算n的近似平方根。
    调用对象s的print成员函数,输出n及对应的平方根。

    牛顿迭代法求平方根的相关解释
    求n的平方根,先假设一猜测值X0 = 1,然后根据以下公式求出X1,再将X1代入公式右边,继续求出X2…通过有效次迭代后即可求出n的平方根

    xn+1=(xn+a/xn)/2   (迭代公式)

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    class SQRT
    {
    private:
        float n;
    	float sq;
    	
    public:
        void set(float m);
    	void calc();
    	void print();	
    };
    
    void SQRT::set(float m)
    {
    	n=m;
    }
    
    void SQRT::calc()
    {
    	float x1=1.0;
    	float x2;
    	do
    	{
    	     x2=(x1+n/x1)/2;
    		if( fabs(x2-x1) < 0.00001 )
    		{
    			break;
    		}
    		x1=x2;
    	}
    	while(1);    //fabs的作用是用来求浮点数的绝对值
    	
    	sq=x2;
    }
    
    void SQRT::print()
    {
    	cout << n << "的平方根是" << sq << endl;
    }
    
    int main()
    {
    	float m;
    	cout << "please input a number: " << endl;
    	cin >> m;
    	
    	SQRT s;
    	s.set(m);
    	s.calc();
    	s.print();
    	
    	return 0;
    }














    展开全文
  • 递归与迭代

    2019-10-08 23:54:24
     递归与迭代是计算机中常见的两种循环方式;  递归:指程序调用自身的编程思想,即一个函数调用本身; 迭代:利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想;  递归是将大问题化为相同结构的...

    迭代与递归的解释

      递归与迭代是计算机中常见的两种循环方式;

      递归:指程序调用自身的编程思想,即一个函数调用本身;
      迭代:利用已知的变量值,根据递推公式不断演进得到变量新值得编程思想;

      递归是将大问题化为相同结构的小问题,从待求解的问题出发,一直分解到已经已知答案的最小问题为止,然后再逐级返回,从而得到大问题的解;
      迭代是从已知值出发,通过递推式,不断更新变量新值,一直到能够解决要求的问题为止。

      递归要分为两部分来看到,'递'是将问题层层往下传递,'归'是将答案层层往上回答

     

      递归算法从思想上更加贴近人们处理问题的思路,而且所处的思想层级算是高层(神),而迭代则更加偏向于底层(人),所以从执行效率上来讲;底层(迭代)往往比高层(递归)来的高,但高层(递归)却能提供更加抽象的服务,更加的简洁。
      在循环的次数较大的时候,迭代的效率明显高于递归。大量的递归调用会建立函数的副本,会耗费大量的时间和内存。而迭代则不需要反复调用函数和占用额外的内存。


      经典的话:迭代是人,递归是神!“普通程序员用迭代,天才程序员用递归”

    相同点:

      1、递归和迭代都是循环的一种

    不同点:

      1、程序结构不同;
        递归是重复调用函数自身实现循环
        迭代是函数内某段代码实现循环;其中,迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。
      2、算法结束方式不同;
        递归循环中,遇到满足终止条件的情况时逐层返回来结束
        迭代则使用计数器结束循环

      3、效率不同;
        在循环的次数较大的时候,迭代的效率明显高于递归

    递归优缺点

      优点

    • 大问题化为小问题,可以极大的减少代码量;
    • 用有限的语句来定义对象的无限集合.;
    • 代码更简洁清晰,可读性更好

     

      缺点

    • 递归调用函数,浪费空间;
    • 递归太深容易造成堆栈的溢出

     

    迭代优缺点

      优点

    • 迭代效率高,运行时间只因循环次数增加而增加;
    • 没什么额外开销,空间上也没有什么增加

     

      缺点

    • 代码不如递归简洁;
    • 编写复杂问题时困难。

    转载于:https://www.cnblogs.com/guge-94/p/10509074.html

    展开全文
  • DAX函数

    2020-11-23 09:02:16
    常见函数之前,我们要先了解DAX语法的结构。语法包含总成公式的不同元素。 语法包含以下元素: 等号运算符(=) 引用列 [列名] ,公式中的列引用用方括号[]括起来,与引用单元的Excel不同,DAX公式

    DAX框架:三个非常重要的基础概念,语法、函数和上下文。

    DAX度量值的工作原理就是筛选和计算。用于计算的函数和Excel有很多相似的,但Excel可以应用于单个单元格或行列,DAX只能引用完整的表或列。所以这时候筛选函数就有很大的价值了,在配合聚合,时间智能,迭代等函数,那么对数据的处理就游刃有余了。

    在常见函数之前,我们要先了解DAX语法的结构。语法包含总成公式的不同元素。
    语法包含以下元素:
    等号运算符(=)
    引用列 [列名] ,公式中的列引用用方括号[]括起来,与引用单元的Excel不同,DAX公式始终引用列
    数学运算符(+ - * / 等等)

    接下来看一个度量值公式:
    销售额总计 := SUM( FactSales [ SalesAmount ])
    度量值公式在度量值名称后面用冒号等号“:=”.
    FactSales 是一个引用表
    SalesAmount 是 FactSales表中 的一个列

    DAX相比于Excel,有以下几个独特点:

    • DAX函数始终引用完整的列或表,如果要引用表或列中特定的值,就需要向公式中添加筛选器
    • 如果需要逐行自定义计算,DAX函数可提供让你使用当前值或相关值作为一种参数来执行计算的函数(因上下文而异),所以就要了解上下文的相关信息
    • DAX包含的许多函数都将返回表,而不是返回值。表不会显示,它只会用于向其他函数提供输入。例如,你可以检索一个表,然后对表中的非重复数据进行计数;或者计算多个已筛选表或列的动态总和
    • DAX包含多种"时间智能"函数。利用这些函数,可以自定义选择日期范围,并基于它们做动态计算。

    上下文
    上下文是要了解的最重要的DAX概念之一。DAX中有两种上下文:行上下文,筛选上下文

    我们前面所说的计算列和度量值,都是在上下文中进行的。上下文这个概念非常使人迷惑,我们可以把 “上下文” 理解为 “环境” ,在特定环境下进行的计算。
    行上下文
    行上下文比较好理解,一般是计算列。例如 ‘’利润 = 价格-成本‘’
    筛选上下文
    如果我们在Excel中建立一个透视表,把度量值放到值的区域内,然后把需要的字段放到行/列的区域内,这样我们得到的透视表中的每个值都是行和列进行筛选后的一个结果值。
    这个概念如果放到DAX中,就是筛选上下文

    筛选函数
    有两个强大的筛选函数:CALCULATEFILTER
    CALCULARE(<计算式>,<筛选条件1>,<筛选条件2>,…)
    CALCULARE的局限性:CALCULARE函数里筛选条件的参数只能是[列]=固定值的方法,例如:求咖啡种类=”拿铁”, 价格>30的销售数量,CALCULATE(SUM(sales),[咖啡种类]=‘拿铁’,[价格]>30)。
    但是如果我们要求季度销售量超过200杯的分店的销售数量的总和就比较难
    FILTER
    FILTER是筛选函数,不是计算函数。所以公式返回的是一张表。所以无法单独使用,一般会和CALCULATE搭配使用,也可以和聚合函数搭配使用。例如:countrows(filter(表,筛选条件))来计算表的行数。
    FILTER函数的语法第一个参数使任意一张表,第二部分是筛选条件,筛选结果是TRUE/FALSE的表达式。
    例如 CALCULATE(SUM(sales),[咖啡种类]=‘拿铁’,[价格]>30) 用FILTER可以写成calculate(sum(sales),filter(‘咖啡数据’,[咖啡种类]=‘拿铁’&&[价格]>30))
    filter对所筛选的表进行逐行的横向扫描,针对每一行循环的执行设定的筛选程序,我们把这类工具叫做Iterator迭代函数SUMX等带有X的函数和Earlier函数都属于迭代函数。它们和其他函数的区别是工作的时候可以意识到它所指的是哪一行,我们把这个工作叫做创造行上下文

    ALL()函数
    返回表中所有的行和列,忽略任何的筛选器。
    应用场景:计算部分占总体的百分比,计算部分在总体中的排名
    场景1,计算各城市销售额的排名情况。
    错误公式:RANKX(‘销售记录’,sum(‘销售记录’[销售额]),DESC)
    上面的公式如果拉取出来结果显示的排名都为1
    在这里插入图片描述
    因为城市也对排名起到了筛选作用,上面公式的意思就是每个城市的销售额在这个城市中的排名情况。所以最后的结果都是1
    正确的公式是:RANKX(ALL(‘销售记录’[销售城市]),SUM(‘销售记录’[销售额]),DECS)
    在这里插入图片描述

    场景2,计算每个城市销售额占总销售额的百分比
    SUM(‘销售记录’[销售额])/CALCULATE(SUM(‘销售记录’[销售额]),ALL(‘销售记录’))

    如果城市上面再有一个大区层级,我们需要计算每个大区中每个城市的销售额百分比占比情况,公式是SUM(‘销售记录’[销售额])/CALCULATE(SUM(‘销售记录’[销售额]),ALL(‘销售记录’[销售城市]))
    区别是如果我们是以每个大区作为一个总体的100%,那么我们就要清除城市对数据的筛选作用,CALCULATE(SUM(‘销售记录’[销售额]),ALL(‘销售记录’[销售城市]))这个公式就是计算每个大区的销售总额,然后 每个城市销售总额/每个大区的销售总额 就得到结果了
    在这里插入图片描述

    ALLSELECTED(tablename|columnname)函数
    再想象一个场景,我只想看费城的销售额占费城、纽约、芝加哥的百分比,那么我们就需要ALLSELECTED这个函数了
    作用:从当前选择的行或列中清除上下文筛选器,同时保留其他上下文筛选器。
    按筛选占总体% = ‘销售记录’[销售金额]/CALCULATE(‘销售记录’[销售金额],ALLSELECTED(‘销售记录’))
    按筛选占分类% = ‘销售记录’[销售金额]/CALCULATE(‘销售记录’[销售金额],ALLSELECTED(‘销售记录’[销售城市]))

    在这里插入图片描述
    仅从值上来看,按筛选占分类%和分类占比%是相等的,但是意义却不尽相同,假如将切片器仅选中费城和纽约,那么此时的按筛选占分类%=费城销量156/(选中的东区城市销量:费城156)=100%,而分类占比依然是56.32%。

    由此可见,占比的定义变化多端,大有文章,要正确使用ALL(Table)或ALL (Column[, Column[, …]])和ALLSELECTED([tablename|columnname])函数。

    ALLEXCEPT(table,column[,column[,…]])函数
    作用:删除表中除已应用于指定列的筛选器之外的所有上下文筛选器。

    展开全文
  • 常见的聚类算法

    2014-11-28 16:10:00
    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求...

    1.K-means算法

    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。公式如下:

        公式
    k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。
    算法过程如下
    输入:聚类个数k,以及包含 n个数据对象的数据库。
    输出:满足方差最小标准的k个聚类。
    1)从N个文档随机选取K个文档作为质心
    2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类
    3)重新计算已经得到的各个类的质心
    4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束
     
    2.DBScan算法
    DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个比较有代表性的基于密度的聚类算法。与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。
    DBSCAN中的的几个定义
    Ε领域:给定对象半径为Ε内的区域称为该对象的Ε领域;
    核心对象:如果给定对象Ε领域内的样本点数大于等于MinPts,则称该对象为核心对象;
    直接密度可达:对于样本集合D,如果样本点q在p的Ε领域内,并且p为核心对象,那么对象q从对象p直接密度可达。
    密度可达:对于样本集合D,给定一串样本点p1,p2….pn,p= p1,q= pn,假如对象pi从pi-1直接密度可达,那么对象q从对象p密度可达。
    密度相连:存在样本集合D中的一点o,如果对象o到对象p和对象q都是密度可达的,那么p和q密度相联。
    可以发现,密度可达是直接密度可达的传递闭包,并且这种关系是非对称的。密度相连是对称关系。DBSCAN目的是找到密度相连对象的最大集合。
    DBSCAN算法描述:
    输入: 包含n个对象的数据库,半径e,最少数目MinPts;
    输出:所有生成的簇,达到密度要求。
    (1)Repeat
    (2)从数据库中抽出一个未处理的点;
    (3)IF抽出的点是核心点 THEN 找出所有从该点密度可达的对象,形成一个簇;
    (4)ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一个点;
    (5)UNTIL 所有的点都被处理。
    DBSCAN对用户定义的参数很敏感,细微的不同都可能导致差别很大的结果,而参数的选择无规律可循,只能靠经验确定。
     
    3.主成分分析算法PCA
    PCA(Principal Component Analysis)用来寻找子空间,然后通过子系统的离群点来判定系统的异常
     
    (未完……待续)

    转载于:https://www.cnblogs.com/fengxm/p/4128755.html

    展开全文
  • 第五讲 求代数方程的近似根(解) 问题背景和实验目的 相关概念 对分法 对分法 对分法收敛性 迭代法 迭代法的收敛性 迭代法收敛性判断 迭代法收敛性判断 迭代法收敛性判断 迭代法的加速 牛顿迭代法 牛顿法迭代公式 ...
  • 对于老版本的C代码,计算基本矩阵的RANSAC方法中有一个迭代次数不收敛的bug,可能导致每次计算的采样次数都达到最大限制的次数,其根源在于计算采样可信度的公式有误,新版本的代码还没有仔细看过,不敢确定是否已经...
  • 实现了一些常见的带初值的常微分方程的算法... /// 欧拉迭代公式,求出区间(x0,x]中每隔步长h的精度为e的近似值 /// </summary> /// <param name="fun">fun为x的函数即 dy/dx=fun(x,y)</param>...
  • [算法]算法学习03

    2019-05-30 19:41:01
    迭代法 可以理解为“已知数列的递推公式求第n项”的问题,一般使用循环或者递归实现。最常见的例子比如递归求 n!...1.迭代的结构(递归函数的结构) 2.变化的量(当前的参数n以及下一次迭代时候的n-1) 3.迭代...
  • 算法基础

    2018-03-17 21:33:37
    一、 函数渐进的界   二、常见时间复杂度比较   三、 常用公式     四、 取整的性质         五、 递推方程的求解方法 1. 迭代法 2.1直接迭代法   2.2换元迭代法   2.3差...
  • 递归,分治是一种常见迭代方法。在二叉树遍历,线性表中遍历十分常见。递归、分治最核心的思想是 递推。 从外层–》内层,压栈,使得计算规模不断减小。 从内层–》外层,出栈,需要把计算结果传递给外层,做计算...
  • 机器学习算法通常需要大量的数值计算,这通常是指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法。常见的操作包括优化和线性方程组的求解。 对上溢和下溢进行...
  • 数值计算通过迭代过程更新解的估计值来解决数学问题,而不是通过解析过程推导出公式来提供正确解。 常见的操作有优化和线性方程组的求解 上溢和下溢 必须对上溢和下溢进行数值稳定的一个例子是softmax函数。可通过...
  • 通常是指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法。 常见的操作包括优化(找到最小化或最大化函数值得参数)和线性方程组求解 先介绍几个概念:导数、偏...
  • 1.3 数值计算

    2019-01-15 18:26:18
    通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推到出公式来提供正确解的方法。 机器学习中常见的包括优化(找到最大化或者最小化函数的参数)和__线性方程组的求解__。 下溢: 当接近零的数被...
  • fibonacci数列

    2020-02-18 16:21:36
    fibonacci数列是什么 0, 1, 1, 2, 3, 5, 8, 13, 21… 通项公式为Fn+2=Fn+1+FnF_{n+2}...常见于各种语言演示函数递归的递归求解,复杂度为指数级别 前置知识(矩阵解法) 如果一个系统满足方程uk+1=Auku_{k+1} = Au...
  • 15.4.1 泛化迭代函数的原型 544 15.4.2 在迭代器中实现多态性 545 15.4.3 导出聚集类型 546 15.4.4 编码迭代器包 550 15.4.5 foreach的习惯用法 554 15.5 提高整数集合的效率 554 15.5.1 特征向量 555 ...
  • 这通常是指通过迭代过程更新解的估计值来解决数学问题的算法, 而不是通过解析过程推导出公式来提供正确解的方法。 常见的操作包括优化(找到最小化或最大化函数值的参数)和线性方程组的求解。 对数字计算机来说...
  • 字符串集合与语音识别实战回顾lset初始化风格set增加与去重set删除元素遍历set类型转化set无法操作单个元素的赋值set常见方法set常见运算符set关系运算符判断包含set集合判断frozenset字典的基本定义循环字典判断在...
  • excel的使用

    2012-11-25 17:06:01
    那么在A3单元格中输入公式: =if(A2,“不及格”,“及格”) 同时,在IF函数中还可以嵌套IF函数或其它函数。例如,如果输入: =if(A2,“不及格”,if(A2,“及格”,“优秀")) 就把成绩分成了三个等级。如果...
  • 3.4.2 常见的激活函数及图像 107 3.4.3 常见激活函数的导数计算? 109 3.4.4 激活函数有哪些性质? 110 3.4.5 如何选择激活函数? 110 3.4.6 使用ReLu激活函数的优点? 111 3.4.7 什么时候可以用线性激活函数? 111 ...
  • 8.1 没有简单公式函数 106 8.2 用表实现校验位 107 8.2.1 校验位的定义 107 8.2.2 检错与纠错的对比 108 8.3 算法的分类 109 8.3.1 加权和算法 109 8.3.2 幂和校验位 111 8.3.3 Luhn算法 112 ...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

常见函数迭代公式