關于平方根和算術平方根的計算方法,計算平方根有什么公式嗎這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
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語言實訓時的作業(yè)。
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; /*函數(shù)原型*/ LIANBIAO *sestet(float c); /*建立鏈表*/ void displayall(LIANBIAO *psthead); /*全部顯示*/ main() { LIANBIAO *psthead=NULL; float a; do { printf("請輸入一個正數(shù)為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("您希望精確值(ε)精確到小數(shù)點后幾位?(目前超過十位無法明確顯示)"); printf("您需要的位數(shù)是:"); 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; /*“新結點”指向這個前趨結點的后續(xù)結點*/ pprep->next=ptemp; /*這個前趨結點指向“新結點”*/ pprep=ptemp; /*取得新的結點*/ x1=x0; /*x1取得平方根的值*/ }while(fabs(h)>k); printf("您輸入的是%f.此數(shù)的平方根為%f",c,x1); return psthead; /*返回指向“頭結點”的指針*/ } /*全部顯示*/ void displayall(LIANBIAO *psthead) { LIANBIAO *pst; /*調用鏈表里的函數(shù)*/ 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);/*輸出迭代次數(shù),輸出pst指向的結點的數(shù)據(jù)*/ pst=pst->next; /*使pst指向下一個結點*/ } printf(""); printf("共迭代%d次",m); printf("共開辟空間%d個",m+1); printf("利用率為%f %%",m*8*100.0/(m*12+12));。
本文分享完畢,希望對大家有所幫助。
標簽:
免責聲明:本文由用戶上傳,如有侵權請聯(lián)系刪除!