[問題] 曲線下面積 用重積分(有附程式碼)
想要要計算y=3π/4x的曲線下面積0<=x<=1 and 0<=y<=10
積分式如下
------------------------ 10 | ﹨
1 3π/4x | ﹨ 請想成一個曲線@@
∫ ∫ x*y dy dx | \
0 0 | \
------------------------ | ╲___
0 -------------------
1
因為x在0那點會產生發散的情況所以我從x=3π/40開始積分最後在加上3π/4
-----------------------------------
1 3π/4x 3π
∫ ∫ x*y dy dx + ——
3π/40 0 4
-----------------------------------
可是我這樣用梯形積分法積出來的數值卻超過6(Total面積是10)
非常的不合理
可是如果今天我要積的函數是y=π/4x x從π/40→1 y從0→π/4x
最後在加上π/4,最後的答案是1.多,答案比較合理
我研究了很久不知道問題出在哪裡,可以麻煩數學或是程式能力好的朋友們
幫忙看看我的程式碼哪裡出了問題嗎???謝謝
還是說這種積分不能用梯形法呢?
--------------------程式碼---------------------
#include <stdio.h>
#include <math.h>
#define pi 3.14159
#define f(x,y) (x*y)
void gy(int);
double x[50],y[50][50],gg[50],hy[50];
int main(void)
{
int i,j,k,n;
double a,b,hx,sum=0.0,ts;
n=10;
a=3*pi/40;
b=1;
hx = (b-a)/n;
for(i=0;i<=n;i++)
{
x[i] = a+i*hx;//OK
hy[i]=((3*pi/(4*x[i]))-0)/n;
for(j=0;j<=n;j++)
{
y[i][j]=j*hy[i]; // 我覺得有問題的地方
}
}
gy(n);
for(i=1;i<=n-1;i++)
sum=sum+gg[i];
ts=(hx/2.0)*(gg[0]+gg[n]+2*sum);
ts=ts+(3*pi/4);
printf("T%d=%1f\n",n,ts);
system("pause");
return 0;
}
void gy(int n)
{
int i,j;
double ss,sum1=0.0;
for(i=0;i<=n;i++)
{
for(j=1;j<=n-1;j++)
{
sum1=sum1+f(x[i],y[i][j]);
}
gg[i]=(hy[i]/2.0)*(f(x[i],y[i][0])+f(x[i],y[i][n])+2*sum1);
sum1=0.0;
}
return;
}
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.191.166
推
03/05 22:15, , 1F
03/05 22:15, 1F
→
03/05 22:25, , 2F
03/05 22:25, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):