标签: numerical-analysis

用定点迭代求解这个等式

我怎样才能解决这个等式

x 3 + x - 1 = 0

使用定点迭代?

我可以在网上找到任何定点迭代代码(特别是在Python中)吗?

python equation nonlinear-functions numerical-analysis fixed-point-iteration

9
推荐指数
1
解决办法
9203
查看次数

用二分法求解方程

有没有我可以在网上找到的二分法,特别是对于python?

例如,给定这些方程式,我如何使用二分法求解它们?

x^3 = 9  
3 * x^3 + x^2 = x + 5  
cos^2x + 6 = x  
Run Code Online (Sandbox Code Playgroud)

python numerical-analysis bisection

9
推荐指数
1
解决办法
1万
查看次数

分析噪声数据

我最近发射了一种带有气压高度计的火箭,精确到大约10英尺(通过飞行期间获得的数据计算).记录的数据是每个样本0.05秒的时间增量,高度与时间的关系图看起来非常像在整个飞行过程中缩小.

问题是当我尝试从数据中计算其他值(如速度或加速度)时,测量的准确性使得计算值几乎毫无价值.我可以使用哪些技术来平滑数据,以便计算(或近似)速度和加速度的合理值?重要的是,重大事件应及时保持到位,最明显的是第一次进入的0和飞行期间的最高点(2707).

高度数据遵循并以英尺高于地面水平测量.第一次为0.00,每个样品在前一个样品后0.05秒.飞行开始时的尖峰是由于在升空期间发生的技术问题并且去除尖峰是最佳的.

我最初尝试使用线性插值,对附近的数据点求平均值,但是需要多次迭代才能使数据平滑到足以进行积分,并且曲线的平坦化消除了重要的远地点和地平面事件.

非常感谢所有帮助.请注意,这不是完整的数据集,我正在寻找有关更好的数据分析方法的建议,而不是有人回复转换后的数据集.在未来的火箭上使用算法会很好,它可以在不知道完整的飞行数据的情况下预测当前的高度/速度/加速度,尽管这不是必需的.

00000
00000
00000
00076
00229
00095
00057
00038
00048
00057
00057
00076
00086
00095
00105
00114
00124
00133
00152
00152
00171
00190
00200
00219
00229
00248
00267
00277
00286
00305
00334
00343
00363
00363
00382
00382
00401
00420
00440
00459
00469
00488
00517
00527
00546
00565
00585
00613
00633
00652
00671
00691
00710
00729
00759
00778
00798
00817
00837
00856
00885
00904
00924
00944
00963
00983
01002
01022
01041
01061
01080
01100
01120
01139
01149 …
Run Code Online (Sandbox Code Playgroud)

data-mining numerical-analysis

8
推荐指数
1
解决办法
1502
查看次数

计算两个值的平均值,最大限度地减少错误

我正在进行一些浮点计算,结果并不像我希望的那样准确.

这是算法:

...
center = (max_x + min_x) / 2
distance = old_x - center
new_x = center + (distance * factor)

return new_x

min_x,max_x和old_x都是浮点数.我相信当我取最大值和最小值的平均值时会引入最大误差,然后将误差乘以因子(可以是浮点数).

如何最小化FP计算引起的误差,以便new_x尽可能精确?

algorithm floating-point numerical-analysis

8
推荐指数
1
解决办法
866
查看次数

Lambert W在Java中的函数实现

我正在研究一个项目并且发现自己处于这样一种情况:我需要一个能够至少得到W(x)值的近似值的Lambert W函数,其中x可以是任何实数.我在Java工作.我搜索时在java中找不到任何W的实现.如果需要,我愿意自己编写实现代码,但我不确定现在该怎么做.任何推动正确的方向将非常感激.

java math numerical-analysis

8
推荐指数
1
解决办法
2607
查看次数

平方差的数值精度

在我的代码中,我经常计算类似下面的内容(这里为简单的C代码):

float cos_theta = /* some simple operations; no cosf call! */;
float sin_theta = sqrtf(1.0f - cos_theta * cos_theta); // Option 1
Run Code Online (Sandbox Code Playgroud)

对于此示例,请忽略由于不精确而导致平方根的参数可能为负.我通过额外的fdimf电话修好了.但是,我想知道以下是否更精确:

float sin_theta = sqrtf((1.0f + cos_theta) * (1.0f - cos_theta)); // Option 2
Run Code Online (Sandbox Code Playgroud)

