c语言如何输入平方

Python016

c语言如何输入平方,第1张

变量平方有如下三种常用的输入方法:

1 直接输入法。

这种方法是利用平方的数学定义,直接输入两个相同变量的乘法形式。

比如

int a = 10

int a2

a2 = a*a

这里a2的值就是a的平方。

这种方法的好处是简单明了,而且适用于各种类型。

缺点是如果输入高次方而不是平方,比如输入10次方,就需要连续打10个a相乘,既不易输入,也不容易阅读,还容易出错。

2 利用库函数法。

在math.h中有一个库函数pow,其原型为

double pow(double a, double b)

功能是计算a的b次幂,并返回该结果。

比如这个代码:

#include <math.h>

#include <stdio.h>

int main()

{

    double a = 1.23

    printf("qrt(a) = %lf\n", pow(a,2))//计算a的平方并输出

    return 0

}

该方法好处是简单易懂,对于高次幂计算同样输入简单,易于编写,阅读和维护。

缺点是只适用于浮点数,如果用于整型,会在运算中做默认的类型转换,由于精度问题,结果可能会有偏差,适用于精度要求不是太高的情况

3 使用自定义函数。

自己定义求幂函数。该方法可以用于整型求高次幂,当然也可以用于求平方。

从原理上来说,如果修改类型用于做浮点数幂运算也是可以的,不过既然有库函数pow那就没必要用自定义函数了。

参考函数如下

int qrt(int a, int b)//求a的b次幂并返回

{

    int i,r=1

    for(i = 0 i < b i ++)

        r *= a//依次乘b次,即乘方的数学定义

    

    return r

}

函数类型及返回值根据计算需要的数据规模随时修改,可以为任意整型类型。

这样在计算乘方时可以调用该函数,调用方法和之前介绍的pow函数类似。

该种方法的缺点为需要自己写函数,代码量比前两种都要大。

以上三种方法各有优劣,根据实际需要可以自行选择。如果只是计算平方,那么推荐使用第一种方法。

R2是一种易于计算和非常直观的用于度量相关性的指标

我们中的大多数人已经熟悉了相关性和它的度量标准R,就是常说的Pearson相关系数。

如果相关系数R接近1或者-1,则说明这两个变量是密切相关的, 比如身高与体重。

其实R平方和R非常相似,但是R平方在理解上更容易。

例如:实际上当R=0.7时比0.5要好2倍,但是在数值上面并不直观。R2可以直接反映出R2=0.7优于R2=0.5的1.4倍。

R方一般用在回归模型用用于评估预测值和实际值的符合程度,R方的定义如下:变量x引起y变异的回归平方和占y变异总平方和的比率,也称为拟合优度

表达式:R2=SSR/SST=1-SSE/SST

决定系数反应了y的波动有多少百分比能被x的波动所描述,即表征依变数Y的变异中有多少百分比,可由控制的自变数X来解释.

举一个例子:我们用小鼠大小为X轴,Y轴代表小鼠体重, Y坐标越高代表小鼠体重越大。

在这里, 我们将平均值画成一条黑线,同时再根据数据拟合一条直线(蓝线)。

假设我们知道单个小鼠的大小,那么小鼠体重预测的最佳方法是用什么呢?

我们刚才画的蓝线是否比平均线能更好地解释数据?

如果是的话, 好了多少?

直观来看,看起来蓝线比平均值更好地贴合数据。我们如何量化这两条线的差异?

R2!!

下图是R2的计算公式:

方程中Var(mean)是数据与平均值相关的差异,实际数据值与其平均值的差的平方和

方程中Var(line)是蓝线与数据点之间的差异,实际数据值与蓝线对应点的数值差的平方和

所以, 这使得R2的值的范围是从0到1。

现在我们将通过一个例子来一步一步计算一下R2:

根据公式,我们可以计算得到R2=0.81=81%

也就是说, 小鼠的大小与重量的相关性能够解释总差异的81%,这意味着数据的大部分变化都可以由小鼠重量-大小的关系来解释。

再举另一个示例,我们比较两个可能不相关的变量:

Y轴依然是小鼠重量

X轴表示小鼠嗅探一块岩石的时间

与之前的计算一致, 得到Var(mean) = 32

然而, 我们计算蓝线与数据点差的平方和Var(line)时,得到了一个很大的值, 30

通过计算, 我们看到 R2= 0.06 = 6%

因此, 新拟合的线只比平均值多解释了6%的差异,也就是说, X与Y二者的相关性仅能解释总差异的6%

当有人说这个统计学计算R2 =0.9,你可以认为这两个变量之间的相关性非常好。数据变化的90%可以被解释。

R2 就是相关系数R的平方,当有人说统计显著的R = 0.9时,R2 =0.81,这两个变量解释了81%的数据与拟合直线间的差异。

同样,比较R=0.7与R=0.5哪个要好得多,如果我们把这些数字转换成R平方:

当R = 0.7时, R2 ≈0.5

当R=0.5时,R2 =0.25

用R平方很容易看出, 第一个相关性是第二个相关性的2倍!!

需要注意的是, R平方并不能表示相关性的方向(因为平方数不会小于0)。

#include<stdio.h>

#include <math.h>

void main()

{

int n

float r

double d

scanf("%d%f",&n,&r)

d=pow(r,n)

printf("%lf\n",d)

}