日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 并行计算圆周率示例

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 并行计算圆周率示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt 并行計算圓周率示例

簡介:
因為最近的一項項目中要用到并行計算,所以花了兩天的時間了解了下Qt的并行計算的功能,順便也嘗試寫了一個Demo和大家一起分享。

任務如下: 1、實現多種方法計算圓周率。(據了解圓周率的計算方法估計有上百種) 2、實現普通計算和并行計算的比較。 3、計算的循環次數可以設定。 4、計算結果可是在界面顯示。


實現過程:
本示例需要解決的難點在于:
1、計算時間的獲取。
2、并行計算的調用。
3、圓周率計算方法的實現。

那先了解下,計算時間的獲取:

ARGE_INTEGER litmp;LONGLONG QPart1, QPart2;double dfFreq = 0;//計算程序的執行時間QueryPerformanceFrequency(&litmp);///>取得高精度運行計數器的頻率fdfFreq = static_cast<double>(litmp.QuadPart);QueryPerformanceCounter(&litmp);QPart1 = litmp.QuadPart;///>開始計時/*插入fucntion 執行部分*/QueryPerformanceCounter(&litmp);QPart2 = litmp.QuadPart;///>終止計時dfTime = (static_cast<double>(QPart2 - QPart1) / dfFreq) * 1000;

通過調取 windows API 來獲取系統的時間,進而實現fucntion 執行部分的時間。

2、并行計算的調用。
首先 需要在.pro 文件關聯

QT += concurrent

然后,添加頭文件

#include <QtConcurrent> #include <QtConcurrent/QtConcurrentRun> #include<QFuture> #include<QFutureWatcher>

接著,設置變量

QFuture<double> future ;QFutureWatcher<void> *m_pWatcher;

然后,調用

future = QtConcurrent::run(this, &MainWindow::series_method_1,loopNums);///>并行處理數據

有關并行計算方面的內容,本人在之前寫過一篇翻譯:
https://blog.csdn.net/qq_21291397/article/details/105805043、

最后,圓周率計算的實現;

//數列1逼近 /* 歐拉:級數 */ double MainWindow::series_method_1( long long loops) {double sum=0; //初始化和為0;double pi = 0;double n = 0.5;double m = 1.0/3;int k = 1;/*極限逼近求圓周率*/for(int i=1;i<=loops;i++,k=-k){ sum=sum+((1.0/(2*i-1))*n*k + (1.0/(2*i-1))*m*k);n*=pow(0.5,2) ;m*=pow(1.0/3,2);}pi=sum*4;//預留調試接口qDebug()<<QString::number(pi,'g',10)<<endl;return pi;}//數列3逼近 /* 使用格雷戈里 - 萊布尼茨無窮級數。數學家們發現了若干個數學級數, 如果實施無窮多次運算,就能精確計算出 Pi 小數點后面的多位數字。 其中部分無窮級數非常復雜,需要超級計算機才能運算處理。 但是有一個最簡單的無窮級數,即格雷戈里-萊布尼茨級數。 盡管計算較費時間,但每一次迭代的結果都會更接近 Pi 的精確值, 迭代 500,000 次后可準確計算出 Pi 的 10 位小數。[2] 公式如下: π = (4/1) - (4/3) + (4/5) - (4/7) + (4/9) - (4/11) + (4/13) - (4/15) ... 首先用 4 減去 4 除以 3,然后加上4除以5,然后減去4除以7。 反復變換使用加減法,后面的小數是用4作分子,用連續的奇數作分母。 計算的次數越多,則結果越接近 Pi。*/ double MainWindow:: series_method_2(long long loops) {double pi = 0, k = 1;for (int i = 0; i < loops; i++, k = -k)pi += k / (2 * i + 1);return pi*4;// printf("pi: %lf\n", pi * 4); }//數列4逼近 /** π/2≈1+1/3+1/3 * 2/5+1/3 * 2/5 * 3/7+······+An * (n-1)/(2n-1) ?*/ double MainWindow::series_method_3(long long loops) {double pi = 1, n = 1;for (int i = 1; i < loops; i++){n *= (double)i / (2 * i + 1);pi += n;}return pi*2;// printf("pi: %lf\n", pi * 2); }//蒙特·卡羅法(Monte Carlo method) /*蒙特卡羅法本質是隨機撒點*/ double MainWindow::Monte_Carlo_method_1(long long N) {double pi = 0;double x, y, hits = 0;for (int i = 0; i < N; i++){x = (double)rand() / RAND_MAX;y = (double)rand() / RAND_MAX;if (x * x + y * y < 1.0)hits++;}pi = (hits / N)*4;return pi;// printf("pi: %lf\n", (hits / N) * 4); }/*蒙特卡羅 均勻撒點。*/ double MainWindow::Monte_Carlo_method_2(long long N) {double x, y, hits = 0;for (x = 0; x < sqrt(N); x++)for (y = 0; y < sqrt(N); y++)if (x * x + y * y < N)hits++;return (hits / N) * 4;// printf("pi: %lf\n", (hits / N) * 4); }