cos_theta介于两者之间-1,+1因此对于每种选择都会有一些情况,我会减去相似的数字,因此会失去精度,对吧?什么是最精确的,为什么?

c c++ numerical-analysis

8
推荐指数
1
解决办法
660
查看次数

如何通过Runge-Kutta 4传递硬编码微分方程

我试图在C#中实现Runge-Kutta例如问题dy/dt = y - t ^ 2 + 1和dy/dt = t*y + t ^ 3,我似乎无法获得我期望的输出.我将我的程序分成几个类,试着单独查看工作.我认为我的主要错误来自于尝试使用委托将一个方法通过Runge-Kutta进程作为变量传递.

方程类:

namespace RK4
{
    public class Eqn
    {
        double t;
        double y;
        double dt;
        double b;
        public Eqn(double t, double y, double dt, double b)
        {
            this.t = t;
            this.y = y;
            this.dt = dt;
            this.b = b;
        }
        public void Run1()
        {
            double temp;
            int step = 1;
            RK4 n = new RK4();
            while (t < b)
                    {
                        temp = n.Runge(t, y, dt, FN1); …
Run Code Online (Sandbox Code Playgroud)

c# numerical-analysis

8
推荐指数
1
解决办法
841
查看次数

避免精度损失的最佳算法?

我收到的最近的家庭作业要求我们采取表达式,这些表达式可能会在计算机中执行时造成精度损失,并对其进行更改以避免这种损失.

不幸的是,这样做的方向尚未明确.通过观察正在执行的各种示例,我知道有一些方法可以做到这一点:使用泰勒级数,如果涉及平方根则使用共轭,或者在减去两个分数时找到共同的分母.

但是,我很难注意到何时会发生精度损失.到目前为止,我唯一确定的是,当你减去两个接近相同的数字时,由于高阶数字很重要,你会失去精确度,而你会因为四舍五入而失去精确数字.

我的问题是我应该寻找的其他常见情况,以及接近它们的"好"方法是什么?

例如,这是一个问题:

f(x) = tan(x) ? sin(x)  when x ~ 0
Run Code Online (Sandbox Code Playgroud)

在这三种选择中评估这一点的最佳和最差算法是什么:

(a) (1/ cos(x) ? 1) sin(x),
(b) (x^3)/2
(c) tan(x)*(sin(x)^2)/(cos(x) + 1).
Run Code Online (Sandbox Code Playgroud)

据我所知,当x接近于零时,tan(x)和sin(x)几乎相同.我不明白为解决这个问题,这些算法中的任何一个或更好的方式或原因.

precision numerical-analysis

7
推荐指数
1
解决办法
2880
查看次数

绑定此程序以确定不包含零的倒数整数之和

分别表示该组正整数,其十进制表示不包含的元件的倒数之和的第0位已知为23.10345.

防爆.1,2,3,4,5,6,7,8,9,11-19,21-29,31-39,41-49,51-59,61-69,71-79,81-89, 91-99,111-119,......

然后取每个数的倒数,并总和.

如何通过数字验证?

编写一个计算机程序来验证这个号码.

以下是我迄今为止写的,我需要帮助的边界这个问题,因为目前这需要很长时间才能完成:

Java中的代码

import java.util.*; 

public class recip
{
    public static void main(String[] args)
    {
        int current = 0; double total = 0;

        while(total < 23.10245)
        {
            if(Integer.toString(current).contains("0"))
            {
                current++;
            }
            else
            {
                total = total + (1/(double)current);
                current++;
            }
            System.out.println("Total: " + total);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java math bounding numerical-analysis numerical-methods

7
推荐指数
1
解决办法
3107
查看次数

从随机像素插值图像

我想问一个关于单通道图像插值的问题.选择单通道只是为了简单起见,否则我正在处理多个通道图像.假设存在具有纯黑色背景(像素强度0)的单个通道图像,其中存在具有非零强度值的一些像素.我想应用插值算法用来自相邻非零强度像素的插值来填充图像的整个黑色区域.

对于适用于此问题的平滑插值,您会推荐哪种插值算法?

作为输入,我们当然知道那些非黑色像素的位置及其强度.但该位置有些随机(一行可能是10个像素,另一行只有8个).

在此输入图像描述

matlab image image-processing numerical-analysis

7
推荐指数
1
解决办法
1998
查看次数