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
Java: 在n 張撲克牌中找出順子 題目是這樣的:有n張撲克牌,每張牌的取值范圍是:2,3,4,5,6,7,8,9,10,J,Q,K,A。在這n張牌中找出順子(5張及5張以上的連續的牌),并將這些順子打印出來。 思路:我的思路其實很簡單,首先就是要去掉重復的牌,因為同樣的順子之算一個,顯然JAVA中的Set很適合這個工作。同時又需要對這些牌進行排序,毫無疑問就是TreeSet了。然后從小到大遍歷這些牌,并設置一個計數器count。若發現連續的牌,則count++;若發現不連續的,分2中情況:若count>4,則找到了一個順子,存起來;反之則什么都不做。然后count=1,從新開始找順子。下面就是代碼:
標簽: Java
上傳時間: 2013-12-22
上傳用戶:hewenzhi
(1)輸入E條弧<j,k>,建立AOE-網的存儲結構 (2)從源點v出發,令ve[0]=0,按拓撲排序求其余各項頂點的最早發生時間ve[i](1<=i<=n-1).如果得到的拓樸有序序列中頂點個數小于網中頂點數n,則說明網中存在環,不能求關鍵路徑,算法終止 否則執行步驟(3)(3)從匯點v出發,令vl[n-1]=ve[n-1],按逆拓樸排序求其余各頂點的最遲發生時間vl[i](n-2>=i>=2). (4)根據各頂點的ve和vl值,求每條弧s的最早發生時間e(s)和最遲開始時間l(s).若某條弧滿足條件e(s)=l(s),則為關鍵活動.
上傳時間: 2014-11-28
上傳用戶:fredguo
slickeditv10.0linuxcrackz.w.t.zip SlickEdit v10.0 for linux 注冊機 在國內網站上找了N天都沒找到,在國外一家網站找到。雖然不是源代碼,但是SlickEdit是Linux下最好用的30多種編程IDE。這個是注冊機安裝文件在百度裡找吧
標簽: 10.0 linuxcrackz slickeditv SlickEdit
上傳時間: 2013-12-10
上傳用戶:大融融rr
本程序用C語言實現了集成神經網絡解決廣義異或問題。用神經網絡集成方法做成表決網,可克服初始權值的影響,對神經網絡分類器來說:假設有N個獨立的子網,采用絕對多數投票法,再假設每個子網以1-p的概率給出正確結果,且網絡之間的錯誤不相關,則表決系統發生錯誤的概率為 Perr = ( ) pk(1-p)N-k 當p<1/2時 Perr 隨N增大而單調遞減. 在工程化設計中,先設計并訓練數目較多的子網,然后從中選取少量最佳子網形成表決系統,可以達到任意高的泛化能力。
上傳時間: 2015-05-03
上傳用戶:kiklkook
一個手機程序(電子詞典),一個不可多得的源碼程序,是學習J2ME的好東東.
上傳時間: 2013-12-12
上傳用戶:silenthink
范德蒙行列式求解方法,VANDER(X[],W[],Q[],N),在子過程Vander中實現。
上傳時間: 2015-08-29
上傳用戶:fnhhs
針對dBm及volts及watts轉換,適用於電子業界工程師
上傳時間: 2015-08-31
上傳用戶:wangyi39
1.功能 用高斯方法計算n重積分(C語言) 2.參數說明 int n : 積分重數 int js[n] : js[k]表示第k層積分區間所劃分的子區間 void (*ss)() : 指向計算各層積分上、下限的函數名(用戶自編) double (*f)() : 指向計算被積函數值的函數名(用戶自編) double gaus() : 函數返回積分值 3.文件說明 gaus.c為函數程序 gaus0.c為主函數程序
上傳時間: 2014-01-05
上傳用戶:731140412