[英]Integral in c code, numerical method
在大學里,我有一個主題是數值方法,我們主要解決有關c代碼的工程任務。 我對必須准備的新任務有疑問。
正態分布曲線由以下公式給出:
F(x)= (1/(delta*sqrt(2*pi)))* e^-(((x-2)^2)/(2*delta^2)))
哪里:
M
平均值 Delta
-標准偏差 解決:在f(x)dx
k=1,..., 6
,上從(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);
謝謝
您的作業可能沒有指定“方法”,但是指定了精度嗎? 不同的技術可以在更短/更長的時間內提供更好/更差的答案。 在此課程上講這些方法似乎很合適。
理論上,積分是一個總和。 您需要在一組離散的點上采樣該函數,並用距離delx隔開,並形成f(x)delx的總和。
您可以統一采樣與否,並且您需要關心終點,根據采樣方式,您可能會估計不足或過高。 存在許多用於處理高精度算法的方法,這些方法可以在數值食譜(在FORTRAN,C,C ++等中)中找到。 高斯求積是在特殊函數系列中從函數根部采樣的首選方法。 這些方法會為樣本加權產生加權因子,這些加權因子的設計目的是為幾個點提供更好的精度。 您要使用的集成方法的類型將取決於您要集成的功能的性質,即,如果功能良好,具有奇異性等,由於要集成功能良好的功能,因此應該“安全”,但是在Num Rec。中查找各種方法可能是明智的。
梯形法則
Romberg整合
高斯正交
等
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.