伊莉討論區's Archiver

discuss


頁: [1]

skybulljohn 發表於 2008-1-7 08:52 AM

c語言求面積問題(積分)

請各位~幫忙一下XD
我想知道用積分原理做出以下FUNCTION的面積
g(x)=x^2sinx;
h(x)=sqrt(4-x^2);<<</*因為我不會打"根號"所以用sqrt表示*/
我記得積分原理是用切N塊長方形再把長方形面積加起來   所以我用c=2,4,8,16,.....(每2個做相減小於精確值就印出)
可是我做出來的答案怪怪的.....希望各位能幫忙一下~感激
可以的話把程式碼po出來.....謝謝嚕

xxxxxxtrash 發表於 2008-1-8 06:45 PM

==

==............................

samou568 發表於 2008-1-23 02:23 PM

兩個的圖形你畫出來了嗎?
圖形交點有沒有求出來了?
我算的結果是兩個圖形只有一個交點
所以沒有面積
(交點約為 x=1.27122, g(x)=1.544026, h(x)=1.544021)

柔情滿月 發表於 2008-7-14 09:12 PM

#include<stdio.h>
#include<conio.h>
#include<math.h>

double trap(double first_point,double end_point,int n,double f(double x));
double g(double x);
double h(double x);

int main(void)
{
    double first_point,end_point,area;
    int n,;
    char again,select;
   
   
    do
    {
    printf("(1)g(x) = pow(x,2)*sinx\n");
    printf("(2)h(x) = sqrt(4-pow(x,2))\n");
    printf("Please enter what function you want>>");
    scanf(" %c",&select);

   
    switch(select)
    {
    case '1':
       printf("Please enter the first_point >>\n");  
       scanf("%lf",&first_point);
      
       printf("Please enter the end_point >>\n");
       scanf("%lf",&end_point);
   
       printf("Please enetr how equal segments you want >>");
       scanf("%d",&n);
      
       printf("The area is near %lf\n",trap(first_point,end_point,n,g));

       break;
    case '2':
       printf("Please enter the first_point >>");  
       scanf("%lf",&first_point);
      
       printf("Please enter the end_point >>");
       scanf("%lf",&end_point);
   
       printf("Please enetr how equal segments you want >>");
       scanf("%d",&n);
      
       printf("The area is near %lf\n",trap(first_point,end_point,n,h));

       break;
    default:
            printf("Error!\n");
}
       printf("again'Y'or'N'>>");
       scanf(" %c",&again);           
}
       while(again!='n' && again!='n');
   
   
   
    getch();
}
double trap(double first_point,double end_point,int n,double f(double x))
{
     double T,sum=0,segment;
     int equal_segments;
     

     segment = (end_point - first_point) / n;
     
     for(equal_segments=1;equal_segments < n;++equal_segments)
     sum = sum + f(first_point + equal_segments * segment);
     
     T = segment/2 * (f(first_point) + f(end_point) + 2 * sum );
     return(T);
   }
double g(double x)
{
       return(pow(x,2)*sin(x));
}
double h(double x)
{
       return(sqrt(4-pow(x,2)));
}

柔情滿月 發表於 2008-7-14 09:13 PM

以上是我寫的~大大可以試試看看看是否有出錯的~有的話可以跟我說~

qq14331 發表於 2009-4-1 09:24 PM

來尋找答案的
雖然不是我要的
但還是感謝分享

RG113344 發表於 2009-11-21 11:03 AM

大大 雖然我看不懂
還是謝謝你的分享
幫你推一下^^
推~推~~推~~~

玉鹿 發表於 2009-11-22 05:30 PM

int n,; ===> int n;
樓主抱歉, 我只會C++
C語言的那些還沒學到...

amanalone 發表於 2009-12-25 12:33 AM

挖~這是啥東西啊?怎都沒看過啊?{:1_newconfused:}

harley6207 發表於 2010-2-6 09:10 PM

兩個的圖形你畫出來了嗎?
圖形交點有沒有求出來了?
我算的結果是兩個圖形只有一個交點
所以沒有面積
(交點約為 x=1.27122, g(x)=1.544026, h(x)=1.544021)

harley6207 發表於 2010-2-6 09:10 PM

兩個的圖形你畫出來了嗎?
圖形交點有沒有求出來了?
我算的結果是兩個圖形只有一個交點
所以沒有面積
(交點約為 x=1.27122, g(x)=1.544026, h(x)=1.544021)

chancorey 發表於 2010-3-2 05:13 PM

原來論壇內有很多C語言高手  我以為只有藍色小舖才有高手雲集

頁: [1]

Powered by Discuz! Archiver 7.1  © 2001-2009 Comsenz Inc.