| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6249 人关注过本帖
标题:求牛顿迭代法详解(最好能举例说明)
只看楼主 加入收藏
zzzmx
该用户已被删除
收藏
已结贴  问题点数:10 回复次数:53 
求牛顿迭代法详解(最好能举例说明)
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 最好 百度 
2012-09-28 22:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
/* 用牛顿切线法求方程的近似值 */

#include <cstdio>
#include <cmath>
#include <conio.h>

double func(double x);        // 原函数
double func1(double x);        // 一阶导数
double func2(double x);        // 二阶导数

void main(void)
{
    double x1 = 1.0;                // 区间左端点
    double x2 = 5.0;                // 区间右端点
    double x = x1;                    // 方程的解
    const double error = 0.0001;    // 结果误差范围

    if (func(x1) * func(x2) < 0)
    {
        while (fabs(func(x)) > error)
        {
            if (func(x1) * func2(x1) > 0)
            {
                x1 -= func(x1) / func1(x1);
                x = x1;
            }
            else if (func(x2) * func2(x2) > 0)
            {
                x2 -= func(x2) / func1(x2);
                x = x2;
            }
        }
        printf_s("x = %.4f\n", x);
    }
    else
    {
        printf_s("no result!\n");
    }

    _getch();
}

double func(double x)
{
    return 2 * x * x * x - 4 * x * x + 3 * x - 6;
}

double func1(double x)
{
    return 6 * x * x - 8 * x + 3;
}

double func2(double x)
{
    return 12 * x - 8;
}

授人以渔,不授人以鱼。
2012-09-29 01:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这个函数的图像:

图片附件: 游客没有浏览图片的权限,请 登录注册

授人以渔,不授人以鱼。
2012-09-29 02:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 3楼 TonyDeng
多了几条竖线?

梅尚程荀
马谭杨奚







                                                       
2012-09-30 13:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
把切线画出来都可以,不过问问题的人都不见了,就免啦。

授人以渔,不授人以鱼。
2012-09-30 13:58
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-30 13:58:57的发言:

把切线画出来都可以,不过问问题的人都不见了,就免啦。

咦 是哦 怎么画一个点的切线 法线呢、、、

梅尚程荀
马谭杨奚







                                                       
2012-09-30 14:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
没看见我给你的类代码中有用点斜式画直线的吗?

授人以渔,不授人以鱼。
2012-09-30 14:07
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 7楼 TonyDeng
DrawLine(k, b)的参数只是斜率和截距
如果给定图像上一点 直接画出切线法线 传的参数是图像上一点的坐标x, y 就好了


梅尚程荀
马谭杨奚







                                                       
2012-09-30 14:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你自己写嘛,又不难。

授人以渔,不授人以鱼。
2012-09-30 14:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用TonyDeng在2012-9-30 14:23:39的发言:

你自己写嘛,又不难。

呵呵 试试看

梅尚程荀
马谭杨奚







                                                       
2012-09-30 14:24
快速回复:求牛顿迭代法详解(最好能举例说明)
数据加载中...
 
   



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

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