當前位置:首頁 » 編程語言 » c語言計算sin2
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言計算sin2

發布時間: 2022-08-16 08:16:30

A. c語言 求sin值

首先,你的測試輸入和測試輸出的數據是對應不上的,你寫錯信息了!

輸入 3.1415026, 3 的時候,輸出才是 -0.07522 。

好了,正確的參考代碼如下:

#include<stdio.h>

doublepower(doublex,intn);//計算乘方的函數
doublefact(intn);//計算階乘的函數

intmain(intargc,charconst*argv[])
{
doublex,s;
intn;
intsign=1;//正負號開關變數,初始狀態為正
printf("Pleaseinputadecimalnumberx,apostiveintnumbern: ");
scanf("%lf%d",&x,&n);

for(inti=0;i<=n;i++)
{
s+=sign*power(x,2*i+1)/fact(2*i+1);
sign=-sign;
}

printf("x=%g,n=%d,s=%.5lf ",x,n,s);
return0;
}

//計算x^n
doublepower(doublex,intn)
{
doublep=1;
//這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變數造成影響。
for(;n--;)
{
p*=x;
}
returnp;
}

//計算n!
doublefact(intn)
{
doublef=1;
//這樣的循環條件,很簡潔。因為函數傳入的是形參,也不會對main的變數造成影響。
for(;n;)
{
f*=n--;
}
returnf;
}

測試截圖:(分別測試了角度為 180度、90度、45度的弧度值)

B. C語言編寫sin函數求教!

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. C/C++:sin1+sin2+sin3......+sinn在c語言中如何實現

答:C語言有專門的三角函數庫函數,如sin、cos等。使用時要包含頭文件math.h,書寫格式如sin(x)、cos(x)等;這些函數的形式參數是double型的且必須以弧度計,返回值也是double型。如本題面中的版式寫成C語言就是sin(1)、sin(2)、sin(3)、sin(n)等,得用一個循環語句計算。

D. 用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泰勒公式中的每一項拆成了分子,分母以及每一項前的符號這三項,以便於每一項的累加。

E. C語言中,如何把sin(2)這樣的三角函數表達式在編譯時預處理掉

預處理的概念就是不解析代碼。。既然不解析代碼又如何計算sin(2)的值?
樓主遇到的問題可以改寫代碼成
int
a=(int)sin(2.0);如果需要四捨五入可以改成
int
a=(int)(sin(2.0)+0.5);
當然也能用
#define
SIN2
0
不過不推薦

F. C語言用泰勒級數計算sinx,計算sin1,sin2都正確,sin3不正確,不知道哪裡錯了,求大神指導

#include<stdio.h>
#include<math.h>

main()
{
doublefactorial(intm);
intn=1,i=1;/*i為計數變數*/
doublesum=0,x,term;/*term為每一項*/

printf("pleaseinputxtocaculatesinx:");
scanf("%lf",&x);

for(;pow(x,2*n-1)/factorial(2*n-1)>=1e-5;)/*判斷最後一項是否大於1e-5*/
{
term=pow(-1,n-1)*pow(x,2*n-1)/factorial(2*n-1);/*計算每一項*/
sum=sum+term;
i++;
n++;
}
sum=sum+pow(-1,n-1)*pow(x,2*n-1)/factorial(2*n-1);/*補加上最後一個小於1e-5的項*/

printf("sin(x)=%lf time=%d ",sum,i);

return0;
}

doublefactorial(intm)/*計算階乘改成double類型,不然在超過13之後的數都溢出了!*/
{
doublefact=1;
if(m==0)
return(fact);
else
{
while(m)
{
fact*=m;
m--;
}
return(fact);
}
}

G. C語言中正弦函數

doublesin(doublex);

sin參數為double類型,返回值也為double

#include<stdio.h>
#include<math.h>
intmain()
{
constdoublepi=3.1415926;
doubled,e;
scanf("%f",&d);
e=sin(2*pi*d/63.84);
printf("%lf ",e);
return0;
}

H. 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()函數

(8)c語言計算sin2擴展閱讀:

與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;

}

I. 怎麼用c語言編正弦函數計算

  1. 樓上的各位已經提到了scanf輸入控制與目標數據類型不匹配的問題,即應改為:scanf("%f",&n);

  2. 另外三樓有提到說角度與弧度的問題,就是說sin()和cos()輸入需要保證為弧度,所以你需要轉換一下,比如你這個90度就應該約是1.57。

  3. 其實我覺得應該弄清楚的是為什麼在輸入控制錯誤的情況下,還會產生這樣的結果。

    這是因為輸入控制錯誤,導致n的值沒有變化,也就是說後邊計算正弦餘弦的時候也是計算的n的初始值。你可以在先不改正輸入控制的前提下,在輸入語句前加一個輸出語句,看看n值為多少,如果沒猜錯的話,應該是0,進而計算的結果也當是正確的。也許你要問了,不是說局部變數自動變數未初始化的話值是隨機值么,怎麼會是0呢?是的,我也很納悶,也許適合具體的編譯環境有關吧,不同的編譯環境對這種情況可能處理會有所不同吧,留待自己去探究咯~

    希望能幫到你~歡迎交流~