Newton-Raphson算法 介紹 在科學(xué)計(jì)算和財(cái)經(jīng)工程領(lǐng)域,許多數(shù)值算法都是通用的(至少在理論上是),可廣泛地用于解決一類問(wèn)題。一個(gè)大家熟悉的例子就是Newton-Raphson例程,它可用來(lái)尋找方程 f(x)=0的數(shù)值解。標(biāo)準(zhǔn)的數(shù)學(xué)表達(dá)式f(x)表示f是變量x的函數(shù),其通常的表達(dá)形式為f(x,a,b,...)=0,f被定義為多于一個(gè)變量的函數(shù)。在這種情況下,Newton-Raphson算法試圖把x以外的變量固定并作為參數(shù),而尋找關(guān)于變量x的數(shù)值解。 由于Newton-Raphson算法需要知道被求解函數(shù)的確切表達(dá),其傳統(tǒng)實(shí)現(xiàn)方法是直接將代碼嵌入到客戶應(yīng)用程序中。這就使得算法的實(shí)現(xiàn)代碼經(jīng)過(guò)針對(duì)不同被求解函數(shù)的少量修改后在客戶程序中反復(fù)出現(xiàn)。 同許多其它數(shù)學(xué)例程一樣,Newton-Raphson算法的具體實(shí)現(xiàn)是應(yīng)該與特定用戶無(wú)關(guān)的。并且,重復(fù)編碼在任何情況下都應(yīng)該盡量避免。我們很自然地會(huì)想到把該類例程作為庫(kù)函數(shù)來(lái)實(shí)現(xiàn),以使客戶程序可以直接調(diào)用它們。但是,這種實(shí)現(xiàn)方式必然會(huì)涉及到如何將用戶自定義函數(shù)(Newton-Raphson 例程需要調(diào)用該函數(shù))封裝成可以作為參數(shù)傳遞的形式。
標(biāo)簽: Newton-Raphson 算法 工程領(lǐng)域 計(jì)算
上傳時(shí)間: 2016-07-31
上傳用戶:gdgzhym
溫度華氏轉(zhuǎn)變攝氏 #include <stdio.h> #include <stdlib.h> enum x {A,B,C,D,E} int main(void) { int a=73,b=85,c=66 { if (a>=90) printf("a=A等級(jí)!!\n") else if (a>=80) printf("73分=B等級(jí)!!\n") else if (a>=70) printf("73分=C等級(jí)!!\n") else if (a>=60) printf("73分=D等級(jí)!!\n") else if (a<60) printf("73分=E等級(jí)!!\n") } { if (b>=90) printf("b=A等級(jí)!!\n") else if (b>=80) printf("85分=B等級(jí)!!\n") else if (b>=70) printf("85分=C等級(jí)!!\n") else if (b>=60) printf("85分=D等級(jí)!!\n") else if (b<60) printf("85分=E等級(jí)!!\n") } { if (c>=90) printf("c=A等級(jí)!!\n") else if (c>=80) printf("66分=B等級(jí)!!\n") else if (c>=70) printf("66分=C等級(jí)!!\n") else if (c>=60) printf("66分=D等級(jí)!!\n") else if (c<60) printf("66分=E等級(jí)!!\n") } system("pause") return 0 }
標(biāo)簽: include stdlib stdio gt
上傳時(shí)間: 2014-11-10
上傳用戶:wpwpwlxwlx
溫度華氏轉(zhuǎn)變攝氏 #include <stdio.h> #include <stdlib.h> enum x {A,B,C,D,E} int main(void) { int a=73,b=85,c=66 { if (a>=90) printf("a=A等級(jí)!!\n") else if (a>=80) printf("73分=B等級(jí)!!\n") else if (a>=70) printf("73分=C等級(jí)!!\n") else if (a>=60) printf("73分=D等級(jí)!!\n") else if (a<60) printf("73分=E等級(jí)!!\n") } { if (b>=90) printf("b=A等級(jí)!!\n") else if (b>=80) printf("85分=B等級(jí)!!\n") else if (b>=70) printf("85分=C等級(jí)!!\n") else if (b>=60) printf("85分=D等級(jí)!!\n") else if (b<60) printf("85分=E等級(jí)!!\n") } { if (c>=90) printf("c=A等級(jí)!!\n") else if (c>=80) printf("66分=B等級(jí)!!\n") else if (c>=70) printf("66分=C等級(jí)!!\n") else if (c>=60) printf("66分=D等級(jí)!!\n") else if (c<60) printf("66分=E等級(jí)!!\n") } system("pause") return 0 }
標(biāo)簽: include stdlib stdio gt
上傳時(shí)間: 2013-12-12
上傳用戶:亞亞娟娟123
tensor 向量的推廣。在一個(gè)坐標(biāo)系下,由若干個(gè)數(shù)(稱為分量)來(lái)表示,而在不同坐標(biāo)系下的分量之間應(yīng)滿足一定的變換規(guī)則,如矩陣、多變量線性形式等。一些物理量如彈性體的應(yīng)力、應(yīng)變以及運(yùn)動(dòng)物體的能量動(dòng)量等都需用張量來(lái)表示。在微分幾何的發(fā)展中,C.F.高斯、B.黎曼、E.B.克里斯托費(fèi)爾等人在19世紀(jì)就導(dǎo)入了張量的概念,隨后由G.里奇及其學(xué)生T.列維齊維塔發(fā)展成張量分析,A.愛(ài)因斯坦在其廣義相對(duì)論中廣泛地利用了張量。
上傳時(shí)間: 2014-01-20
上傳用戶:silenthink
找一個(gè)最小的自然數(shù),使它等于不同的兩組三個(gè)自然數(shù)的三次冪之和,即找最小的x,使得:x=a*a*a+b*b*b+c*c*c = d*d*d+e*e*e+f*f*f 其中,a,b,c,d,e,f都是自然數(shù),a<=b<=c, d<=e<=f [a,b,c]!=[d,e,f] 進(jìn)一步,是否還存在另外一個(gè)自然數(shù)滿足上述條件,可能的話請(qǐng)輸出其結(jié)果
標(biāo)簽:
上傳時(shí)間: 2017-05-16
上傳用戶:vodssv
工業(yè)領(lǐng)域串口通信速度慢是個(gè)比較突出的問(wèn)題, 而 F T 2 4 5 B M 能夠進(jìn)行 US B和并行 I / O口之間的 協(xié)議轉(zhuǎn)換, 在一些條件下能夠取代串口. 介紹 F T 2 4 5 B M 芯片的工作原理和功能, 并給出基于 F T2 4 5 B M 的 US B接口電路的應(yīng)用設(shè)計(jì)和基于 8 9 c 5 2的匯編及 c 5 1 單片機(jī)源程序.
標(biāo)簽: 工業(yè)領(lǐng)域 串口通信 速度 比較
上傳時(shí)間: 2017-05-27
上傳用戶:kytqcool
function g=distance_classify(A,b) 距離判別法程序。 輸入已分類樣本A(元胞數(shù)組),輸入待分類樣本b 輸出待分類樣本b的類別g 注:一般還應(yīng)計(jì)算回代誤差yita 輸入已知分類樣本的總類別數(shù)n 每類作為元胞數(shù)組的一列
標(biāo)簽: distance_classify function 判別 分類
上傳時(shí)間: 2013-11-25
上傳用戶:yyyyyyyyyy
理想的放大器 目前,廠商在線性IC研發(fā)上都有重大的突破。使IC型運(yùn)算放大器的特性和理想相當(dāng)接近。尤其在低頻操作下,OP Amp電路的工作情形實(shí)在太像一個(gè)理想放大器,幾乎與理論的推測(cè)完全相符。→理想的放大器該具備什麼特性?
標(biāo)簽: 算放大器原理
上傳時(shí)間: 2016-07-16
上傳用戶:WALTER
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫(xiě)卡的命令 #define write_command0 0//寫(xiě)密碼 #define write_command1 1//寫(xiě)配置字 #define write_command2 2//密碼寫(xiě)數(shù)據(jù) #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時(shí)間參數(shù)us #define ts_min 250//270*11.0592/12=249//取近似的整數(shù) #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調(diào)整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時(shí)關(guān)所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測(cè)試綠燈 sbit led_light1 = P1^5;//測(cè)試紅燈 sbit led_light_ok = P1^1;//讀卡成功標(biāo)志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲(chǔ)卡上用戶數(shù)據(jù)(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數(shù)組ram uchar command; //第一個(gè)命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數(shù)原型*****************/ //讀寫(xiě)操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據(jù)命令寫(xiě)不同的內(nèi)容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數(shù) void write_password(uchar data *data p);//寫(xiě)初始密碼或數(shù)據(jù) void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫(xiě)位 /*子函數(shù)區(qū)*****************************************************/ void delay_2(uint x) //延時(shí),時(shí)間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復(fù)位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發(fā),波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時(shí)器1 定時(shí)方式2(8位),定時(shí)器0 定時(shí)方式1(16位) TCON = 0x40; //設(shè)定時(shí)器1 允許開(kāi)始計(jì)時(shí)(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動(dòng)定時(shí)器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關(guān),防止影響跳變的定時(shí)器計(jì)時(shí) WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來(lái)防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁(yè) write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認(rèn)時(shí)間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個(gè)穩(wěn)定的低電平?超時(shí)判斷? while(!p_U2270B_OutPut);//等待上升沿的到來(lái)同步信號(hào)檢測(cè)1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時(shí)器晚啟動(dòng)10個(gè)周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測(cè)同步信號(hào)1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數(shù)據(jù) for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個(gè)位 { //等待下降沿的到來(lái) while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫(xiě)卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫(xiě)密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫(xiě)數(shù)據(jù)位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測(cè)試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數(shù):初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫(xiě)數(shù)據(jù) { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_password(p);//發(fā)口令 write_bit(0);//寫(xiě)鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫(xiě)數(shù)據(jù) } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時(shí)數(shù)據(jù)不停的循環(huán)傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫(xiě)新配置參數(shù):pwd=0 //密碼無(wú)效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫(xiě)新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數(shù)***********************************/ void write_bit(bit x)//寫(xiě)一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時(shí)448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)0 } } /*******************寫(xiě)一個(gè)block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數(shù)據(jù) { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫(xiě)卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標(biāo)簽: 12345
上傳時(shí)間: 2017-10-20
上傳用戶:my_lcs
This edition updates and continues the series of books based on the residential courses on radiowave propagation organised by the IEE/IET. The first course was held in 1974, with lectures by H. Page, P. Matthews, D. Parsons, M.W. Gough, P.A. Watson, E. Hickin, T. Pratt, P. Knight, T.B. Jones, P.A. Bradley, B. Burgess and H. Rishbeth.
標(biāo)簽: Propagation Radiowaves edition 3rd of
上傳時(shí)間: 2020-05-31
上傳用戶:shancjb
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1