1樓:
//利用simpson公式來求定積分
#include
#include
double t(double x,double y,int z,double (*fun)(double)) ;
double integral (double a,double b,double (*fun)(double));
double f1(double t);
double f2(double t);
double f3(double t);
double f4(double t);
double f5(double t);
int n=0; //用來記錄積分割槽間劃分的間隔數,數量越大,越精確
void main()
double a,b,s;
printf("積分下限 a:\n");
scanf("%lf",&a);
printf("積分上限 b:\n");
scanf("%lf",&b);
printf("區間等分個數 n :\n");
scanf("%d",&n);
/*利用辛甫生公式求解定積分*/
s=integral(a,b,f1);//用函式f1來驗證
printf("函式 f(x)在區間%f到%f 的積分值為 s=%f\n",a,b,s);
double f1(double t)
return 1+t;
double f2(double t)
return 3+2*t;
double f3(double t)
return pow(2.71828,t)+1;//自然常數e,取了一個近似值2.71828
double f4(double t)
return (1+t)*(1+t);
double f5(double t)
return t*t*t;
//辛普森公式:
double t(double x,double y,int z,double (*fun)(double))
double h,tn;
int i;
h=(y-x)/z;
tn=(fun(x)+fun(y))/2;
for(i=1;itn=tn+fun(x+i*h);
tn=tn*h;
return (tn);
double integral(double x,double y,double(*fun)(double))
return (4*t(x,y,2*n,fun)-t(x,y,n,fun))/3;
驗證結果:
通過數學知識,我們可以知道
f1(t)=1+t;(積分應該是t+0.5*t*t+任意常數)在區間0到1之間定積分的確是1.5
2樓:匿名使用者
//簡單的寫了一下按照最原始的定積分思想來的#include
//定積分通用函式
double integral (double a,double b,double (*fun)(double)); //函式宣告
double func1(double x); //函式宣告// 主函式
void main()
//定積分函式 a下限 b 上限 (*fun)(double) 函式指標 梯形法求積分
double integral (double a,double b,double (*fun)(double))
//返回所求積分
return dtotalarea;
}//函式取一個做示範 其餘類似
double func1(double x)
vc 指標變數賦值問題,指標變數賦值方式
雖然b是正確答案,但是對cd的理解不對。a,p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標 即指向的地址不能改變的針 雖然指標不能被修改,但是其指向的地址的內容是可以改的。c。a是常量,其地址不能被修改 d。錯誤在於對引用a的初始化,應該使用相同型別 ...
指標變數指向的變數的值變了,指標變數會不會變
a還是指向p1,b還是指向p2啊 只不過p1和p2的值互轉了 你說的情況可以這樣寫 int t a a b b t 這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫 a和 b的值互換,也就是p1和p2的值互換,注意是 值 的互換,不是變數名 不會變指標變數中存的是地址,...
指標和變數
寫在函式定義裡的引數叫形參。寫在函式呼叫裡的引數叫實參。實參能把實參當時的數值傳到函式計算定義塊裡。但不一定能把函式塊裡的資料加工結果帶回來。函式運算結果要帶 用函式的地方,有幾種辦法 1 全域性量。2 函式返回值。3 通過實參帶回。想用實參帶回,c語言規定,凡要通過實參帶回的量,它對應的形參必須宣...