本文目錄一覽:
用C語言求正弦值?
1、C語言中要編寫sin函數,實質上要利用sin的泰勒公式,然後根據泰勒公式,將其中的每一項進行分解,最後用循環,累加計算出最終結果。
2、下面用for循環實現sin的算法,程序代碼如下:
#includestdio.h
#includemath.h
void main()
{
int i;
float x,sum,a,b; //sum代表和,a為分子,b為分母
char s;
printf(“please input x”);
scanf(“%f”,x);
s=1;
sum=0;
a=x; //分母賦初值
b=1; //分子賦初值
for(i=1;a/b=1e-6;i++)
{
sum=sum+s*a/b; //累加一項
a=a*x*x; //求下一項分子
b=b*2*i*(2*i+1); //求下一項分母
s*=-1;
}
printf(“sum=%f\n”,sum);
}
3、 關於上述程序的幾點說明:上述程序的計算結果精確到小數點後六位;上述程序運用了sin的泰勒展開式 sin x=x-x^3/3!+x^5/5! …… ,程序中將sin泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便於每一項的累加。
C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
儘管C語言提供了許多低級處理的功能,但仍然保持着良好跨平台的特性,以一個標準規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言制定了一套完整的美國國家標準語法,稱為ANSI C,作為C語言最初的標準。目前2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標準,也是C語言的最新標準,該標準更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。
c語言編程:編程並計算sin(x)的值
#includestdio.h
#includemath.h
double sin(double);
double nResult(double,double);
int main()
{
double x=0;
scanf(“%lf”,x);
printf(“sin(%lf)=%lf\n”,x,sin(x));
return 0;
}
double sin(double x)
{
//sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……+(-1)(n^2n+1)/(2n+1)!+……
int i=0;
double result=0,n=0;
while( fabs( n=nResult(x,2*++i-1) ) 0e-5 )//絕對值大於10^-5次方就循環
result+=(i%2==1)?n:-n;
return result;
}
double nResult(double x,double n)
{
//(n^2n+1)/(2n+1)!也就是n/1*n/2*n/3*n/4*…..n/(2n+1)
return n==1?x:nResult(x,n-1)*x/n;
}
用遞歸給寫了一個 sin(π)=0 sin(π/2)=1
樓主看得上就採納吧
用C語言求sinx的值,望高人指點
你的factorial是一個函數,好象不可以直接乘以一個整數的吧,還有double factorial(int n)是不是需要一個返回值呢。if(n==0) return 1;只是在n=0的時候有返回值,n!=0就沒有了
C語言求sinx
修改了一下。 用 前後項的遞推: c=c*x*x/(float)i/(float)(i-1);
#include stdio.h
#include math.h
int main(){
double x,a,b=1,c=1,sum;
int i,count=1;
scanf(“%lf”,x);
sum=x;
for (i=3; fabs(c)1e-05;i=i+2){
c=c*x*x/(float)i/(float)(i-1);
b= -b;
sum=sum + c*b;
count++;
}
printf(“%.3lf %d\n”,sum,count);
return 0;
}
C語言 求sin值
首先,你的測試輸入和測試輸出的數據是對應不上的,你寫錯信息了!
輸入 3.1415026, 3 的時候,輸出才是 -0.07522 。
好了,正確的參考代碼如下:
#include stdio.h
double power(double x, int n); // 計算乘方的函數
double fact(int n); // 計算階乘的函數
int main(int argc, char const *argv[])
{
double x, s;
int n;
int sign = 1; //正負號開關變量,初始狀態為正
printf(“Please input a decimal number x , a postive int number n :\n”);
scanf(“%lf%d”, x, n);
for (int i = 0; i = n; i++)
{
s += sign * power(x, 2 * i + 1) / fact(2 * i + 1);
sign = -sign;
}
printf(“x = %g, n = %d, s = %.5lf \n”, x, n, s);
return 0;
}
//計算x^n
double power(double x, int n)
{
double p = 1;
// 這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變量造成影響。
for (; n–;)
{
p *= x;
}
return p;
}
// 計算n!
double fact(int n)
{
double f = 1;
// 這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變量造成影響。
for (; n;)
{
f *= n–;
}
return f;
}
測試截圖:(分別測試了角度為 180度、90度、45度的弧度值)
輸入和輸出語句,你不想要這麼多的提示信息的話,自己修改一下就可以了。
如有幫助,煩請點採納,謝謝!
c語言 計算sin
sin函數寫錯了,應該是:
double sin……
{
if…
return 0;
else
{
…
…
return sin(x,xx);
}
}
不要後面那個return z了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199317.html