积分在c代码中,数值方法

时间:2018-05-24 15:08:16

标签: c numerical-methods

在大学里,我有一个名称数值方法的主题,我们主要解决c代码上的工程任务。我有一个新任务的问题,我必须准备。

正态分布曲线由下式给出:

F(x)= (1/(delta*sqrt(2*pi)))* e^-(((x-2)^2)/(2*delta^2)))

其中:

  • M - 平均值
  • Delta - 标准偏差

解: (m-(k*delta))上从(m+(k*delta))f(x)dx的积分 k=1,..., 6

解决使用过的集成方法。基于所获得的值与精确值的比较来确定积分精度。在记事本文件中的表中返回结果。

我写了第一行和一个函数f(x),但现在我不知道如何用这部分比较来编写程序的整体和其余部分。

你能帮帮我吗?

我有这个:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"

Void fun(float m, float s, float d)
 F=(1/s*(2*PI)**-1)*sqrt(exp((pow(d-m,2)/2*pow(d,2)));
 Return f;

Void main(void)
 FILE *file1;
 file1=fopen("file.dat","wt");
 Printf("give me m, s,d"/n);
 Scanf("%f,%f,%f",&m,&s,&d/n);

由于

1 个答案:

答案 0 :(得分:-1)

您的作业可能没有指定“方法”,但它是否指定了精度?不同的技术在更短/更长的时间内提供更好/更差的答案。这方面教授这些方法似乎是合适的。

理论上,积分是一个总和。您需要在离散的点集合中对函数进行采样,以距离delx分隔,并形成f(x)delx的总和。

您可以统一采样与否,并且您需要关注终点,根据您的采样方式,您将根据或高估估积分。存在许多处理更高精度算法的方法,这些可以在Numerical Recipes中找到(在FORTRAN,C,C ++等中)。高斯求积法是在特殊函数系列中的函数根处采样的优选方法。这些方法为样品设计加权因子,以便为几个点提供更好的精度。您要使用的集成方法的类型取决于您正在集成的函数的性质,即它是否表现良好,具有奇点等。因为您正在集成一个表现良好的函数,所以您应该“安全”但它在Num Rec。中查找各种方法可能是明智的。

梯形规则

Romberg整合

高斯正交

等等