如何在sage或mathematica中写代码才能得到正确的分段解,避免沉默错误?

  数学 微积分 数值计算 Matlab Mathematica    浏览次数:1602        分享
0

例如我们要求sqrt(2+2*cosx)的不定积分 和 0-2pi的数值积分

关键步骤时到了 sqrt(4*(cos(x/2))^2) 开平方后 要变成abs(2*(cos(x/2))如果我们要求这个绝对值的不定积分 或 0 到 2pi 的数值积分。假设我们在考试。

那么不定积分应该写成:x属于 0-pi: 4sin(θ/2)

                                   x属于 pi-2pi: -4sin(θ/2)

数值积分当然应该在不同区间代入不同解析解求解。

达到以上标准才能得分。

可是当我用sage直接求sqrt(2+2*cosx)的不定积分,只得到了2个解中的一个,即4sin(θ/2) 。当然计算 0 到 2pi 的数值积分自然会得到错误答案0。

考虑到分段解在数学中非常常见。如果让软件自动给出分段解?(所谓自动的意思就是让软件自动划段,而不是人工去划段再分别计算结果) 从而避免出现沉默错误?注:该问的的讨论不局限于sage,给出mathematica的代码也可以。主要是想得到一个思路,所以代码最好有注释

另外用sage求解sqrt(2-2*cosx) 的不定积分。直接给出错误答案https://sagecell.sagemath.org/?z=eJyrsC1LLNJQr1DX5MpJLEmt0MjMK0lNL0rM0dAw0jXSSs4v1qjQ1Iwz0DPVAdIAW0IN5Q==&lang=sage&interacts=eJyLjgUAARUAuQ==

只有将计算步骤推进到2*sin(x/2) 求不定积分。才能得到正确答案。不知道应该怎样写代码才能从第一步开始计算就能得到正确答案?

 

wufaxian   2020-10-09 11:06



    还没有回答。我来答!  


  相关讨论

不用洛必达法则证明sin x比上x的极限是1

geogebra绘制向量值函数位置图象方法对么?

计算中的截断误差是什么意思?

能不能用梯度下降法求平方根或者立方根?

怎么用牛顿法近似求解根号2?

随机梯度下降(SGD)可以被并行计算吗?

关于随机梯度下降法(SGD)的问题

SGD with clipping是什么意思?

Adam优化算法

高斯消元选部分主元为什么要选最大的?

  随便看看

pandas.DataFrame更改列名

numpy里矩阵乘法matmul,@和dot的区别?

对于xgboost,还有必要做很多特征工程吗?

numpy里生成单位矩阵?

分类特征的目标编码是什么意思?