C语言迭代法求平方根 3

合集下载

C语言求平方根源程序

C语言求平方根源程序

编程序求10000之内的完全平方数的平方根#include <stdio.h>main(){int a,b,d,e,f;int A;int i,j;printf("\n\n***** 先把100以内的自然数打出来*****\n\n"); /*在Tc2.0下要注意把汉字改为英文*/for(i=0;i<100;i++){ j=i*i;printf(" %d*%d=%d ",i,i,j);if(i%5==0)printf("\n");}printf("\nPlsease enter a number:");scanf("%d",&A);while(A!=0) /* A是1到9999之间的任意一个完全平方数*/{if(A>=100)/* 对A分情况讨论*/{ a=A/100; /* A除以100取整赋给a */ if(a>=1&&a<=3)b=1;if(a>=4&&a<=8)b=2;if(a>=9&&a<=15)b=3;if(a>=16&&a<=24)b=4;if(a>=25&&a<=35)b=5;if(a>=36&&a<=48)b=6;if(a>=49&&a<=63)b=7;if(a>=64&&a<=80)b=8;if(a>=81&&a<=99)b=9;}if(A<100){ if(A==1){ b=1;printf("\nthe root of A is %d",b);printf("\nPlsease enter a number:");scanf("%d",&A);}if(A==4){ b=2;printf("\nthe root of A is %d",b);printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==9){ b=3;printf("\nthe root of A is %d",b);printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==16){ b=4;printf("\nthe root of A is %d",b); printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==25){ b=5;printf("\nthe root of A is %d",b); printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==36){ b=6;printf("\nthe root of A is %d",b); printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==49){ b=7;printf("\nthe root of A is %d",b); printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==64){ b=8;printf("\nthe root of A is %d",b);printf("\nPlsease enter a number:"); scanf("%d",&A);}if(A==81){ b=9;printf("\nthe root of A is %d",b);printf("\nPlsease enter a number:"); scanf("%d",&A);}}d=A-b*b*100; /* 变量b是第一次试商*/ e=d/(b*20); /* e 是第二次试商*/if(e>=10)e=e-1;while(((b*20+e)*e)!=d)e=e-1;f=b*10+e;/* 变量f是所求平方根*/ printf("\nthe root of A is %d",f);printf("\nPlsease enter a number:");scanf("%d",&A);}}此程序在VC++6.0 下编译运行通过,在Tc2.0也可以运行但要注意把汉字注释删除运行结果如下***** 先把100以内的自然数打出来*****0*0=01*1=1 2*2=4 3*3=9 4*4=16 5*5=256*6=36 7*7=49 8*8=64 9*9=81 10*10=10011*11=121 12*12=144 13*13=169 14*14=196 15*15=22516*16=256 17*17=289 18*18=324 19*19=361 20*20=40021*21=441 22*22=484 23*23=529 24*24=576 25*25=62526*26=676 27*27=729 28*28=784 29*29=841 30*30=90031*31=961 32*32=1024 33*33=1089 34*34=1156 35*35=1225 36*36=1296 37*37=1369 38*38=1444 39*39=1521 40*40=160041*41=1681 42*42=1764 43*43=1849 44*44=1936 45*45=202546*46=2116 47*47=2209 48*48=2304 49*49=2401 50*50=250051*51=2601 52*52=2704 53*53=2809 54*54=2916 55*55=302556*56=3136 57*57=3249 58*58=3364 59*59=3481 60*60=360061*61=3721 62*62=3844 63*63=3969 64*64=4096 65*65=422566*66=4356 67*67=4489 68*68=4624 69*69=4761 70*70=490071*71=5041 72*72=5184 73*73=5329 74*74=5476 75*75=562576*76=5776 77*77=5929 78*78=6084 79*79=6241 80*80=640081*81=6561 82*82=6724 83*83=6889 84*84=7056 85*85=722586*86=7396 87*87=7569 88*88=7744 89*89=7921 90*90=810091*91=8281 92*92=8464 93*93=8649 94*94=8836 95*95=902596*96=9216 97*97=9409 98*98=9604 99*99=9801 Plsease enter a number:4096the root of A is 64Plsease enter a number:7569the root of A is 87Plsease enter a number:4761the root of A is 69Plsease enter a number:5476the root of A is 74Plsease enter a number:。