總結:
1、并行計算只是系統會單獨建一個線程來實現,但計算所花的不占用主線程而已。并不是所花的計算時間減少了,這點一定要理解透。
2、double 數據類型的精度是小數點15~16位。long double 數據類型的精度會更高一些。通過調取本機所支持的數據類型的位數
發現:

sizeof(double) = 8
sizeof(long double) = 12

顯然 如果計算精度達到小數點二三十位以
上,那就是不這些個數據類型了。我國航天工業近10年來迅猛發展,有關數據計算精確度越來越高,衛星發射偏差已達到0.0000104。按照這個精度要求,double數據類型來也早就夠航天數據的計算了,不知道我這樣理解是否有誤?
3、測試發現100億循環普通單線程運算的本機的耗時在9S 左右。按照這個比例關系,1000億次的循環需要1個半小時。。。。。

有關圓周率的計算,本篇就討論到這里吧!

本篇示例程序
下載鏈接:
https://download.csdn.net/download/qq_21291397/12372605

總結

以上是生活随笔為你收集整理的Qt 并行计算圆周率示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青娱乐免费在线视频 | 欧美日韩生活片 | 69久久夜色精品国产69 | 久久久久高潮 | 美女脱了裤子让男人桶 | 日韩精品视频网站 | 精品免费囯产一区二区三区 | 黄色精品在线 | 久久人人超碰 | 五月天黄色网 | 懂色av一区二区三区蜜臀 | 日本三级在线 | 一级片视频免费看 | 日韩人妻无码精品久久久不卡 | 99久久精品久久久久久清纯 | 欧美有码视频 | 国产区网址 | 国产精品福利导航 | 激情综合网五月婷婷 | 国产男女猛烈无遮挡免费视频动漫 | 成年人高清视频 | 国产成人a v | 自拍偷拍日韩精品 | 国产精品黄色在线观看 | 久久澡| 亚洲一区观看 | 欧美一卡二卡在线观看 | av不卡中文字幕 | 波多野结衣精品视频 | 亚洲一二三区在线观看 | 97香蕉久久超级碰碰高清版 | 国产精品一区二区三区在线免费观看 | 色呦呦在线免费观看 | 中国黄色一级视频 | 久久久久久久久久一区二区三区 | av网站一区 | 国产精品77 | 久草视频在线免费播放 | 亚洲影院一区二区三区 | 成人污网站 | 国产日韩欧美精品在线 | 国产高清不卡视频 | 天天天天色 | 影音先锋成人资源站 | 亚洲69视频 | 日日好av| 国产亚洲久一区二区 | 黄色的网站在线观看 | 粉嫩精品久久99综合一区 | 三级伦理片 | 69堂在线观看 | 97超碰人人爱| 国产精品久久久久影院色老大 | 在线看成人av | 亚洲精品韩国 | 免费成人在线播放 | 炕上如狼似虎的呻吟声 | 丰满人妻一区二区三区53 | 宅男av在线 | 外国av网站 | 亚洲 在线| av手机网| av网站免费在线 | 先锋影音av中文字幕 | 喷潮在线观看 | 中国大陆高清aⅴ毛片 | 毛片高清免费 | 精品久久久一区 | 中国精品一区二区 | www.激情五月.com | 少妇把腿扒开让我舔18 | 中国少妇初尝黑人巨大 | 4438成人网 | 人妻无码一区二区三区久久99 | 黑人巨大精品欧美黑白配亚洲 | 久久高潮视频 | 国产又粗又黄又爽又硬的视频 | 中文字幕第9页 | 呦呦av | ww成人| 丝袜人妻一区二区三区 | 一二三四国产精品 | 国产精品久久久久久白浆 | 久久精品黄 | 欧美色图片区 | 老汉色老汉首页av亚洲 | 国产精品日韩一区二区三区 | 欧洲亚洲另类 | aa成人| 男女午夜视频在线观看 | 成人免费看片在线观看 | 日韩国产成人无码av毛片 | 伊人av网| 日本一区二区三区视频在线播放 | 国产精品第九页 | 西西人体www大胆高清 | www.色欧美 | 亚洲成人诱惑 | 91日韩一区二区 |