文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

sin(x)如何求解的java代码实现方法

2023-05-18 06:01

关注

1 泰勒级数介绍

近期工作中需要使用matlab建模,期间做案例的时候有个方程:sin(x)=0,要求不使用现有api进行求解,然后有点懵,不知道如何下手,最后翻了很多资料终于有点头绪。有了java的解题思路,再把思路转变为stateflow就简单了。

在数学中,泰勒级数用无限项连加式——级数来表示一个函数,这些相加的项由函数在某一点的导数求得。泰勒级数是以于1715年发表了泰勒公式的英国数学家布鲁克·泰勒的名字来命名的。通过函数在自变量零点的导数求得的泰勒级数又叫做麦克劳林级数,以苏格兰数学家科林·麦克劳林的名字命名。 泰勒级数在近似计算中有重要作用。

定理

以下图截取自百度百科。

泰勒级数的重要性体现在以下三个方面:

2 sin(x)泰勒级数变换求解

2.1 将sin(x)展开成泰勒级数的形式

sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...

2.2 定义变量

double x0 = 1.0; // 初始值
double error = 1.0; // 误差值
double tolerance = 1e-6; // 精度值
int n = 1; // 迭代次数

2.3  循环计算误差值

使用迭代公式不断逼近解,直到误差值小于精度值为止

while (error > tolerance) {
    double term = x0; // 泰勒级数的第一项
    double x = x0; // 迭代得到的新的x值
    for (int i = 1; i <= 2*n+1; i++) {
        term *= -x0*x0/(i*(i+1)); // 计算泰勒级数的下一项
        x += term; // 累加泰勒级数的各项
    }
    error = Math.abs(x - x0); // 计算误差值
    x0 = x; // 更新x0的值
    n++; // 迭代次数加1
}

2.4 完整java代码实现

public class Main {
    public static void main(String[] args) {
        double x0 = 1.0; // 初始值
        double error = 1.0; // 误差值
        double tolerance = 1e-6; // 精度值
        int n = 1; // 迭代次数
        while (error > tolerance) {
            double term = x0; // 泰勒级数的第一项
            double x = x0; // 迭代得到的新的x值
            for (int i = 1; i <= 2*n+1; i++) {
                term *= -x0*x0/(i*(i+1)); // 计算泰勒级数的下一项
                x += term; // 累加泰勒级数的各项
            }
            error = Math.abs(x - x0); // 计算误差值
            x0 = x; // 更新x0的值
            n++; // 迭代次数加1
        }
        System.out.println("sin(x) = 0 的一个解为 x = " + x0);
    }
}

运行结果:

sin(x) = 0 的一个解为 x = 3.141592653589793

3 总结

说实话,做了这么多年的开发,没有去注重这些实现,都是直接使用api。真正哪天需要从基础开始实现的时候,真的一头雾水。

这几天学了matlab,才知道自己知识多么薄弱,往后需要大补啊。

以上就是sin(x)如何求解的java代码实现方法的详细内容,更多关于java sin(x)求解的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