来源:蜘蛛抓取(WebSpider)
时间:2016-01-04 01:16
标签:
c语言平方根函数
C语言 迭代法求一个数的平方根
C语言 迭代法求一个数的平方根 10
用迭代法求 。求平方根的迭代公式为:Xn+1=(Xn+a/Xn)/2& 要求前后两次求出的得差的绝对值少于0.00001。
#include&stdio.h&#include&math.h& void main(){&&&& float x0,x1,a;&&&&& scanf("%f",&a);&&&& x1=a/2; &&& do{&&& x0=x1;x1=(x0+a/x0)/2;&&&
}&&& while(fabs(x0-x1)&=0.00001);&&&
&&&&&printf("%.3f",x1);
这个程序中为什么把x1的初值赋值为a/2
还有什么别的方法能编写出这个问题 请提供
因为上面的算法使用的是函数f(x)=x^2-c,求根;
所以要想使牛顿迭代的序列收敛于c,则,必须满足f(x0)=x0^2-c&0;
所以一般情况下,取x0大于等于根号c都可以。
这个是逼近理论的内容了。具体证明你查资料吧。
求根好的算法很多的·给你一个快速算法:
#include&stdio.h&#include&math.h& float SquareRootFloat(float number) {&&&&&& float x,&&& const float f = 1.5F;&&&& x = number * 0.5F;&&& y& =&&& i& = * ( long * ) &y;&&& i& = 0x5f3759df - ( i && 1 );&&& y& = * ( float * ) &i;&&& y& = y * ( f - ( x * y * y ) );&&& y& = y * ( f - ( x * y * y ) );&&& return number *}
void main(){&&&& float x0,x1,a;&&&&& scanf("%f",&a);&&&& printf("%.8f",SquareRootFloat(a));
的感言:谢谢 相关知识
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号C语言的编程题,要求从键盘输入两个整数,输出它们的平方差,怎么做?
C语言的编程题,要求从键盘输入两个整数,输出它们的平方差,怎么做?
不区分大小写匿名
#include &stdio.h&#include &stdlib.h&int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d\n",a*a-b*b); system("PAUSE"); return 0;}
main() {int a,b,c; scanf(&d%d%&,a,b); if(a&=b) {c=a*a-b*b} else {c=b*b-a*a} printf(&d%&,c) } 应该是这样,如果使用文件包含命令 #include &math.h&可以更简单,不过我忘了取绝对值和平方的方法了,
include&stdio.h& main() {
int a,b,c;
scanf(&%d%d&,&a,&b);
c=a*a-b*b;
printf(&%d&,c);
//c为a,b平方差。 }
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号c语言问题:任意输入两个数,求两数的平方之和?_百度知道
c语言问题:任意输入两个数,求两数的平方之和?
提问者采纳
scanf(&%d":&}如果是浮点数的话,&b),&a),输入的时候; scanf(&):%d&请输入第二个数的值;平方和为;.h>,b; printf(",输入类型改成浮点类型;请输入第一个数的值,把a;void main(){;);
printf(":&; printf(",b定义成浮点类型;%d",a*a+b*b),就可以了#include<
提问者评价
谢谢。会了。
其他类似问题
为您推荐:
c语言的相关知识
其他2条回答
%d\;;%d%d",&b);n",a*a+b*b),b,&a.h&
return 0;int main(){
printf("#include <
#include&stdio.h&void main(){ int a,b;
printf(&请输入2个数:&); scanf(&%d%d&,&a,&b); a=a*a+b*b; printf(&两个数的平方和:%d\n&,a);}
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