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

c代码中的积分,数值方法,c,numerical-methods,C,Numerical Methods,在大学里,我有一门课程叫数值方法,我们主要解决c代码上的工程任务。我有一个新任务的问题,我必须准备 正态分布曲线由以下等式给出: F(x)= (1/(delta*sqrt(2*pi)))* e^-(((x-2)^2)/(2*delta^2))) 其中: M-平均值 Delta-标准偏差 解决: 在f(x)dx上从(m-(k*delta))到(m+(k*delta))的积分 k=1,…,6 采用积分法求解。根据所得值与精确值的比较确定积分精度。在记事本文件的表格中返回结果 我写了前几行和一个

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

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

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

  • M
    -平均值
  • Delta
    -标准偏差
解决: 在
f(x)dx上从
(m-(k*delta))
(m+(k*delta))
的积分
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);

谢谢

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

理论上,积分是和。您需要在一组离散的点上对函数进行采样,用距离delx分隔,并形成f(x)delx之和

你可以统一采样,也可以不采样,你需要关心终点,你会低估或高估积分,这取决于你采样的方式。存在着一系列处理高精度算法的方法,这些方法可以在数字配方(FORTRAN、C、C++等)中找到。高斯求积是在特殊函数序列中函数根处采样的首选方法。这些方法为样本生成加权因子,设计用于对样本进行加权,从而为少数点提供更好的精度。要使用的集成方法的类型取决于所集成函数的性质,即它是否表现良好、是否具有奇点等。由于您正在集成表现良好的函数,因此您应该是“安全的”,但在Num Rec中查找各种方法可能是明智的

梯形法则

隆伯格积分

高斯求积


etc etc

听起来你想做一些数值积分(参见,例如,or)来获得近似值。除非他们详细说明了什么样的积分方法,你能不能在积分边界上为k=1,…,6的每次迭代以固定的宽度预成一个黎曼和?如果可以,这是个好主意,最后的结果是否很少,取决于k?如何用c语言编写这个积分?通过阅读下面的内容来刷新微积分的记忆。实现的黎曼和只能近似于某些误差范围内的面积。
erf()
。不客气。