c代码中的积分,数值方法
在大学里,我有一门课程叫数值方法,我们主要解决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 采用积分法求解。根据所得值与精确值的比较确定积分精度。在记事本文件的表格中返回结果 我写了前几行和一个
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()
。不客气。