教你简单的平方根和立方根计算

教你简单的平方根和立方根计算

教你简单的平方根和立方根计算为了教你简单的平方根和立方根计算,我将以以下的步骤来说明如何进行计算。

这些方法简便易行,适用于大多数数值计算的场景。

一、平方根计算方法:1. 迭代法:迭代法是使用近似值逼近平方根的一种常用方法。

下面是一个迭代法的数值计算示例:假设我们需要计算一个数a的平方根。

首先,猜测一个初始值x0。

一般情况下,初始值可以设为a的一个近似值。

然后,通过以下迭代公式不断改进猜测值,直到达到精度要求为止:x_k+1 = (x_k + a / x_k) / 2其中k表示迭代的次数,x_k表示第k次迭代得到的近似平方根值。

举个例子,我们要计算16的平方根:(1)假设初始值x0为4:x1 = (4 + 16 / 4) / 2 = 5x2 = (5 + 16 / 5) / 2 = 4.1以此类推,直到满足精度要求为止。

2. 牛顿迭代法:牛顿迭代法是一种更快速收敛的迭代法。

以下是牛顿迭代法的计算步骤:假设我们要计算一个数a的平方根。

同样地,我们需要先猜测一个初始值x0。

而后,通过以下迭代公式不断改进猜测值,直到达到精度要求为止:x_k+1 = (x_k + a / x_k) / 2与迭代法不同的是,在牛顿迭代法中,我们通过使用更好的近似公式来更新猜测值,进一步提高计算精度。

具体计算步骤与迭代法相似。

二、立方根计算方法:1. 迭代法:立方根的计算方法与平方根基本相似。

迭代法也是常用的计算立方根的方法之一。

我们可以使用以下的迭代公式计算立方根: x_k+1 = (2 * x_k + a / (x_k * x_k)) / 3其中k表示迭代的次数,x_k表示第k次迭代得到的近似立方根值。

举个例子,我们要计算27的立方根:(1)假设初始值x0为3:x1 = (2 * 3 + 27 / (3 * 3)) / 3 = 3.6667x2 = (2 * 3.6667 + 27 / (3.6667 * 3.6667)) / 3 = 3.659以此类推,直到满足精度要求为止。

C语言迭代法详细讲解

C语言迭代法详细讲解
因为第15次分裂之后的个数x 15是已知的,如果定义迭代变量为x,则可
以将上面的倒推公式转换成如下的迭代公式:
x=x/2(x的初值为第15次分裂之后的个数2A20)
让这个迭代公式重复执行15次,就可以倒推出第1次分裂之前的阿米巴个 数。因为所需的迭代次数是个确定的值,我们可以使用一个固定次数的循环来实现对 迭代过程的控制。参考程序如下:
cls
x=2A20
for i=1 to 15
x=x/2
next i
print x
end
ps: java中幂的算法是Math.pow(2, 20);返回double,稍微注意一下
例3:验证谷角猜想。 日本数学家谷角静夫在研究自然数时发现了一个奇怪现 象:对于任意一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将 其乘以3,然后再加1。如此经过有限次运算后,总可以得到自然数1。人们把
例1: 一个饲养场引进一只刚出生的新品种兔子,这种兔子从出生的下一个月
开始,每月新生一只兔子,新生的兔子也如此繁殖。如果所有的兔子都不死去,问到 第12个月时,该饲养场共有兔子多少只?
分析:这是一个典型的递推问题。我们不妨假设第1个月时兔子的只数为u
1,第2个月时兔子的只数为u2,第3个月时兔子的只数为u3,……根据
x1=(x0+a/x0)/2;
do
{
x0=x1;
x1=(x0+a/x0)/2;
}while(fabs(x0-x1)>=1e-6);
}
printf("Result:\n");
printf("sqrt(%g)=%g\n",a,x1);
谷角静夫的这一发现叫做 “谷角猜想”。

