Ⅰ 用c語言求正弦值
1、C語言中要編寫sin函數,實質上要利用sin的泰勒公式,然後根據泰勒公式,將其中的每一項進行分解,最後用循環,累加計算出最終結果。
2、下面用for循環實現sin的演算法,程序代碼如下:
#include<stdio.h>
#include<math.h>
voidmain()
{
inti;
floatx,sum,a,b;//sum代表和,a為分子,b為分母
chars;
printf("pleaseinputx");
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
",sum);
}
3、 關於上述程序的幾點說明:上述程序的計算結果精確到小數點後六位;上述程序運用了sin的泰勒展開式 sin x=x-x^3/3!+x^5/5! ...... ,程序中將sin泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便於每一項的累加。
Ⅱ 如何用C語言中專門的數學演算法實現正弦,餘弦函數的計算
頭文件包含。math.h
cos
:餘弦函數
函數原型:double
cos(double
x);
頭文件:#include<math.h>
是否是標准函數:是
函數功能:求x的餘弦值,這里,x為弧度。
返回值:計算結果的雙精度值。
常式如下:
求cosx。
#include
<stdio.h>
#include
<math.h>
int
main(void)
{
double
result;
double
x
=
M_PI;
result
=
cos(x);
printf("cos(PI)
is
%lf\n",
result);
return
0;
}
sin:正弦函數
函數原型:double
sin(double
x);
頭文件:#include<math.h>
是否是標准函數:是
函數功能:求x的正弦值,這里,x為弧度。
返回值:計算結果的雙精度值。
常式如下:
求sinx。
#include
<stdio.h>
#include
<math.h>
int
main(void)
{
float
x;
x=M_PI/2;
printf("sin(PI/2)=%f",sin(x));
getchar();
return
0;
}
Ⅲ 怎樣用c語言編寫一個程序用來輸出正弦函數值
首先:程序應該這樣改!
#include
#include
main()
{
double
n;
double
b,c;
scanf("%lf",&n);
b=sin(n);
c=cos(n);
printf("%.2lf\n%.2lf",b,c);
return
0;
}
其次,這里的n是弧度值,你說的90度應該輸入的是pi/2,而不是90,如果希望輸入90的話,那就這樣改!
#include
#include
main()
{
int
s;
double
n,b,c;
scanf("%d",&s);
n=3.1415926*(s/180.0);
b=sin(n);
c=cos(n);
printf("%.2lf\n%.2lf",b,c);
return
0;
}
Ⅳ C語言里sin函數和cos函數的調用
C語言里sin函數和cos函數是C標准數學函數庫中的函數,調用需要引入math.h頭文件。
一、sin()函數描述:
C 庫函數 double sin(double x) 返回弧度角 x 的正弦。sin() 函數的聲明:double sin(double x)。
參數:x -- 浮點值,代表了一個以弧度表示的角度。
返回值:該函數返回 x 的正弦。
二、cos() 函數描述:
cos() 函數的功能是求某個角的餘弦值。cos()函數的聲明:double cos(double x)。
參數:x -- 浮點值,代表了一個以弧度表示的角度。
返回值:該函數返回 x 的餘弦。
(4)c語言sin函數實現擴展閱讀:
相關的三角函數:
double asin (double); 結果介於[-PI/2,PI/2]
double acos (double); 結果介於[0,PI]
double atan (double); 反正切(主值),結果介於[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結果介於[-PI,PI]
Ⅳ 怎麼用c語言編正弦函數計算
樓上的各位已經提到了scanf輸入控制與目標數據類型不匹配的問題,即應改為:scanf("%f",&n);
另外三樓有提到說角度與弧度的問題,就是說sin()和cos()輸入需要保證為弧度,所以你需要轉換一下,比如你這個90度就應該約是1.57。
其實我覺得應該弄清楚的是為什麼在輸入控制錯誤的情況下,還會產生這樣的結果。
這是因為輸入控制錯誤,導致n的值沒有變化,也就是說後邊計算正弦餘弦的時候也是計算的n的初始值。你可以在先不改正輸入控制的前提下,在輸入語句前加一個輸出語句,看看n值為多少,如果沒猜錯的話,應該是0,進而計算的結果也當是正確的。也許你要問了,不是說局部變數自動變數未初始化的話值是隨機值么,怎麼會是0呢?是的,我也很納悶,也許適合具體的編譯環境有關吧,不同的編譯環境對這種情況可能處理會有所不同吧,留待自己去探究咯~
希望能幫到你~歡迎交流~
Ⅵ C語言sin怎麼用
C語言sin()用來計算參數x 的正玄值,然後將結果返回。返回-1 至1 之間的計算結果。
例子:
#include <math.h>
main(){
double answer = sin(0.5);
printf("sin(0.5) = %f ", answer);
}
執行
sin(0.5) = 0.479426
C語言sin():
sin()原型:double sin(double x)
sin()角度與弧度:
π=180°
1°=π/180
1(rad)=180/π
角度轉弧度:用角度乘以π/180
弧度轉角度:用弧度乘以180/π,或者用rtod()函數
(6)c語言sin函數實現擴展閱讀:
與sin相似的acos函數
函數名: acos
功 能:計算並返回arccos(x)值、要求-1<=X<=1
函數與形參類型:
double acos(x)
double x;
程序例:
#include <stdio.h>
#include <math.h> int main(void)
{
double result;
double x = 0.5; result = acos(x);
printf("The arc cosine of %lf is %lf ", x, result);
return 0;
}
Ⅶ 誰能給個c語言到sin()函數到實現源碼
#include<stdio.h>
#include<math.h>
doublesin(double);
doublenResult(double,double);
intmain()
{
doublex=0;
scanf("%lf",&x);
printf("sin(%lf)=%lf ",x,sin(x));
return0;
}
doublesin(doublex)
{
//sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……+(-1)(n^2n+1)/(2n+1)!+……
inti=0;
doubleresult=0,n=0;
while(fabs(n=nResult(x,2*++i-1))>0e-5)//絕對值大於10^-5次方就循環
result+=(i%2==1)?n:-n;
returnresult;
}
doublenResult(doublex,doublen)
{
//(n^2n+1)/(2n+1)!也就是n/1*n/2*n/3*n/4*.....n/(2n+1)
returnn==1?x:nResult(x,n-1)*x/n;
}
Ⅷ 對sin函數求"不定積分",用C語言如何實現
1.
c語言中要編寫sin函數,實質上要利用sin的泰勒公式,然後根據泰勒公式,將其中的每一項進行分解,最後用循環,累加計算出最終結果
2.
下面用for循環實現sin的演算法,程序代碼如下:
#include
#include
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語言的數組來實現一個正弦函數
1、C語言中要編寫sin函數,實質上要利用sin的泰勒公式,然後根據泰勒公式,將其中的每一項進行分解,最後用循環,累加計算出最終結果。
2、下面用for循環實現sin的演算法,程序代碼如下:
#include<stdio.h>#include<math.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語言sin程序(好答案追加分數)
程序沒錯!!!!!
我也在TC上運行正確!!
函數sin()的輸入的精度足夠高,要不假設它的精度才精確到小數點後2位,你想要4位的就不行的.實際其精確度也是有限的.
輸出的雙精度,你可以強制轉化,如:
int
n;
n=(int)(sin(x));
這樣不是可以變成int了.
但這樣似乎沒用,不是0就是1了.
當然了,x也可以是整數.計算時,系統自動進行將x轉為雙精度型.
程序結尾的getch();語句作用:
為了讓你很好的看程序結果,
不讓程序提前結束,
當然不用也可以看,但是上面不是顯示"按任意鍵結束"嗎?
當你想看結果時,不小心按了哪個鍵看不到了.
加上getch();後,這個函數的作用是從鍵盤(控制台)上接受一個字元.
這樣加了一次保險,不小心按一次,還可以看.就象帶保險套一樣,按多了一次,也就會結束了.
一句話,它就是為了讓你安全看程序結果.