求“开方”算法
俺刚学c++不久
今天突然要用到“开方”
回想起来还真不知道咋实现
求朋友们给说说
感激不禁
问题点数:10、回复次数:7Top
1 楼Roaming_Sheep(Roaming Sheep)回复于 2006-05-01 17:34:57 得分 0
sqrt函数,好像是在math.h定义
Top
2 楼xishuaiya(蟋蟀)回复于 2006-05-01 17:57:40 得分 0
sorry,
我没说清
应该是开任意次方的算法啊
谢谢大家帮助!Top
3 楼gernal_dn()回复于 2006-05-01 20:28:28 得分 10
通过对数变换即可。
a ^ b = exp( b * ln(a) )
Top
4 楼agcty(thinking is very important~~~)回复于 2006-05-01 20:56:25 得分 0
若求X^n=c,即X=c^(1/n)
f(X)=X^n-c=0
f '(X)=nX^(n-1)
用牛顿迭代法解出X即可
迭代格式:
Xn+1=Xn-f (X)/f '(X)
=Xn-(X^n-c)/(nX^(n-1))
当|Xn+1 - Xn|-->e时,退出
此时的X即为所求解Top
5 楼agcty(thinking is very important~~~)回复于 2006-05-01 20:58:23 得分 0
看看数值分析与算法的书
会很有帮助的Top
6 楼zhangwanlong(david++)回复于 2006-05-01 23:19:19 得分 0
// 通吃一切A的X次方形式的
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define PI 3.1415926535897932384626
float ax( float a, float x );
float ax( float a, float x )
{
return sinh(x*log(a)) + cosh(x*log(a));
}
int main(int argc, char *argv[])
{
float a,x;
a:
scanf("%f%f",&a,&x);
printf("%f\nPress any key.", ax(a,x));
goto a;
return 0;
}Top
7 楼wupin123456789()回复于 2006-05-08 11:13:01 得分 0
在C里面可以用SQRT,C++没学过,应该是一样的吧Top




