本文目錄一覽:
- 1、c語言常用庫函數有哪些
- 2、c語言編程- 微積分程序
- 3、用C語言實現微積分計算
- 4、c++的編程語言中有微積分 導數 距陣等高等數學方面的函數嗎
- 5、用C語言計算微積分?
- 6、怎樣編寫c語言積分函數
c語言常用庫函數有哪些
最低0.27元/天開通百度文庫會員,可在文庫查看完整內容
原發布者:shimingtime
附錄CC語言常用的庫函數庫函數並不是C語言的一部分,它是由編譯系統根據一般用戶的需要編製並提供給用戶使用的一組程序。每一種C編譯系統都提供了一批庫函數,不同的編譯系統所提供的庫函數的數目和函數名以及函數功能是不完全相同的。ANSIC標準提出了一批建議提供的標準庫函數。它包括了目前多數C編譯系統所提供的庫函數,但也有一些是某些C編譯系統未曾實現的。考慮到通用性,本附錄列出ANSIC建議的常用庫函數。由於C庫函數的種類和數目很多,例如還有屏幕和圖形函數、時間日期函數、與系統有關的函數等,每一類函數又包括各種功能的函數,限於篇幅,本附錄不能全部介紹,只從教學需要的角度列出最基本的。讀者在編寫C程序時可根據需要,查閱有關係統的函數使用手冊。1.數學函數使用數學函數時,應該在源文件中使用預編譯命令:#include或#include”math.h”2.字元函數在使e68a84e8a2ade799bee5baa631333433623761用字元函數時,應該在源文件中使用預編譯命令:#include或#include”ctype.h”3.字元串函數使用字元串中函數時,應該在源文件中使用預編譯命令:#include或#include”string.h”4.輸入輸出函數在使用輸入輸出函數時,應該在源文件中使用預編譯命令:#include或#include”stdio.h”5.動態存儲分配函數在使用動態存儲分配函數時,應該在源文件中使用預編譯命令:#include或#include”stdlib.h”6.其他函數有些函數由於不便歸入某一類,所以單獨列出。使用這些
c語言編程- 微積分程序
辛普森法
#include stdio.h
#include math.h
#define F(X) (4.0/(1+X*X))
static float EPS = 1.0E-14;
static int COUNT=1;
static double a=0.0, b=1.0;
static double M[32],T[32],S[32],C[32],R[32],E[32];
double GETM(int K)
{ unsigned long j,n=1;
double x=0,y=0,step=0;
for(j=0;jK;j++) n*=2;
step = (b-a)/n;
x = a+step/2;
for(j=0;jn;j++){y+=F(x);x+=step;}
return (y*step);
}
Simpson(float EPS)
{ int k=0;
T[0]= (b-a)*(F(a)+F(b))/2.0;
S[0]=T[0];
E[0]=1.0E10;
for(k=0;k20;k++)
{ M[k] = GETM(k);
T[k+1]=(M[k]+T[k])/2.0;
S[k+1]=(4.0*T[k+1]-T[k])/3.0;
COUNT++;
E[k+1]=fabs(S[k+1]-S[k]);
if(k3)continue;
if(E[k+1]EPS)break;
}
return;
}
ShawResult()
{ int k;
system(“cls”);
printf(“\n K M[K] T[K] S[K]”);
printf(” E[K]”);
printf(“\n——————————————-“);
printf(“———————————–“);
for(k=0;kCOUNT;k++)
printf(“\n%2d %20.15lf%20.15lf%20.15lf%12.4e”,k,M[k],T[k],S[k],E[k]);
printf(“\n——————————————–“);
printf(“———————————–“);
getch();
system(“cls”);
return;
}
SaveResult()
{ int k;
FILE * fp;
fp=fopen(“Simpson.htm”,”w”);
if(!fp) return;
fprintf(fp,”htmlhead/head”);
fprintf(fp,”body bgcolor = #006699 text = #FFff00″);
fprintf(fp,”prefont size=\”6\””);
fprintf(fp,”\n K M[K] T[K] S[K]”);
fprintf(fp,” E[K]”);
fprintf(fp,”\n———————————————-“);
fprintf(fp,”———————————-“);
for(k=0;kCOUNT;k++)
fprintf(fp,”\n%2d %20.15f%20.15f%20.15f%12.4le”,k,M[k],T[k],S[k],E[k]);
fprintf(fp,”\n———————————————-“);
fprintf(fp,”———————————-“);
fprintf(fp,”/pre/font/body”);
fclose(fp);
return;
}
main()
{ Simpson(EPS);
ShawResult();
SaveResult();
}
用C語言實現微積分計算
C沒有自帶的微積分函數,只能靠數值方法來估算值,求不出準確答案。
c++的編程語言中有微積分 導數 距陣等高等數學方面的函數嗎
首先說明一下,C和C++語言為了保證自己語言的簡潔性。語言本身不含任何函數,其中包括著名的printf函數(這都不屬於c語言範疇).
c語言的一些函數,是由庫的形式提供,比如math.h提供的數學庫,stdio.h提供的基本io庫。
目前倒是沒有比較權威的高等數學函數。如果樓主有興趣,可以自己補充這方面。或者找相對較完善的庫。
用C語言計算微積分?
我給一樓加的注釋以及修改:
#includestdio.h
#includemath.h
#define ARRAYBOUND 10001
void main()
{
int i = 0; //輔助變數,最常見那種
int n = 0; //將所求定積分函數曲線在x軸方向,平均分成n等分;n越大,結果越精確;不過限於此演算法限制nARRAYBOUND,否則溢出.
float x[ARRAYBOUND];//ARRAYBOUND維浮點數組,存放離散的x坐標值
float y[ARRAYBOUND];//ARRAYBOUND維浮點數組,存放每個x坐標對應的函數值;x[i],y[i]滿足y[i]=f(x[i]),f是你要求定積分的函數
float x0 = 0.0; //定積分下限
float xn = 0.0; //定積分上限
float h = 0.0; //面積微元寬度
float J = 0.0; //輔助變數
/*f=x^3*/ //這裡說明要求定積分的是函數f(x)=x*x*x;(y等於x的立方,x^3是vb的寫法)
// printf(“input x0,xn,n:”);
printf(“請分別輸入下限(x0),上限(xn),精度(n):”);
scanf(“%f”,x0);
scanf(“%f”,xn);
scanf(“%d”,n);
h=(xn-x0)/n;//將函數圖形在x方向平分成n份,h是每個面積微元的寬度
x[0]=x0; //將積分下限賦值給x[0]
for(i=0;i=n nARRAYBOUND;i++)
{
x[i]=x[0]+i*h; //計算n個離散的橫坐標值,存入x[]數組
y[i]=(float)pow(x[i],3);//計算n個橫坐標對應的函數值,存入y[]數組。在此可以改變要求積分的函數
}
// J=0.0;
for(i=0;in;i++)
{
//J=J+y[i]+y[i+1];
J+=y[i];//將所有縱坐標值代數相加,存入J
}
//J=J*h/2.0;
J=J*h;//所有微元面積一次求解,因為∑h*y[i]=h*∑y[i];
printf(“\nn=%d \n所求定積分值是: %f\n”,n,J);
}
我將//J=J+y[i]+y[i+1]改為J+=y[i];將//J=J*h/2.0;改為J=J*h只是幫助lz理解
其實,這兩種表達在理論上是等價的,不過我發現修改後,在n同樣大小的情況下,結果的精度有一點點下降,還真不知為什麼???
這樣的話lz應該能理解了吧,其實一樓的演算法還有不少值得改進的地方,希望lz能有所突破!!
怎樣編寫c語言積分函數
積分分為兩種,數值積分,公式積分。
公式積分:部分函數可以直接用公式求得其不定積分函數。C語言中可以直接用積分公式寫出其積分函數。
數值積分:按照積分的定義,設置積分範圍的步長,用梯形面積累加求得其積分。
以【f(x)=x*sin(x) 從1到2的積分】為例:
#include math.h
#include stdio.h
double integral(double(*fun)(double x),double a,double b,int,n){
double s,h,y;
int i;
s=(fun(a)+fun(b))/2;
h=(b-a)/n; /*積分步長*/
for(i=1;in;i++)
s=s+fun(a+i*h);
y=s*h;
return y;/*返回積分值*/
}
double f(double x){
return(x*sinx) /*修改此處可以改變被積函數*/
}
int main(){
double y;
y=integral(f,1.0,2.0,150);/*修改此處可以改變積分上下限和步數,步長=(上限-下限)/步數*/
printf(“y=%f\n”,y);
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237782.html