| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:求一数学题思路
只看楼主 加入收藏
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
求一数学题思路
题目要求反正弦arcsinx,但是不能用头文件math.h中的函数,最后只是用库函数来验证
我一开始想用泰勒公式解决,后来发现arcsinx的n次导数似乎没有什么规律
各位有什么好的思路,真心求教
搜索更多相关主题的帖子: 数学题 
2011-02-24 21:59
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
https://bbs.bccn.net/thread-4387-1-1.html
我在站内搜到一位高人的答案,与各位一起共享
2011-02-24 22:02
丞相杀手
Rank: 6Rank: 6
等 级:侠之大者
帖 子:203
专家分:462
注 册:2011-1-11
收藏
得分:0 
先算反函数……

斗不过疯子,不参与争论。
2011-02-24 22:04
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
学习学习。。
2011-02-24 22:15
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
数学。。。想想都头疼。。。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-02-24 22:29
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
我是来学习的

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2011-02-24 23:23
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
重修数学来的

免费赠送河蟹一只
2011-02-25 08:23
Amy_huyier
Rank: 4
等 级:业余侠客
帖 子:46
专家分:265
注 册:2011-1-24
收藏
得分:20 
这个有很多方法吧。
可以把acrsin(x)=y。看成一个方程sin(y)-x=0.y是自变量。用二分求根法,或者牛顿求根法都行啊。如果不让用sin的话,可以把sinx展成级数。
还有,反三角函数是可以表示成无穷级数的,因为反三角函数可以表示成一个定积分,而定积分是可以近似为一个积分和的
2011-02-25 13:30
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
回复 8楼 Amy_huyier
感谢哦,这个思路挺好,我尝试做一下
2011-02-25 14:09
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>

int fact(int);
double xn(double,int);
double Sin(double);
double f(double,double);
double arcsin(double,double,double);
int main()
{
    double x,a,b;
    printf("请输入arcsinx中所要求的x的值:\n");
    scanf("%lf",&x);
    printf("请输入符合条件的a与b的值:\n");
    scanf("%lf%lf",&a,&b);
    while (f(a,x)*f(b,x)>0)
    {
        printf("不符合条件,请重新输入a与b的值:\n");
        scanf("%lf%lf",&a,&b);
    }
    printf("%lf %lf",arcsin(a,b,x),asin(x));
    return 0;
}
double arcsin(double a,double b,double x)//返回arcsinx的值,即返回使f(y)=0方程的解
{
    double c=(a+b)/2.0;
    while (fabs(a-b)>1e-8)//二分法求根,精度设置
    {
        if (f(c,x)*f(a,x)>1e-6)
            a=c;
        else
            b=c;
        c=(a+b)/2.0;
    }
    //printf("f(y)=%lf\n",f(c,x));
    return c;
}
double f(double y,double x)//求解函数f(y)=siny-x
{
    return Sin(y)-x;
}
double Sin(double x)//级数展开sinx
{
    int flag=1;
    double result=0;
    int n=0;
    while ( (xn(x,2*n+1)/fact(2*n+1)) > 1e-6 )//精度设置
    {
        result += (xn(x,2*n+1)/fact(2*n+1))*flag;
        flag=-flag;
        n++;
    }
    return result;
}
double xn(double x,int n)//求x的n次方
{
    while (n>1)
    {
        x=x*x;
        n--;
    }
    return x;
}
int fact(int n)//求阶乘
{
    int result=1;
    while (n>0)
    {
        result *= n;
        n--;
    }
    return result;
}
我想用二分法求根,sinx的级数展开等函数经过验证与库函数算出的值均相等
在使用函数arcsin(double,double,double)求根的时候,总是求不对,不知道哪里出了问题,请大家帮忙看一看

[ 本帖最后由 baobaoisme 于 2011-2-25 16:17 编辑 ]
2011-02-25 16:08
快速回复:求一数学题思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017053 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved