g a w k或GNU awk是由Alfred V. A h o,Peter J.We i n b e rg e r和Brian W. K e r n i g h a n于1 9 7 7年為U N I X創建的a w k編程語言的較新版本之一。a w k出自創建者姓的首字母。a w k語言(在其所有的版本中)是一種具有很強能力的模式匹配和過程語言。a w k獲取一個文件(或多個文件)來查找匹配特定模式的記錄。當查到匹配后,即執行所指定的動作。作為一個程序員,你不必操心通過文件打開、循環讀每個記錄,控制文件的結束,或執行完后關閉文件。
上傳時間: 2014-01-02
上傳用戶:hwl453472107
實驗源代碼 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("請輸入矩陣第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可傳遞閉包關系矩陣是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元關系的可傳遞閉包\n"); void warshall(int,int); int k , n; printf("請輸入矩陣的行數 i: "); scanf("%d",&k); 四川大學實驗報告 printf("請輸入矩陣的列數 j: "); scanf("%d",&n); warshall(k,n); }
上傳時間: 2016-06-27
上傳用戶:梁雪文以
function [alpha,N,U]=youxianchafen2(r1,r2,up,under,num,deta) %[alpha,N,U]=youxianchafen2(a,r1,r2,up,under,num,deta) %該函數用有限差分法求解有兩種介質的正方形區域的二維拉普拉斯方程的數值解 %函數返回迭代因子、迭代次數以及迭代完成后所求區域內網格節點處的值 %a為正方形求解區域的邊長 %r1,r2分別表示兩種介質的電導率 %up,under分別為上下邊界值 %num表示將區域每邊的網格剖分個數 %deta為迭代過程中所允許的相對誤差限 n=num+1; %每邊節點數 U(n,n)=0; %節點處數值矩陣 N=0; %迭代次數初值 alpha=2/(1+sin(pi/num));%超松弛迭代因子 k=r1/r2; %兩介質電導率之比 U(1,1:n)=up; %求解區域上邊界第一類邊界條件 U(n,1:n)=under; %求解區域下邊界第一類邊界條件 U(2:num,1)=0;U(2:num,n)=0; for i=2:num U(i,2:num)=up-(up-under)/num*(i-1);%采用線性賦值對上下邊界之間的節點賦迭代初值 end G=1; while G>0 %迭代條件:不滿足相對誤差限要求的節點數目G不為零 Un=U; %完成第n次迭代后所有節點處的值 G=0; %每完成一次迭代將不滿足相對誤差限要求的節點數目歸零 for j=1:n for i=2:num U1=U(i,j); %第n次迭代時網格節點處的值 if j==1 %第n+1次迭代左邊界第二類邊界條件 U(i,j)=1/4*(2*U(i,j+1)+U(i-1,j)+U(i+1,j)); end if (j>1)&&(j U2=1/4*(U(i,j+1)+ U(i-1,j)+ U(i,j-1)+ U(i+1,j)); U(i,j)=U1+alpha*(U2-U1); %引入超松弛迭代因子后的網格節點處的值 end if i==n+1-j %第n+1次迭代兩介質分界面(與網格對角線重合)第二類邊界條件 U(i,j)=1/4*(2/(1+k)*(U(i,j+1)+U(i+1,j))+2*k/(1+k)*(U(i-1,j)+U(i,j-1))); end if j==n %第n+1次迭代右邊界第二類邊界條件 U(i,n)=1/4*(2*U(i,j-1)+U(i-1,j)+U(i+1,j)); end end end N=N+1 %顯示迭代次數 Un1=U; %完成第n+1次迭代后所有節點處的值 err=abs((Un1-Un)./Un1);%第n+1次迭代與第n次迭代所有節點值的相對誤差 err(1,1:n)=0; %上邊界節點相對誤差置零 err(n,1:n)=0; %下邊界節點相對誤差置零 G=sum(sum(err>deta))%顯示每次迭代后不滿足相對誤差限要求的節點數目G end
標簽: 有限差分
上傳時間: 2018-07-13
上傳用戶:Kemin
#include <stdio.h> #include <stdlib.h> #define SMAX 100 typedef struct SPNode { int i,j,v; }SPNode; struct sparmatrix { int rows,cols,terms; SPNode data [SMAX]; }; sparmatrix CreateSparmatrix() { sparmatrix A; printf("\n\t\t請輸入稀疏矩陣的行數,列數和非零元素個數(用逗號隔開):"); scanf("%d,%d,%d",&A.cols,&A.terms); for(int n=0;n<=A.terms-1;n++) { printf("\n\t\t輸入非零元素值(格式:行號,列號,值):"); scanf("%d,%d,%d",&A.data[n].i,&A.data[n].j,&A.data[n].v); } return A; } void ShowSparmatrix(sparmatrix A) { int k; printf("\n\t\t"); for(int x=0;x<=A.rows-1;x++) { for(int y=0;y<=A.cols-1;y++) { k=0; for(int n=0;n<=A.terms-1;n++) { if((A.data[n].i-1==x)&&(A.data[n].j-1==y)) { printf("%8d",A.data[n].v); k=1; } } if(k==0) printf("%8d",k); } printf("\n\t\t"); } } void sumsparmatrix(sparmatrix A) { SPNode *p; p=(SPNode*)malloc(sizeof(SPNode)); p->v=0; int k; k=0; printf("\n\t\t"); for(int x=0;x<=A.rows-1;x++) { for(int y=0;y<=A.cols-1;y++) { for(int n=0;n<=A.terms;n++) { if((A.data[n].i==x)&&(A.data[n].j==y)&&(x==y)) { p->v=p->v+A.data[n].v; k=1; } } } printf("\n\t\t"); } if(k==1) printf("\n\t\t對角線元素的和::%d\n",p->v); else printf("\n\t\t對角線元素的和為::0"); } int main() { int ch=1,choice; struct sparmatrix A; A.terms=0; while(ch) { printf("\n"); printf("\n\t\t 稀疏矩陣的三元組系統 "); printf("\n\t\t*********************************"); printf("\n\t\t 1------------創建 "); printf("\n\t\t 2------------顯示 "); printf("\n\t\t 3------------求對角線元素和"); printf("\n\t\t 4------------返回 "); printf("\n\t\t*********************************"); printf("\n\t\t請選擇菜單號(0-3):"); scanf("%d",&choice); switch(choice) { case 1: A=CreateSparmatrix(); break; case 2: ShowSparmatrix(A); break; case 3: SumSparmatrix(A); break; default: system("cls"); printf("\n\t\t輸入錯誤!請重新輸入!\n"); break; } if (choice==1||choice==2||choice==3) { printf("\n\t\t"); system("pause"); system("cls"); } else system("cls"); } }
上傳時間: 2020-06-11
上傳用戶:ccccy
這個程序是一個Win32程序,計算Fibonacci斐波納契數列(一種整數數列, 其中每數等于前面兩數之和)。其定義是f(1) = 1,f(2) = 2,并且當n>2時, f(n) = f(n-1) + f(n-2)。源代碼種給出了三種計算方法。第一種方法用遞歸,第二種方法用大數組,第三種方法用小數組。此外,這個程序還具備多線程特性,所以在運算時可以做其它操作。代碼用到了以前創建的Win32類。測試為發現bug和內存溢出。
上傳時間: 2015-01-11
上傳用戶:GHF
剖析Intel IA32 架構下C 語言及CPU 浮點數機制 Version 0.01 哈爾濱工業大學 謝煜波 (email: xieyubo@126.com 網址:http://purec.binghua.com) (QQ:13916830 哈工大紫丁香BBSID:iamxiaohan) 前言 這兩天翻看一本C 語言書的時候,發現上面有一段這樣寫到 例:將同一實型數分別賦值給單精度實型和雙精度實型,然后打印輸出。 #include <stdio.h> main() { float a double b a = 123456.789e4 b = 123456.789e4 printf(“%f\n%f\n”,a,b) } 運行結果如下:
標簽: Version xieyubo Intel email
上傳時間: 2013-12-25
上傳用戶:徐孺
一個連續信號含兩個頻率分量,經采樣得 ,已知N=16,△f分別為1/16和1/64,觀察其頻譜 當N=128時,△f不變,其結果有何不同,為什么?
上傳時間: 2016-01-19
上傳用戶:asdfasdfd
神經網絡在智能機器人導航系統中的應用研究1神經網絡在環境感知中的應 用 對環境 的感 知 ,環境模型 妁表示 是非常重要 的。未 知 環境中的障礙物的幾何形狀是不確定的,常用的表示方浩是 槽格法。如果用冊格法表示范圍較大的工作環境,在滿足 精度要求 的情況下,必定要占用大量的內存,并且采用柵 格法進行路徑規劃,其計算量是相當大的。Kohon~n自組織 神經瞬絡為機器人對未知環境的蒜知提供了一條途徑。 Kohone~沖經網絡是一十自組織神經網絡,其學習的結 果能體現出輸入樣本的分布情況,從而對輸入樣本實現數 據壓縮 。基于 網絡 的這些特 性,可采 用K0h0n曲 神經元 的 權向量來表示 自由空間,其方法是在 自由空間中隨機地選 取坐標點xltl【可由傳感器獲得】作為網絡輸入,神經嘲絡通 過對大量的輸八樣本的學習,其神經元就會體現出一定的 分布形 式 學習過程如下:開 始時網絡的權值隨機地賦值 , 其后接下式進行學 習: , 、 Jm(,)+叫f)f,)一珥ff)) ∈N,(f) (,) VfeN.(f1 其 中M(f1:神經元 1在t時刻對 應的權值 ;a(∽ 謂整系 數 ; (『l網絡的輸八矢量;Ⅳ():學習的 I域。每個神經元能最 大限度 地表示一 定 的自由空間 。神經 元權 向量的最 小生成 樹可以表示出自由空問的基本框架。網絡學習的鄰域 (,) 可 以動 態地 定義 成矩形 、多邊 形 。神經 元數量 的選取取 決 于環境 的復雜度 ,如果神 經元 的數量 太少 .它們就 不能 覆 蓋整十空間,結果會導致節點穿過障礙物區域 如果節點 妁數量太大 .節點就會表示更多的區域,也就得不到距障 礙物的最大距離。在這種情況下,節點是對整個 自由空間 的學 習,而不是 學習最 小框架空 間 。節 點的數 量可 以動態 地定義,在每個學習階段的結柬.機器人會檢查所有的路 徑.如檢鍘刊路徑上有障礙物 ,就意味著沒有足夠的節點 來 覆蓋整 十 自由窯 間,需要增加 網絡節點來 重新學 習 所 138一 以為了收斂于最小框架表示 ,應該采用較少的網絡 節點升 始學習,逐步增加其數量。這種方法比較適臺對擁擠的'E{= 境的學習,自由空間教小,就可用線段表示;若自由空問 較大,就需要由二維結構表示 。 采用Kohonen~沖經阿絡表示環境是一個新的方法。由 于網絡的并行結構,可在較短的時間內進行大量的計算。并 且不需要了解障礙物的過細信息.如形狀、位置等 通過 學習可用樹結構表示自由空問的基本框架,起、終點問路 徑 可利用樹的遍 歷技術報容易地被找到 在機器人對環境的感知的過程中,可采用人】:神經嘲 絡技術對 多傳 感器的信息進 行融臺 。由于單個傳感器僅能 提 供部分不 完全 的環境信息 ,因此只有秉 甩 多種傳感器 才 能提高機器凡的感知能力。 2 神經 網絡在局部路徑規射中的應 用 局部路徑 規刪足稱動吝避碰 規劃 ,足以全局規荊為指 導 利用在線得到的局部環境信息,在盡可能短的時問內
上傳時間: 2022-02-12
上傳用戶:qingfengchizhu
將偏差的比例(Proportion)、積分(Integral)和微分(Differential)通過線性組合構成控制量,用這一控制量對被控對象進行控制,這樣的控制器稱PID控制器。1.1模擬PID控制原理在模擬控制系統中,控制器最常用的控制規律是PID控制。為了說明控制器的工作原理,先看一個例子。如圖1-1所示是一個小功率直流電機的調速原理圖。給定速度n(f)與實際轉速進行比較n(),其差值e()=n(0-n(),經過PID控制器調整后輸出電壓控制信號u),u)經過功率放大后,驅動直流電動機改變其轉速。常規的模擬PID控制系統原理框圖如圖1-2所示。該系統由模擬PID控制器和被控對象組成。圖中,r()是給定值,y(f)是系統的實際輸出值,給定值與實際輸出值構成控制偏差e(t)e()作為PID控制的輸入,以)作為PID控制器的輸出和被控對象的輸入。所以模擬PID控制器的控制規律為
標簽: pid控制
上傳時間: 2022-07-04
上傳用戶:
指定一個數字轉換回十進位,八進位,十六進位#include <stdio.h> #include <stdlib.h> int main(void) { int number =89 printf("數字 %d\n",number) /* %d 為十進位輸出格式*/ printf("八進位為 %o\n",number) /* %o 為八進位輸出格式*/ printf("十六進位為%x\n",number) /* %x 為十六進位輸出格式*/ system("pause") return 0 }
上傳時間: 2013-11-29
上傳用戶:tyler