您現在的位置是:首頁 >綜合 > 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));
本文到此講解完畢了,希望對大家有幫助。