C语言中求教一道有关级数的问题,真的不会写麻烦帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/11 16:28:33
利用泰勒级数 sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-x^11/11!.........
计算sin(x) 的值 ,要求最后一项的绝对值小于10-5,并统计出此时累计了
多少项,并输出,我虽然写出来了,但是数学问太浓了,我不会用循环写,写了很久了
希望大家帮帮我,谢谢了
还有一道是求数值的题目我也不大会把循环的算法写出来
题目如下:m=2/1*2/3*4/3*4/5*6/5*6/7*.......用循环求出m的前一百项的数值
我在这里向问问应该怎么练习才能把算法写好,我看了很多的题目,还是写的不行,但是
我身边的朋友很多看了复杂的题目也能很快的写出程序的算法,我想问问有没有什么好的
教材能帮助我练习有的话,麻烦大家提供一下,真的谢谢

泰勒级数:
返回double类型的sin值,如果负值表示失败.

double GetSin(int num,int x) /* num是你需要循环的次数,比如上面到11就是6次 */
{
double value = 0.0;
int flag = 1; /* 控制符号 */
int add = 1; /* 每项的递增值 */
long mul = 0; /* 临时值 */
double temp = 0;
int i = 0;

if(num < 1)return -1.0; /* 判断num的有效性 */

while(num)
{
mul = 1;
for(i = 0;i<num;i++)mul *= x; /*求分子*/

temp = mul/Mul(num); /* 得出每项值 */

value += flag*temp;

flag = -flag; /* 改变符号 */

add += 2; /* 递增2 */

num--; /*num减1*/
}
return value;
}

long Mul(int num) /*求阶乘*/
{
return num<=1?1:num*MUL(num-1);
}

第2个题目大同小异,希望你能根据上面的实现自己实现出第2个题目,其实算法要自己多写多练习,光看题目是不行的:)