html计算圆周长,【实用性程序】弧微分计算圆周长
最近學了學關于微積分的知識(當然,這還是最簡單的),于是想到利用微分進行近似計算圓周長(除以2倍半徑就是圓周率pi)
思路:
首先把圓放在直角坐標系中,不妨設圓心(0,0),半徑r = 1。 因而,圓的標準方程為 x^2+y^2? = 1? ?(1)
下面開始微積分大法:(對圓方程這個隱函數求導數)
對方程(1)兩邊對x求導數:2*x + 2*y *? y′ = 0 (解釋一下:x^2?的導數為 2x ,? y^2?的導數為 2y *?y′? ,??y′就是y對x的導數 ,?右邊常數1的導數為 0)
解出 y‘ = - x/y
根據微分 : dy = y‘ * dx ,?再由弧微分的計算公式(實際上就是勾股定理), dx?對應的弧長約為?√dx^2+dy^2 .? 圖中MM‘?近似用MT?表示。
然后讓dx取一個趨近于0的數,一段一段求和即可(類似割圓法的思想)
代碼:
#include
using namespace std;
double dx = 1,sum = 0,x,y,dy;
int main()
{
int n;
cin >> n; //精確程度
for (int i = 1 ; i <= n ; i ++) {
sum = 0;dx *= 0.1;
printf("delta x = %llf ... sum = ",dx);
for (x = dx ; x <= 1-dx ; x += dx)
{
y = sqrt(1-x*x);
dy = -x/y*dx;
sum += sqrt(dx*dx+dy*dy);
// printf("%.5f %.5f %.5f\n",x,y,sum);
}
sum += 2*sqrt(dx*dx+dy*dy);
printf("%lf\n",sum*4);
}
return 0;
}
實際測試結果:
理論結果:
原文:https://www.cnblogs.com/YMY666/p/10827397.html
總結
以上是生活随笔為你收集整理的html计算圆周长,【实用性程序】弧微分计算圆周长的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The multi-part reque
- 下一篇: java爬虫抓取起点小说_爬虫实践-爬取