关于平方根和算术平方根的计算方法,计算平方根有什么公式吗这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!
1、平方根计算的泰勒公式展开 function mysum=sr3(x,e) %用泰勒展开计算平方根,abs(x)<1; %精确度e默认为1e-15; if nargin==1 e=1e-15; end m=1; %计算泰勒展开的分子(2*k-3)!!,给m设初值 n=1; %计算阶乘n!, 给 n设初值 mysum=1; %泰勒展开多项式的和,设初值 k=1; while(m/(2^k*n)*x.^k)>e|x==0 j=abs(2*k-3); n=n*k; m=m*j; mysum=mysum+(-1)^(k+1)*(m/(2^k*n))*x.^k; k=k+1; end 用牛顿迭代法求平方根 用C语言,通过链表存储,用牛顿牛代法求平方根。
2、 这是C语言实训时的作业。
3、因此作了版面的设计。
4、使用方便! #include"math.h" #include"stdio.h" #include"conio.h" #include"stdlib.h" typedef struct lianbiao /*定义类型:struct lianbiao */ { float x1; float x0; struct LIANBIAO *next; }LIANBIAO; /*函数原型*/ LIANBIAO *sestet(float c); /*建立链表*/ void displayall(LIANBIAO *psthead); /*全部显示*/ main() { LIANBIAO *psthead=NULL; float a; do { printf("请输入一个正数为a的值"); printf(""); scanf("%f",&a); }while(a<=0); psthead=sestet(a); /*返回“头指针”*/ displayall(psthead); /*输出全部结点*/ } /*建立链表,并进行计算*/ LIANBIAO *sestet(float c) { LIANBIAO *psthead,*ptemp,*pprep; int s; float x0,x1,temp,h; double k; psthead=(LIANBIAO*)malloc(sizeof(LIANBIAO));/*构造“头结点”*/ printf("您希望精确值(ε)精确到小数点后几位?(目前超过十位无法明确显示)"); printf("您需要的位数是:"); scanf("%d",&s); k=1/pow(10,s); printf("你选择的误差值ε=%0.10lf",k); pprep=psthead; /*“前趋指针pprep”指向“头结点”*/ pprep->next=NULL; /*“头结点”的next成员的NULL*/ x1=c; do /*进行迭代计算*/ { x0=(x1+c/x1)/2; h=x1-x0; /*定义x1-x0的值,即为误差值*/ temp=x1; ptemp=(LIANBIAO*)malloc(sizeof(LIANBIAO));/*开辟一个新的单元*/ ptemp->x1=x1; /*得到ptemp指向的结构体中的成员x1的值*/ ptemp->x0=h; /*得到ptemp指向的结构体中的成员x0的值,即误差值*/ ptemp->next=pprep->next; /*“新结点”指向这个前趋结点的后续结点*/ pprep->next=ptemp; /*这个前趋结点指向“新结点”*/ pprep=ptemp; /*取得新的结点*/ x1=x0; /*x1取得平方根的值*/ }while(fabs(h)>k); printf("您输入的是%f.此数的平方根为%f",c,x1); return psthead; /*返回指向“头结点”的指针*/ } /*全部显示*/ void displayall(LIANBIAO *psthead) { LIANBIAO *pst; /*调用链表里的函数*/ int m=0; pst=psthead->next; /*将psthead原来指向结点中的next值赋给pst*/ printf(""); printf(" 迭代过程为:"); printf(""); while(pst!=NULL) { m++; printf(" 第%d次迭代x0=%10f |误差值为%10f",m,pst->x1,pst->x0);/*输出迭代次数,输出pst指向的结点的数据*/ pst=pst->next; /*使pst指向下一个结点*/ } printf(""); printf("共迭代%d次",m); printf("共开辟空间%d个",m+1); printf("利用率为%f %%",m*8*100.0/(m*12+12));。
本文分享完毕,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!