| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1330 人关注过本帖
标题:X+ln(X)=0 用迭代法怎么求X?
只看楼主 加入收藏
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
结帖率:50%
收藏
已结贴  问题点数:15 回复次数:5 
X+ln(X)=0 用迭代法怎么求X?
X+ln(x)=0 用迭代法怎么求?
2011-06-21 16:34
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
----
2011-06-21 16:43
liuting8181
Rank: 2
等 级:论坛游民
帖 子:54
专家分:19
注 册:2011-4-21
收藏
得分:0 
回复 2楼 voidx
我用迭代法求出结果不对,最后这么做的 请指教下...
#include<stdio.h>
#include<math.h>

int main(void)
{
    double x1=1,x2;
   
   
    while(x1+log(x1)>1e-6)
    {
        x1=x1-(1e-6);
    }
    printf("%-4.6f\n",x1);
   return 0;
}
2011-06-21 16:54
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>

double f(double x) {
    return x + log(x);
}

int main() {
    double l = exp(-1), r = 1, x = (l + r) / 2;
    // 以下使用二分迭代法求解方程
    while (fabs(f(x)) > 1.0e-8) {
        if (f(x) > 0) {
            r = (l + r) / 2;
        }
        if (f(x) < 0) {
            l = (l + r) / 2;
        }
        // 以下代码防止在迭代过程中偏离方程的解
        while (f(l) > 0) {
            l -= (r - l) / 2;
        }
        while (f(r) < 0) {
            r += (r - l) / 2;
        }
        x = (l + r) / 2;
    }
    printf("x = %.10lf\nln(x) = %.10lf", x, log(x));
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-21 17:53 编辑 ]
2011-06-21 17:44
我不过去
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2011-6-11
收藏
得分:10 
我用你的程序编译后结果x=0.567143,没问题啊
2011-06-21 17:49
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:5 
嗯。楼主的答案确实没问题
2011-06-21 17:55
快速回复:X+ln(X)=0 用迭代法怎么求X?
数据加载中...
 
   



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

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