您现在的位置是:首页 >综合 > 2023-07-23 03:40:08 来源:
算术平方根公式规则(算术平方根公式)
大家好,我是小夏,我来为大家解答以上问题。算术平方根公式规则,算术平方根公式很多人还不知道,现在让我们一起来看看吧!
1、平方根计算的泰勒公式展开
2、function mysum=sr3(x,e)
3、%用泰勒展开计算平方根,abs(x)<1;
4、%精确度e默认为1e-15;
5、if nargin==1
6、e=1e-15;
7、end
8、m=1; %计算泰勒展开的分子(2*k-3)!!,给m设初值
9、n=1; %计算阶乘n!, 给 n设初值
10、mysum=1; %泰勒展开多项式的和,设初值
11、k=1;
12、while(m/(2^k*n)*x.^k)>e|x==0
13、j=abs(2*k-3);
14、n=n*k;
15、m=m*j;
16、mysum=mysum+(-1)^(k+1)*(m/(2^k*n))*x.^k;
17、k=k+1;
18、end
19、用牛顿迭代法求平方根
20、用C语言,通过链表存储,用牛顿牛代法求平方根。
21、这是C语言实训时的作业。因此作了版面的设计。使用方便!
22、#include"math.h"
23、#include"stdio.h"
24、#include"conio.h"
25、#include"stdlib.h"
26、typedef struct lianbiao /*定义类型:struct lianbiao */
27、{
28、float x1;
29、float x0;
30、struct LIANBIAO *next;
31、}LIANBIAO;
32、/*函数原型*/
33、LIANBIAO *sestet(float c); /*建立链表*/
34、void displayall(LIANBIAO *psthead); /*全部显示*/
35、main()
36、{ LIANBIAO *psthead=NULL;
37、float a;
38、do
39、{
40、printf(" 请输入一个正数为a的值 ");
41、printf(" ");
42、scanf("%f",&a);
43、}while(a<=0);
44、psthead=sestet(a); /*返回“头指针”*/
45、displayall(psthead); /*输出全部结点*/
46、}
47、/*建立链表,并进行计算*/
48、LIANBIAO *sestet(float c)
49、{
50、LIANBIAO *psthead,*ptemp,*pprep;
51、int s;
52、float x0,x1,temp,h;
53、double k;
54、psthead=(LIANBIAO*)malloc(sizeof(LIANBIAO));/*构造“头结点”*/
55、printf(" 您希望精确值(ε)精确到小数点后几位?(目前超过十位无法明确显示) ");
56、printf(" 您需要的位数是:");
57、scanf("%d",&s);
58、k=1/pow(10,s);
59、printf(" 你选择的误差值ε=%0.10lf ",k);
60、pprep=psthead; /*“前趋指针pprep”指向“头结点”*/
61、pprep->next=NULL; /*“头结点”的next成员的NULL*/
62、x1=c;
63、do /*进行迭代计算*/
64、{
65、x0=(x1+c/x1)/2;
66、h=x1-x0; /*定义x1-x0的值,即为误差值*/
67、temp=x1;
68、ptemp=(LIANBIAO*)malloc(sizeof(LIANBIAO));/*开辟一个新的单元*/
69、ptemp->x1=x1; /*得到ptemp指向的结构体中的成员x1的值*/
70、ptemp->x0=h; /*得到ptemp指向的结构体中的成员x0的值,即误差值*/
71、ptemp->next=pprep->next; /*“新结点”指向这个前趋结点的后续结点*/
72、pprep->next=ptemp; /*这个前趋结点指向“新结点”*/
73、pprep=ptemp; /*取得新的结点*/
74、x1=x0; /*x1取得平方根的值*/
75、}while(fabs(h)>k);
76、printf(" 您输入的是%f. 此数的平方根为%f ",c,x1);
77、return psthead; /*返回指向“头结点”的指针*/
78、}
79、/*全部显示*/
80、void displayall(LIANBIAO *psthead)
81、{
82、LIANBIAO *pst; /*调用链表里的函数*/
83、int m=0;
84、pst=psthead->next; /*将psthead原来指向结点中的next值赋给pst*/
85、printf(" ");
86、printf(" 迭代过程为: ");
87、printf(" ");
88、while(pst!=NULL)
89、{
90、m++;
91、printf(" 第%d次迭代 x0=%10f | 误差值为%10f ",m,pst->x1,pst->x0);/*输出迭代次数,输出pst指向的结点的数据*/
92、pst=pst->next; /*使pst指向下一个结点*/
93、}
94、printf(" ");
95、printf(" 共迭代%d次 ",m);
96、printf(" 共开辟空间%d个 ",m+1);
97、printf(" 利用率为%f %% ",m*8*100.0/(m*12+12));
本文到此讲解完毕了,希望对大家有帮助。