c语言根式

c语言根式

在C语言中,可以使用数学库函数来计算根式。

以下是一个示例代码,演示如何使用C语言计算平方根:
```c
#include <stdio.h>
#include <math.h>
int main() {
double number, squareRoot;
printf("请输入一个数字:");
scanf("%lf", &number);
squareRoot = sqrt(number);
printf("该数字的平方根为:%.2lf\n", squareRoot);
return 0;
}
```
在这个示例中,我们使用了`sqrt`函数来计算给定数字的平方根。

首先,我们声明了两个变量`number`和`squareRoot`,分别用于存储用户输入的数字和计算得到的平方根。

然后,通过`scanf`函数获取用户输入的数字,并将其存储在`number`变量中。

接下来,我们调用`sqrt`函数来计算`number`的平方根,并将结果存储在`squareRoot`变量中。

最后,使用`printf`函数输出计算得到的平方根。

请注意,为了使用数学库函数,需要在代码开头包含头文件`<math.h>`。

此外,根据需要,可以调整输出格式,例如使用`%.2lf`来保留两位小数。

迭代法求平方根

迭代法求平方根

迭代法求平方根是一种有效的计算方法,它可以用来快速求出一个数的平方根。

这种方法基于牛顿迭代法,它使用一个初始值作为起始点,然后不断地重复应用牛顿迭代公式来收敛到正确的解。

具体而言,要使用迭代法求平方根,首先要选取一个初始值x0作为起始点。

然后不断地重复应用牛顿迭代公式xn+1=1/2(xn+a/xn)来得到新的值xn+1,直到误差小于所定义的误差界限ε时即可得出正确的解。

例如:要求9的平方根时,我们可以将x0设为3.5(因为3.5^2=12.25>9),然后不断地重复应用上式即可得出正确的解3。

总之,迭代法是一种有效、快速、易于理解和实施的求平方根方法。

在大部分情况中都能够得出正确而有效地优化效果。

迭代法求平方根C语言实验报告

迭代法求平方根C语言实验报告

实验五: 迭代法求平方根
物理学416班赵增月F12 2011412194 日期: 2013年10月31日
一·实验目的
1.熟练掌握程序编写步骤;
2.学习使用循环结构。

二·实验器材
1.电子计算机;
2.VC6.0
三·实验内容与流程
1.流程图
2.输入以下程序#include<stdio.h>
#include<math.h>
void main()
{
float x2,x1,a;
printf("请输入实数a=");
scanf("%f",&a);
x2=a*0.5;
do
{ x1=x2;
x2=0.5*(x1+a/x1);
}while(fabs(x2-x1)>1e-5);
printf("a 的平方根是: %f\n",x2);
}
四·实验结果
运行显示如下:
请输入实数a=4
a 的平方根是: 2.000000
Press any key to continue
五·实验总结与反思
1.注意循环的初始值的设定, 要保证循环可以进行;
2.循环必须有结束的条件, do while结构中, 不满足循环条件跳出循环。

3.。

单片机C语言求平方根

单片机C语言求平方根

在单片机中要开平方.可以用到下面算法:算法1:本算法只采用移位、加减法、判断和循环实现,因为它不需要浮点运算,也不需要乘除运算,因此可以很方便地运用到各种芯片上去。

我们先来看看10进制下是如何手工计算开方的。

先看下面两个算式,x = 10*p + q (1)公式(1)左右平方之后得:x^2 = 100*p^2 + 20pq + q^2 (2)现在假设我们知道x^2和p,希望求出q来,求出了q也就求出了x^2的开方x了。

