當前位置:首頁 » 編程語言 » c語言sinx近似值演算法

c語言sinx近似值演算法

發布時間: 2022-05-26 10:24:51

『壹』 用c語言求多項式求sinx的近似值。

#include <stdio.h>
double factorial(double n)
{//求n!
double result=1;
for(int i=1;i<=n;i++)
{
result*=i;
}
return result;
}
double sinx(double x,int n)
{//求sin(x),精度為n
double result=0;
bool bAdd=true;//是加還是減
for(int i=1;i<=n;i++)
{
if(bAdd)
{
result+=((double)x*(2*i-1)/factorial(2*i-1));
}
else
{
result-=((double)x*(2*i-1)/factorial(2*i-1));
}
bAdd=!bAdd;
}
return result;
}
void main()
{
printf("%f\r\n",sinx(0.4,10));
}

『貳』 c語言問題 編寫程序,計算sinx的近似值,精確到10的負六次方

#include<stdio.h>
#include<math.h>
main()
{
float a,b=1;
float i,sinx,x;
scanf("%f",&x);
a=x;
sinx=0;
for(i=1;fabs(a/b)>=1e-6;i++)
{
sinx+=a/b;
a=-a*x*x;
b=b*2*i*(2*i+1); }
printf("%f",sinx);
}

『叄』 C語言計算sinx的近似值

/*sinx=x-x^3/3!+x^5/5-x^7/7!...*/
#include<stdio.h>
#include<math.h>
#define ACCURARY 0.00000001

main()
{
int i=1,j=1,k,n=1,x;
printf("sinx=x-x^3/3!+x^5/5-x^7/7!...\n請輸入一個x\n");
scanf("%d",&x);
double sinx=0;
for(i=1;fabs(t)>=ACCURARY;i+=2)
{
for(k=1;k<=i;k++)
{n=n*i;}
j++;
t=pow(-1,j)*pow(x,i)/n;
sinx=sinx+t;
}
printf("sin%d=%.8f\n",x,sinx);
}
編譯一下,看看行不,我好久沒弄了。

『肆』 C語言編程計算sinx的近似值

#include"stdio.h"
intmain(intargc,char*argv[]){
doublex,s,t,eps;
inti;
printf("Pleaseenterx&eps(R:0<eps<1)... ");
if(scanf("%lf%lf",&x,&eps)!=2||eps<=0||eps>=1){
printf("Inputerror,exit... ");
return0;
}
printf("sin(%g)≈",x);
for(s=t=x,x*=x,i=1;t>=eps;i++){
(t*=x)/=((i*i<<2)+i+i);
s+=i&1?-t:t;
}
printf("%f ",s);
return0;
}

運行樣例:

『伍』 c語言求sinx的近似值!!!!!急

修改及測試代碼如下:
#include <stdio.h>
#include <math.h>
double fact(n)
//數據類型使用有誤
{
int x;
double y;
y=1;
for(x=1;x<=n;x++){
y=y*x;
}
return y;
}
int main()
{//思路有些亂
double i,sum,x;
int n=1,flag=1;
scanf("%lf",&x);
i=x;//第一項
sum=0;
while(fabs(i)>=0.000001) //少了一個0
{
sum+=i;
flag=-flag;
n=n+2;
i=(flag*pow(x,n)/fact(n));
}
printf("%.10f\n",sin(x));
printf("sin<%f>=%.10f",x,sum);
return 0;
}

『陸』 用c語言計算sin(x)的近似值的代碼

根據台勞公式:
sin(x)=x-(x^3)/3!+(x^5)/5!+……(-1)^(n)x^(2n+1)/(2n+1)!
採用遞推法根據級數的前20項計算sin(x)的近似值:
(注: x為弧度值, x^(n+1)表示x的n+1次方)

我寫的代碼如下:
# include <stdio.h>
int main ()
{
double sx,x,a,b;
int n,f=1;
printf ("Please input x:");
scanf ("%lf",&x);
sx=a=x;
b=1;
for (n=1;n<=20;++n)
{

a*=x*x;

b*=4*n*n+2*n;

f=-f;

sx+=a/b*f;
}
printf ("sin(x)=%lf\n",sx);
return 0;
}

希望對你有所幫助。

『柒』 c語言編程求sinx的近似值(泰勒展開)

您好,是這樣的:泰勒展開是這個:sinx=x-x^3/3!+x^5/5!-..
下面給出算20項的程序。

#include"math.h"
#include"stdio.h"
void main()
{
double x=0,y=0,z=1,s=1,mynum=0;
int i=1 ,j=0, k=1;
scanf("x=%f",&x);

for(i=1;i<20;i++)

z=1;k=1;
for(j=1;j<=2*i-1;j++)
{
z=x*z;//算j次方
k=k*j;//算階乘}
s=-j*pow(-1,i);//pow(a,b)是a的b次方
z=z*s/k;

mymun=mynum+z;
}
printf("sinx=x-x^3/3!+x^5/5!-..");
printf("sinx=%f",mynum);
getch();
}

『捌』 C語言初學者請教!編程求sinx近似值,已寫程序,求改錯!

#include<stdio.h> /*以下代碼運行通過*/
#include<math.h>
main()
{
float sum,sinx,x,s;
int i,j; /*j為-1的次方變數*/
printf("Please inter x: \n");
scanf("%f",&x);
i=1;s=1;j=-1;
sum=0;
sinx=sin(x);
printf("%f\n",sinx);
for(i=1;(fabs(sum-sinx))>=0.000001;i=i++) /*你的程序中這句判斷有錯,應該是大於該精度內的sum值執行for內循環語句。*/
{ s=s*i;
if(i%2!=0) /*當i為奇數時,才執行,把偶數跳過,但s的值仍變化,這樣除以的就是階乘。*/
{ j=-j; /*用j來控制正負號*/
sum+=(double)(pow(x,i)/s)*j;
}
}
printf("sinx=%f\n",sum);

}

『玖』 c語言求泰勒公式sinx近似值

你的程序錯誤太多。直接給出按泰勒公式展開求sinx近似值的程序。

#include<stdio.h>
#include<math.h>
intmain()
{
doublei,x,k,s=0;
scanf("%lf",&x);
k=x;
for(i=1;abs(k)>=0.0000001;i++)
{s+=k;k*=-x*x/(i*2*(i*2+1));}
printf("%.3lf",s);
return0;
}

//運行示例截圖:

此時輸入為角度值,例如截圖中輸入30,輸出為0.5。

本題屬於基礎題。很簡單的程序,不要人為復雜化。

熱點內容
ftp下載軟體安卓 發布:2025-02-12 23:07:24 瀏覽:565
c搜索演算法 發布:2025-02-12 23:05:47 瀏覽:860
返回伺服器地址 發布:2025-02-12 23:05:45 瀏覽:179
我的世界推薦在線伺服器 發布:2025-02-12 23:00:18 瀏覽:460
什麼是解壓目錄 發布:2025-02-12 22:49:24 瀏覽:979
惠普電腦選購要考慮哪些因素配置 發布:2025-02-12 22:43:50 瀏覽:221
演算法導論和演算法 發布:2025-02-12 22:43:13 瀏覽:930
兒童電動車遙控如何配置 發布:2025-02-12 22:37:54 瀏覽:248
crm客戶關系管理源碼 發布:2025-02-12 22:34:10 瀏覽:987
c與java編譯過程 發布:2025-02-12 21:47:47 瀏覽:374