Advertisement
Guest User

QOD

a guest
Mar 28th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace v0._1
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18.  
  19. /*
  20.  
  21. -1/h^2(G[i+1,j]-2G[i,j]+G[i-1,j])
  22. -1/(h*r[i])(G[i+1,j]-G[i-1,j])
  23. -1/(k^2r[i]^2)(G[i,j+1]-2G[i,j]+G[i,j-1])
  24. -cot(t[j])/(2kr[i])(G[i,j+1]-G[i,j-1])+V[i,j]G[i,j]
  25. =Em(M,N)G[i,j]
  26.  
  27. h=R/(M+1) k=pi/(2N+2)
  28. r[i]=(i-1)h t[j]=(j-1)k; 1=<i=<M+2, 1=<j=<N;
  29.  
  30. formula se moze zapisati kao
  31. Em(M,N)G[i,j]=A[i,j]*G[i,j] + B[i,j]*G[i-1,j] + C[i,j]*G[i+1,j]
  32. + D[i,j]*G[i,j-1] + F[i,j]*G[i,j+1]
  33. A[i,j]= 2/h^2+2/(k^2r[i]^2)+V[i,j]
  34. B[i,j]= -1/h^2+1/(h*r[i])
  35. C[i,j]= -1/h^2-1/(h*r[i])
  36. D[i,j]= -1/(k^2r[i]^2)+cot(t[j])/(2kr[i])
  37. F[i,j]= -1/(k^2r[i]^2)-cot(t[j])/(2kr[i])
  38. V[i,j]= m*gama+m^2/(r[i] sin(t[j]))^2+(gama/2)^2 (r[i] sin(t[j]))^2-2/r[i]
  39. */
  40.  
  41.  
  42.  
  43.  
  44. private void Form1_Load(object sender, EventArgs e)
  45. {
  46.  
  47. }
  48.  
  49. private void button1_Click(object sender, EventArgs e)
  50. {
  51. double R = Convert.ToDouble(textBox1.Text); //poluprecnik QODa
  52. double gama=Convert.ToDouble(textBox4.Text); //jacina magnetnog polja
  53. double m=Convert.ToDouble(textBox5.Text); //magnetni kvantni broj
  54.  
  55. int N = Convert.ToInt32(textBox2.Text);
  56. int M = Convert.ToInt32(textBox3.Text); //dimenzije
  57. double h = R / (M + 1); // korak za r
  58. double k = Math.PI / (2 * N + 2); // korak za k
  59. double[] r = new double[M];
  60. double[] t = new double[N];
  61.  
  62.  
  63.  
  64. for (int i = 1; i < M+3; i++)
  65. {
  66. r[i]=(i-1)*h;
  67. }
  68.  
  69. for (int j = 1; j < N+3; j++)
  70. {
  71. t[j] = (j - 1) * k;
  72. }
  73.  
  74. //Clanovi: V, A, B, C, D, F
  75.  
  76. double[,] V = new double[M, N];
  77. for (int i = 1; i < M+3; i++)
  78. {
  79. for (int j = 1; j < N+3; j++)
  80. {
  81. V[i, j] = m * gama + Math.Pow(m, 2) / Math.Pow((r[i] * Math.Sin(t[j])), 2) + Math.Pow((gama * r[i] * Math.Sin(t[j]) / 2), 2) - 2 / r[i];
  82. j++;
  83. }
  84. i++;
  85. }
  86.  
  87. double[,] A = new double[M, N];
  88. for (int i = 1; i < M + 3; i++)
  89. {
  90. for (int j = 1; j < N + 3; j++)
  91. {
  92. A[i, j] = 2 / Math.Pow(h, 2) + 2 / Math.Pow(k * r[i], 2) + V[i, j];
  93. j++;
  94. }
  95. i++;
  96. }
  97.  
  98. double[,] B = new double[M, N];
  99. for (int i = 1; i < M + 3; i++)
  100. {
  101. for (int j = 1; j < N + 3; j++)
  102. {
  103. B[i, j] = -1 / Math.Pow(h, 2) + 1 / (h * r[i]);
  104. j++;
  105. }
  106. i++;
  107. }
  108.  
  109. double[,] C = new double[M, N];
  110. for (int i = 1; i < M + 3; i++)
  111. {
  112. for (int j = 1; j < N + 3; j++)
  113. {
  114. C[i, j] = -1 / Math.Pow(h, 2) - 1 / (h * r[i]);
  115. j++;
  116. }
  117. i++;
  118. }
  119.  
  120. double[,] D = new double[M, N];
  121. for (int i = 1; i < M + 3; i++)
  122. {
  123. for (int j = 1; j < N + 3; j++)
  124. {
  125. D[i, j] = -1 / Math.Pow(k * r[i], 2) + 1 / (Math.Tan(t[j]) * 2 * k * Math.Pow(r[i], 2));
  126. j++;
  127. }
  128. i++;
  129. }
  130.  
  131. double[,] F = new double[M, N];
  132. for (int i = 1; i < M + 3; i++)
  133. {
  134. for (int j = 1; j < N + 3; j++)
  135. {
  136. D[i, j] = -1 / Math.Pow(k * r[i], 2) - 1 / (Math.Tan(t[j]) * 2 * k * Math.Pow(r[i], 2));
  137. j++;
  138. }
  139. i++;
  140. }
  141.  
  142. // Matrica Lambda L
  143. double[,] L = new double[M * N, M * N];
  144.  
  145. //postavljanje na 0
  146. for (int i = 1; i < M + 3; i++)
  147. {
  148. for (int j = 1; j < N + 3; j++)
  149. {
  150. L[i, j] = 0;
  151. j++;
  152. }
  153. i++;
  154. }
  155. //metoda za invernzne koordinate
  156.  
  157.  
  158. //postavljanje clanova
  159. {
  160. for (int i = 1; i < M+3; i++)
  161. {
  162. int p = 0; int q = 0;
  163.  
  164.  
  165. L[i, i] = A[i, i];
  166. L[i, i - 1] = B[p, q];
  167. L[i, i + 1] = C[p, q];
  168. L[i, i - N] = D[p, q];
  169. L[i, i + N] = F[p, q];
  170. }
  171. }
  172.  
  173.  
  174. }
  175. }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement