double pow(double x,double n)?
創(chuàng)新互聯(lián)公司長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為高明企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),高明網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
是math.h里一函數(shù),求x的n次冪?
x必須0,
立方根就是1/3次冪了?
但這里要用3.0或1.0/3,否則成了整除結(jié)果為1
C語言是一門通用計(jì)算機(jī)編程語言,應(yīng)用廣泛。C語言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。
C語言中sqrt函數(shù)是指的開方運(yùn)算函數(shù),得到的結(jié)果是函數(shù)變量(可以是數(shù)值,也可以是變量名)的算術(shù)平方根。
注意看一下程序的注釋部分,希望能幫到你:
#includestdio.h????????
main()????????
{????????
int?x,y;????????
printf("請(qǐng)輸入數(shù)字:");??//這里加上一句友情提示???????
scanf("%d",x);??????????//這里的上下兩句對(duì)調(diào),同時(shí)?x?的前面加上??地址符?
y=x*x*x;?????????????????//這里的上下兩句對(duì)調(diào)
printf("y=%d\n",y);????????
}
上面的程序,求一般的數(shù)值,夠了,但是數(shù)太大,就會(huì)溢出了,建議x、y變量改成?double 類型
#includestdio.h????????
main()????????
{????????
double?x,y;????????
printf("請(qǐng)輸入數(shù)字:");??//這里加上一句友情提示???????
scanf("%d",x);??????????//這里的上下兩句對(duì)調(diào),同時(shí)?x?的前面加上??地址符?
y=x*x*x;?????????????????//這里的上下兩句對(duì)調(diào)
printf("y=%d\n",y);????????
}
這其實(shí)就是一個(gè)解三元二次次方程組。
設(shè)三個(gè)點(diǎn)為(x1,y1),(x2,y2),(x3,y3)
用x1,y1,x2,y2,x3,y3這六個(gè)數(shù)把a(bǔ),b,c表示出來,這樣你可以得到三個(gè)式子。
把這三個(gè)式子用C語言表達(dá)出來,就可以了。
如果你想用計(jì)算機(jī)自己進(jìn)行方程求解,也不是不可以,但稍許有些復(fù)雜,應(yīng)該超出你所學(xué)范圍了。
C語言中計(jì)算一個(gè)數(shù)的N次方可以用庫(kù)函數(shù)pow來實(shí)現(xiàn)。
函數(shù)原型:double pow(double x, double y);
功 能:計(jì)算x^y的值
返 回 值:計(jì)算結(jié)果
舉例如下:
double a = pow(3.14, 2); // 計(jì)算3.14的平方
注:使用pow函數(shù)時(shí),需要將頭文件#includemath.h包含進(jìn)源文件中。
用牛頓迭代公式Xn+1=Xn-f(Xn)/f'(Xn)
其中f(X)=X^3-a
float CubeRoot(float a){
float root=1.0; /*迭代初始值,隨便取一個(gè)數(shù),但不要是0*/
while(fabs(root*root*root-a)=0.0001) /*設(shè)定迭代精確度,如果精度比較高的話可以把root定義為double,防止死循環(huán)?;蛘呖梢栽谘h(huán)內(nèi)部根據(jù)迭代次數(shù)調(diào)整精度*/
root=root-(root*root*root-a)/(3*root*root);
return root;
}
int main(void){
float a;
float CubeRoot(float a);
printf("Please input a: "); scanf("%f",a);
printf("\nThe cube root of %f is %f",a,CubeRoot(a));
return 0;
}
#include stdio.h
#include stdlib.h
#include malloc.h
#include math.h
#define N 3 /* 3個(gè)未知數(shù),3個(gè)方程組 */
float **p = NULL;
float b[N * (N + 1)] ={2,1,1,28,
5,2,2,66,
10,5,4,137};
/* 3元方程組的數(shù)據(jù), 自己可以隨意修改數(shù)值, 還可以修改N 和浮點(diǎn)數(shù)組實(shí)現(xiàn)任意多階方程組求解*/
float ** build_array(int r, int c)
{
int i = 0;
float *p1 = malloc(r * c * sizeof(float));
float **p2 = malloc( r * sizeof(float *));
for(i = 0; i r; i++)
{
p2[i] = p1[i * c];
}
return p2;
}
void free_room(float **p)
{
free(*p);
free(p);
}
void init(int row, int cul)
{
int i, j;
int cnt = 0;
for(i = 0; i row; i++)
{
for(j = 0; j cul; j++)
{
p[i][j] = b[cnt++];
}
}
}
void gs(float **p, int row, int cul) /* 高斯消元法*/
{
int i = 0;
int j = 0;
float tmp1,tmp2;
for(i = 0; i row; i++)
{
tmp1 = p[i][i];
for(j = 0; j cul; j++)
{
p[i][j] /= tmp1;
}
int k;
for(k = i + 1; k row; k++)
{
tmp2 = p[k][i];
for(j = 0; j cul; j++)
{
p[k][j] -= tmp2 * p[i][j];
}
}
}
}
void qiujie(int hang)
{
float y[hang];
int m = 0;
float tmp3;
int z = 0;
for(m = hang-1; m = 0; m--)
{
tmp3 = 0;
for(z = hang-1; z m; z--)
{
tmp3 += p[m][z] * y[z];
}
printf("y[%d] = %f\n", m, y[m] = (p[m][hang] - tmp3));
}
}
int main(void)
{
int m = 0;
int x = 0;
p = build_array(N, N+1);
init(N, N+1);
gs(p, N, N+1);
for(m = 0; m N; m++)
{
for(x = 0; x N + 1; x++)
{
printf(" %2f ", p[m][x]);
}
printf("\n");
}
qiujie(N);
free_room(p);
}