我们把公式(2)改写为如下格式:q = (x^2 - 100*p^2)/(20*p+q) (3)这个算式左右都有q,因此无法直接计算出q来,因此手工的开方算法和手工除法算法一样有一步需要猜值。

我们来一个手工计算的例子:计算1234567890的开方首先我们把这个数两位两位一组分开,计算出最高位为3。

也就是(3)中的p,最下面一行的334为余数,也就是公式(3)中的(x^2 - 100*p^2)近似值3 --------------- | 12 34 56 78 90 9 --------------- | 3 34下面我们要找到一个0-9的数q使它最接近满足公式(3)。

我们先把p乘以20写在334左边:3 q --------------- | 12 34 56 78 90 9 --------------- 6q| 3 34我们看到q为5时(60+q*q)的值最接近334,而且不超过334。

于是我们得到:3 5 --------------- | 12 34 56 78 90 9 --------------- 65| 3 34 | 325 --------------- 9 56接下来就是重复上面的步骤了,这里就不再啰嗦了。

这个手工算法其实和10进制关系不大,因此我们可以很容易的把它改为二进制,改为二进制之后,公式(3)就变成了:q = (x^2 - 4*p^2)/(4*p+q) (4)我们来看一个例子,计算100(二进制1100100)的开方:1 0 1 0 --------------- | 1 10 01 00 1 --------------- 100| 0 10 | 000 --------------- | 10 011001| 10 01 --------------- 0 00这里每一步不再是把p乘以20了,而是把p乘以4,也就是把p右移两位,而由于q的值只能为0或者1,所以我们只需要判断余数(x^2 - 4*p^2)和(4*p+1)的大小关系,如果余数大于等于(4*p+q)那么该上一个1,否则该上一个0。

c语言math库对sqrt的实现

c语言math库对sqrt的实现

C语言是一种非常重要的计算机编程语言,广泛应用于系统软件、应用软件、嵌入式系统、驱动程序等领域。

math库是C语言中非常常用的数学库,提供了很多数学函数供程序员使用。

其中,sqrt函数是math库中的一个常用函数,用于计算一个数的平方根。

本文将讨论C 语言math库对sqrt函数的实现方法。

1. sqrt函数概述让我们来了解一下sqrt函数的概述。

sqrt函数用于计算一个数的平方根,其原型如下:double sqrt(double x);其中,x为要计算平方根的数,函数返回x的平方根。

sqrt函数定义在math.h头文件中,因此在使用sqrt函数之前,需要包含math.h头文件。

2. sqrt函数的实现原理接下来,我们来分析一下sqrt函数的实现原理。

在C语言中,sqrt函数通常是由系统底层的数学库实现的,具体的实现方式可能因系统而异。

一种常见的实现方式是使用牛顿迭代法来计算平方根。

牛顿迭代法是一种用途广泛的求解方程近似解的方法,其具体步骤如下:(1) 选取一个初始值作为计算的起点,假设为y0;(2) 根据迭代公式y = (y0 + x / y0) / 2计算下一个近似值y;(3) 判断计算结果与精度要求的差距,如果小于精度要求,则停止迭代,取当前的y值作为最终结果;否则,将y作为新的y0,重复步骤(2);(4) 最终得到的y值即为所求的平方根。

3. sqrt函数的具体实现针对不同的系统和评台,sqrt函数的实现可能会有一定的差异。

我们以标准的C语言为例,来简单介绍一种可能的sqrt函数实现方法。

```c#include <math.h>double sqrt(double x) {double y0, y = x, temp;if (x == 0.0 || x == 1.0) {return x;}do {y0 = y;temp = x / y0;y = (y0 + temp) / 2;} while (y != y0);return y;}```上述代码是对sqrt函数的一种简单实现,采用了牛顿迭代法来计算平方根。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档