當前位置:首頁 » 編程語言 » c語言erfc函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言erfc函數

發布時間: 2022-04-12 03:26:59

① 用c語言編寫一個函數,判斷兩個實數是否相等,兩數誤差在0.0001內認為相等

  1. #include <stdio.h>

  2. #include <stdbool.h>


  3. bool equivalence(double x, double y)

  4. {

  5. double z = x - y;

  6. if(-0.0001<z && z<0.0001)

  7. {

  8. return true;

  9. }

  10. else

  11. {

  12. return false;

  13. }

  14. }


  15. int main(int argc,char *argv[])

  16. {

  17. double a,b;

  18. scanf("%lf %lf",&a,&b);

  19. if(equivalence(a,b))

  20. {

  21. printf("相等 ");

  22. }

  23. else

  24. {

  25. printf("不相等 ");

  26. }

  27. return 0;

  28. }

運行結果

西安盛圖軟體科技

② C語言浮點數誤差的解決

浮點數表示法的確存在精度丟失的問題,是由於最低有效位的限製造成的。而且一般其實際表示的數值會比規定的要小。比如2.6的浮點數表示為40266666H,而該數實際的值是2.5999999,這樣計算的結果是0.0999999比0.1小,不能輸出0.1,產生精度丟失,而如果將其表示更改為40266667H,其表示的實際值是2.6000001,而這個數可以輸出0.1的結果的。所以如果要使計算能夠得出正確結果,可以嘗試在輸入的時候將有效位數擴展,以確保得出正確結果。
比如要輸出2.6的結果,可以設sx=2.6000001,這樣可以使浮點數表示結果為大於2.6的盡可能小的值。如果要輸出2.1的結果,可以設sx=2.1000001。
int k=0;
float sx=2.6000001;

③ 求教ierfc函數的C/C++函數實現

求教ierfc函數的C/C++函數實現
懸賞分:30 - 離問題結束還有 14 天 15 小時
現在有一個Q函數
Q函數可以很容易的通過erfc函數求得
erfc(x)=(2/根號π)*∫exp(-t²/2)dt 其中 積分上限是正無窮 下限是x

現在問題是要求Q的反函數,有人說可以通過erfc的反函數求得(即ierfc)

可是我不會 也沒有查到 請知道ierfc函數的或者能夠解決我問題的大蝦賜教 不甚感激
回答:
下面這個是在MATLAB環境下的解決方案,希望能給你點啟發,
起到拋磚引玉的作用

使用二分法計算erfc函數的反函數M程序

function c=finverse_erfc(z);
% count inverse function of erfc[complementary error function]
% Author email of the program:% [email protected]
a=600;
b=0;
if z>1 | z<0;
error([[' z takes a error value!'],...
['; Please check it''s value!']]);
end

c=(a+b)/2;
while abs(erfc(c)-z)>1e-6;
c=(a+b)/2;
if erfc(c)-z<0;
a=c;
else
b=c;
end
end
% c是你要的值

④ 在C語言中erfc函數怎麼表示,也就是x的誤差補償函數,急求高人指點。。。

float用printf("%f"來表示,double用printf("%ld"來表示。
把英文幫助找出來了,自己看看吧。

函數原型:

#include <math.h>
double erfc(double x);
float erfcf(float x);
long double erfcl(long double x);
Link with -lm. 編譯時需要鏈接 -lm

DESCRIPTION 說明

The erfc() function returns the complementary error function of x, that is, 1.0 - erf(x).

RETURN VALUE 返回值
On success, these functions return the complementary error function of x, a value in the range [0,2].
If x is a NaN, a NaN is returned.
If x is +0 or -0, 1 is returned.
If x is positive infinity, +0 is returned.
If x is negative infinity, +2 is returned.
If the function result underflows and proces an unrepresentable value, the return value is 0.0.
If the function result underflows but proces a representable (i.e., subnormal) value, that value is returned, and a range error occurs.

⑤ erfc函數在c語言中用什麼頭文件

#include<math.h>

⑥ c語言求平均數,最後有誤差;麻煩幫我看一下,謝謝!

定義為float型,保留6位小數,最後的數字出現誤差是正常的,原因是float型精度不足。解決方法:ave不用float型,改為double型。

⑦ C語言中怎麼用erfc函數我的是vc6,函數庫裡面沒有這個函數。求代碼〒_〒

void calroot(double a, double b, double c)
{

double dert;
double value;

if (a == 0)
{

printf("元二程!\n");
return;

}

dert = b *b - 4 * a * c;

⑧ C語言浮點運算感覺很奇怪同樣的數,算出來結果卻不一樣,這是怎麼回事

計算機存儲和運算都是以二進制處理的,而表達式是十進制的,那麼存儲或運算時是要轉換成二進制,計算完成後輸出還要再轉換成十進制。


那麼你應該明白二進制每一位權重都是2^N,此處N為位號,位號分布如下:

...3,2,1,0(小數點) -1,-2,-3...

權重分布如下:

...2^3,2^2,2^1,2^0 (.小數點)2^-1,2^-2,2^-3

例如一個二進制的1.111(B)=1.875(D)

整數部分:1的位號為0,因此1*2^0=1*1=1

小數點向右第一個1:位號為-1,因此1*2^-1=1*1/2=0.5

小數點向右第二個1:位號為-2,因此1*2^-2=1*1/4=0.25

小數點向右第三個1:位號為-3,因此1*2^-3=1*1/4=0.125

合起來1+0.5+0.25+0.125=1.875,其他位依此類推。

無需想得太多,你可以明顯看到,二進制小數表達的數都是不同級別減半後的累加。與十進制的某些小數沒有一一對應,顯然轉換必然會發生誤差。


另一方面,存儲時CPU會對十進制小數會進行編碼,float的尾數長度為23位,階碼8位,符號佔1位,共32位。double是64位,無論如何精度都是有限的,因此也會存在誤差,1.1*100時編譯器會將表達式先轉換二進制並運算運算,運算後再編碼存儲到變數中或臨時變數中,而運算是由CPU直接處理的,因此你可以看到有個0.000002的誤差數,而printf是個函數,對誤差進行了修正。

PS:簡單了解下浮點數的編碼方式網頁鏈接

⑨ c語言計算誤差,求2的59次方與標准差2

我這里有2個方法計算的2的59次方,結果一致,希望能幫到你:
#include<stdio.h>
#include<string.h>
int
main(){
long
long
a
=
1;
a
=
a
<<
59;
printf("a
=
%lld\n",
a);
double
d
=
1;
int
i
=
59;
while(i--)
d
=
d*2;
printf("d
=
%f\n",
d);
return
0;
}

⑩ 求誤差函數erf C語言程序代碼!!!急!!!!

C99標准開始就有誤差函數的內部實現,所以只要包含<math.h>頭文件即可。
調用格式為:

float erff( float arg ); /* 單精度誤差函數 */
double erf( double arg ); /* 雙精度誤差函數 */
long double erfl( long double arg ); /* 長雙精度誤差函數 */