牛顿迭代法解高次方程和超越方程,新手求教

Ssinging7 2017-11-05 08:21:35


用迭代法求
x*sin(x)=1的解

及其

x^41+x^3+1=0 在 -1 附近的根

我用了 xn+1 = xn - f(xn)/f'(xn)的公式

这段是x*sin(x)=1的代码
# include <stdio.h>
# include <math.h>
# define eps 1e-6

int main(void)
{
float x0, x1;

x0 = 2.0;
x1 = (1 + x0*x0*cos(x0)) / (sin(x0) + x0*cos(x0));

do
{
x0 = x1;
x1 = (1 + x0*x0*cos(x0)) / (sin(x0) + x0*cos(x0));
}while(fabs(x0 - x1) > eps);

printf("%f", x1);

return 0;
}


结果是 1.114157 带回方程不成立
而且当初值是2的时候 结果是 -9.317243, 带回方程也不成立
每次初值改变结果都改变了?


这段是x^41+x^3+1=0的代码

# include <stdio.h>
# include <math.h>
# define eps 1e-6



int main(void)
{
float x0, x1;

x0 = 2.0;
x1= x0 - ((pow(x0, 41) + pow(x0, 3) + 1) / (pow(x0, 40) + 3*pow(x0, 2)));

do
{
x0 = x1;
x1= x0 - ((pow(x0, 41) + pow(x0, 3) + 1) / (pow(x0, 40) + 3*pow(x0, 2)));

}while (fabs(x1 - (-1)) > eps);

printf("%f\n", x1);


return 0;
}




结果是 -1.#IND00 据说是 0 作为除数了??


请教大家了!!!!万分感谢!!!
...全文
908 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aengus the GOD 2020-03-18
  • 打赏
  • 举报
回复
这个方程有无数个解,你可以画出图像看一下,牛顿迭代法依赖于初值,初值不同,收敛区间不同也就导致收敛得到的结果不同,上面1.114157和-9.317243是对的,应该是你带回去的时候弧度和角度没进行转换。
赵4老师 2017-11-06
  • 打赏
  • 举报
回复
仅供参考:
//用C语言编程,求出2^x=x^10这个方程的解。
#include <math.h>
#include <stdio.h>
double x,e;
void main () {
    x=-1.0;
    e=0.001;
    while (1) {
        while (1) {
            if (pow(2.0,x)<pow(x,10.0)) {
                x+=e;
            } else {
                break;
            }
        }
        e/=10.0;
        if (e<1e-15) break;
        while (1) {
            if (pow(2.0,x)>pow(x,10.0)) {
                x-=e;
            } else {
                break;
            }
        }
        e/=10.0;
        if (e<1e-15) break;
    }
    printf("%+.14g\n",x);

    x=1.0;
    e=0.001;
    while (1) {
        while (1) {
            if (pow(2.0,x)>pow(x,10.0)) {
                x+=e;
            } else {
                break;
            }
        }
        e/=10.0;
        if (e<1e-15) break;
        while (1) {
            if (pow(2.0,x)<pow(x,10.0)) {
                x-=e;
            } else {
                break;
            }
        }
        e/=10.0;
        if (e<1e-15) break;
    }
    printf("%+.14g\n",x);
}

致看到这个简介的你您是否曾对时变陷波器领域感到好奇?是否希望深入了其背后的知识点和相关公式推导,并渴望学习如何将其应用于实际情况?如果是的话,那么恭喜您!发现了您绝不能错过的一门论文复现课程——《使用时变陷波滤波器在低信噪比下进行瞬时频率估计-TVNF论文复现》。本课程旨在帮助您全面理时变陷波器的原理、设计和应用。无论您是工程师、学生还是科研人员,相信这门课程都将为您提供宝贵的知识和技能。课程亮点:知识点详:本课程将深入讲时变陷波器的基本概念和原理,涵盖了从滤波器设计到信号处理的关键知识点。公式推导:本课程将引导您逐步推导时变陷波器的数学模型和相关公式,助您深入理其工作原理。实践操作:通过实践案例和实验环节,您将有机会亲自动手复现时变陷波器,并掌握实际操作的技巧和窍门。应用案例:本课程将分享现实应用案例,展示时变陷波器在通信等领域的广泛应用。互动学习:课程设置有讨论小组,您可以与讲师和其他学员互动交流,共同探讨问题和决方案。无论您是初学者还是有一定基础的专业人士,本课程都将根据您的需求进行量身定制,确保您能够从中获得最大的收益和成长。跟随本课程一起踏上时变陷波器的探索之旅吧!这是一个充满挑战和机遇的领域,相信您将在本课程中找到乐趣和启发,并获得您所期望的结果。祝学习愉快!课程团队  论文简介:这篇论文旨在寻找参数信号模型,这些模型在低信噪比(SNR)下对噪声音调有良好的建模性能。我们关注的是一个应用于数据段的模型,而不是像自适应方法那样按顺序处理数据。受到陷波滤波器理论的启发,我们将著名的时变自回归(TVAR)模型扩展到包括加性噪声的效应,并得出两种类型的时变陷波滤波器(TVNF)。第一种,就像TVAR模型一样,采用滤波器系数的基函数展开。对于第二种,我们利用音调瞬时频率(IF)与分母多项式根的角度直接成比例的事实,并对IF进行基函数展开。自适应陷波滤波器众所周知,并已成功应用于几个领域。通过对模拟信号的应用,TVNF是低SNR 下IF估计的有用工具。TVNF估计采用正则化的高斯-牛顿类型迭代搜索算法,该算法表现出快速和可靠的收敛性。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