# include<stdio.h> # include<math.h> # define N 3 main(){ float NF2(float *x,float *y); float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}}; float b[N]={7.2,8.3,4.2},sum=0; float x[N]= {0,0,0},y[N]={0},x0[N]={}; int i,j,n=0; for(i=0;i<N;i++) { x[i]=x0[i]; } for(n=0;;n++){ //計算下一個值 for(i=0;i<N;i++){ sum=0; for(j=0;j<N;j++){ if(j!=i){ sum=sum+A[i][j]*x[j]; } } y[i]=(1/A[i][i])*(b[i]-sum); //sum=0; } //判斷誤差大小 if(NF2(x,y)>0.01){ for(i=0;i<N;i++){ x[i]=y[i]; } } else break; } printf("經過%d次雅可比迭代解出方程組的解:\n",n+1); for(i=0;i<N;i++){ printf("%f ",y[i]); } } //求兩個向量差的二范數函數 float NF2(float *x,float *y){ int i; float z,sum1=0; for(i=0;i<N;i++){ sum1=sum1+pow(y[i]-x[i],2); } z=sqrt(sum1); return z; }
上傳時間: 2019-10-13
上傳用戶:大萌萌撒
#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
神經網絡在智能機器人導航系統中的應用研究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
反激式開關電源變壓器設計的詳細步驟85W反激變壓器設計的詳細步驟 1. 確定電源規格. 1).輸入電壓范圍Vin=90—265Vac; 2).輸出電壓/負載電流:Vout1=42V/2A, Pout=84W 3).轉換的效率=0.80 Pin=84/0.8=105W 2. 工作頻率,匝比, 最低輸入電壓和最大占空比確定. Vmos*0.8>Vinmax+n(Vo+Vf)600*0.8>373+n(42+1)得n<2.5Vd*0.8>Vinmax/n+Vo400*0.8>373/n+42得n>1.34 所以n取1.6最低輸入電壓Vinmin=√[(Vacmin√2)* (Vacmin√2)-2Pin(T/2-tc)/Cin=(90√2*90√2-2*105*(20/2-3)/0.00015=80V取:工作頻率fosc=60KHz, 最大占空比Dmax=n(Vo+Vf)/[n(Vo+Vf)+Vinmin]= 1.6(42+1)/[1.6(42+1)+80]=0.45 Ton(max)=1/f*Dmax=0.45/60000=7.5us 3. 變壓器初級峰值電流的計算. Iin-avg=1/3Pin/Vinmin=1/3*105/80=0.4AΔIp1=2Iin-avg/D=2*0.4/0.45=1.78AIpk1=Pout/?/Vinmin*D+ΔIp1=84/0.8/80/0.45=2.79A 4. 變壓器初級電感量的計算. 由式子Vdc=Lp*dip/dt,得: Lp= Vinmin*Ton(max)/ΔIp1 =80*0.0000075/1.78 =337uH 取Lp=337 uH 5.變壓器鐵芯的選擇. 根據式子Aw*Ae=Pt*1000000/[2*ko*kc*fosc*Bm*j*?],其中: Pt(標稱輸出功率)= Pout=84W Ko(窗口的銅填充系數)=0.4 Kc(磁芯填充系數)=1(對于鐵氧體), 變壓器磁通密度Bm=1500Gs j(電流密度): j=4A/mm2;Aw*Ae=84*1000000/[2*0.4*1*60*103*1500Gs*4*0.80]=0.7cm4 考慮到繞線空間,選擇窗口面積大的磁芯,查表: ER40/45鐵氧體磁芯的有效截面積Ae=1.51cm2 ER40/45的功率容量乘積為 Ap = 3.7cm4 >0.7cm4 故選擇ER40/45鐵氧體磁芯. 6.變壓器初級匝數 1).由Np=Vinmin*Ton/[Ae*Bm],得: Np=80*7.5*10n-6/[1.52*10n-4*0.15] =26.31 取 Np =27T 7. 變壓器次級匝數的計算. Ns1(42v)=Np/n=27/1.6=16.875 取Ns1 = 17T Ns2(15v)=(15+1)* Ns1/(42+1)=6.3T 取Ns2 = 7T
上傳時間: 2022-04-15
上傳用戶:
將偏差的比例(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
上傳用戶:
VIP專區-嵌入式/單片機編程源碼精選合集系列(39)資源包含以下內容:1. 這是有關SPI總線的一段讀寫程序.2. 這是一段MAX7219的驅動C51源程序.3. 利用msp430的通用I/O端口模擬I2c協議的源代碼.4. 超級下載軟件(progisp ver1.1)包括并口下載器與usb isp下載器的詳細制作資料.5. MCS51產單片機上實現的tcp/ip,很全的哦,需要的可以參考一下..6. 嵌入式系統圖形用戶界面編程.7. 05嵌入式大會的部分演講稿.8. 51系列對CH375模塊讀寫.9. test for boundary scan and CPLD ics..10. 這是我個人再學習ARM7s3c2410的 時候用到的試驗代碼.11. 本人水品有限.12. 是在不好意思.13. 入門試驗代碼.14. pxros的使用說明.15. 在NIOS中利用C語言模擬I2C總線時序.16. ALTERA NIOS處理器實驗.17. ALTERA NIOS處理器實驗.18. ALTERA NIOS處理器實驗.19. ALTERA NIOS處理器實驗.20. ALTERA NIOS處理器實驗.21. 隨著高性能計算的需求.22. ADS1.2是一個使用方便的集成開發環境.23. AVR單片機嵌入式操作系統原代碼.24. 有關rtos的書.25. 重要的匯編語言編程......和大家一起分享.26. AT91M55800A材料-BasicTimer.27. I2c代碼.28. WINDOWS系統下灰度的BMP圖片轉換成黑白圖片..29. 在WINDOWS CE.NET 系統中讀RDP連接的用戶名的密碼..30. 嵌入式實時操作系統μCOS-在ARM上的移植應用.31. 在s3c44b0x運行的俄羅斯方塊游戲 DOS參考代碼.32. uCOS-II在C51下的一個完整的LCD項目源碼.33. 石子歸并問題:在一個圓形操場的四周擺放著N堆石子(N<= 100),現要將石子有次序地合并成一堆.規定每次只能選取相鄰的兩堆合并成新的一堆,并將新的一堆的石子數,記為該次合并的得分.編一程序,由.34. 單片機及嵌入式系統web實現的文章 很好的:MCU應用系統與Internet連接的一種新技術.35. 單片機發展趨勢的文章: 從Cygnal C8051F看8位單片機發展之路 好.36. usb host在ARM7上的實現.37. 對arm300的一些簡單的試驗做了詳細地說明和講解.38. arm技術手冊.39. arm7上開發usb的文檔,說得非常好.40. 一個關于s1d13806的應用程序.
上傳時間: 2013-04-15
上傳用戶:eeworm
基于PXA270-S linux的FPGA實現。\r\n向LED_CONTROL寫入n即得到n*0.1S的延時,LED閃爍的快慢程度發生變化。
上傳時間: 2013-08-22
上傳用戶:tb_6877751
對于常規VDMOS器件結構, Rdson與BV存在矛盾關系,要想提高BV,都是從減小EPI參雜濃度著手,但是外延層又是正向電流流通的通道,EPI參雜濃度減小了,電阻必然變大,Rdson增大。所以對于普通VDMOS,兩者矛盾不可調和。 但是對于COOLMOS,這個矛盾就不那么明顯了。通過設置一個深入EPI的的P區,大大提高了BV,同時對Rdson上不產生影響。為什么有了這個深入襯底的P區,就能大大提高耐壓呢? 對于常規VDMOS,反向耐壓,主要靠的是N型EPI與body區界面的PN結,對于一個PN結,耐壓時主要靠的是耗盡區承受,耗盡區內的電場大小、耗盡區擴展的寬度的面積,也就是下圖中的淺綠色部分,就是承受電壓的大小。常規VDMOS,P body濃度要大于N EPI, PN結耗盡區主要向低參雜一側擴散,所以此結構下,P body區域一側,耗盡區擴展很小,基本對承壓沒有多大貢獻,承壓主要是P body--N EPI在N型的一側區域,這個區域的電場強度是逐漸變化的,越是靠近PN結面(a圖的A結),電場強度E越大。所以形成的淺綠色面積有呈現梯形。
上傳時間: 2013-11-11
上傳用戶:小眼睛LSL
假定從8位AD中讀取數據(如果是更高位的AD可定義數據類型為int),子程序為get_ad(); 1、限幅濾波法(又稱程序判斷濾波法) A、方法: 根據經驗判斷,確定兩次采樣允許的最大偏差值(設為A) 每次檢測到新值時判斷: 如果本次值與上次值之差<=A,則本次值有效 如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值 B、優點: 能有效克服因偶然因素引起的脈沖干擾 C、缺點 無法抑制那種周期性的干擾 平滑度差 /* A值可根據實際情況調整 value為有效值,new_value為當前采樣值 濾波程序返回有效的實際值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值濾波法 A、方法: 連續采樣N次(N取奇數) 把N次采樣值按大小排列 取中間值為本次有效值 B、優點: 能有效克服因偶然因素引起的波動干擾 對溫度、液位的變化緩慢的被測參數有良好的濾波效果 C、缺點: 對流量、速度等快速變化的參數不宜 /* N值可根據實際情況調整 排序采用冒泡法*/
上傳時間: 2014-12-26
上傳用戶:nanshan
電梯召喚、指令信號的傳輸大致有以下三種方法。 1 一一對應連線方法,即每只召喚或指令的傳輸單獨占據一路線。2.矩陣掃描傳輸方式,這種方式的傳輸將召喚或指令按鈕分為n行和n列排列,在行列的各個交點處串入一只召喚或指令按鈕。
上傳時間: 2014-12-27
上傳用戶:maizezhen