Tải bản đầy đủ (.docx) (5 trang)

Chương trình tính momem uốn của tấm phẳng hình chữ nhật bằng c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (57.13 KB, 5 trang )

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BanMongChiuUon
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("Tính độ võng cho tấm mỏng hình vuông, ngầm 4 đầu");
display();
}
static void display()
{
int n;
do
{
Console.WriteLine("Phím 1 để tiếp tục");
n = Convert.ToInt32(Console.ReadLine());
switch(n)
{
case 1: ham(); break;
}
}while(n==1);
}
static void ham()
{
int n;//số lưới chia
double l, h, q, D;


Console.WriteLine("Nhập số lưới: ");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Nhập lực phân bố đều q: ");
q = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Nhập chiều dài l: ");
l = Convert.ToDouble(Console.ReadLine());
h = 1.0 * l / (n - 1);
Console.WriteLine("Nhập độ cứng trụ của tấm D: ");


D = Convert.ToDouble(Console.ReadLine());
//khai báo mảng
double[,] a = new double[n + 2, n + 2];//mảng này chứa giá trị của các ẩn tại vị trí thứ i,j bất kỳ
double[,] X = new double[n * n, n * n];//mảng này chứa (n-2)*(n-2) ẩn và phương trình
int m, dem1 = 1, dem2;
m = (n + 1) / 2;
//cho các phần tử trong mảng a[,] nhận giá trị mặc đinh của phương trình là: 20, 8, -2, 1
for (int i1 = 2; i1 for (int j1 = 2; j1 {
//Reset mảng về 0
for (int i = 0; i <= n + 1; i++)
for (int j = 0; j <= n + 1; j++)
a[i, j] = 0;
//gán từng giá trị vào cho từng vị trí tương ứng với ẩn cần tìm
a[i1, j1] = 20;
a[i1 + 1, j1] = a[i1 - 1, j1] = a[i1, j1 - 1] = a[i1, j1 + 1] = -8;
a[i1 - 1, j1 - 1] = a[i1 - 1, j1 + 1] = a[i1 + 1, j1 - 1] = a[i1 + 1, j1 + 1] = 2;
a[i1, j1 - 2] = a[i1, j1 + 2] = a[i1 - 2, j1] = a[i1 + 2, j1] = 1;//vì liên kết ngầm nền cho = 1, dựa
vào đây mà viết ra các kiểu liên kết

//Biên = 0
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (i == 1 || i == n || j == 1 || j == n) a[i, j] = 0;
//cộng các giá trị của phần tử ảo nằm ngoài biên và giá trị thực( giá trị thực có giá trị bằng
giá trị ảo hoặc = - giá trị ảo
for (int i = 2; i < n; i++)
for (int j = 2; j < n; j++)
{
if (i == 2)
{
a[i, j] += a[0, j];//vẽ ra trên giấy sẽ dễ thấy đc quy luật
}
if (i == n - 1)
{
a[i, j] += a[n + 1, j];
}
if (j == 2)
{
a[i, j] += a[i, 0];


}
if (j == n - 1)
{
a[i, j] += a[i, n + 1];
}
}
//xuất thử các phần tử được gán và đc cộng từ phần tử ảo vào trong nghiệm, i và j chạy
từ 2->n-1, mảng này là mảng a[,] sau đó mới gán cái a[] vào cái x[] để đưa ra tính ma trận

for (int i = 2; i < n; i++)
{
for (int j = 2; j < n; j++)
{
Console.Write("\t{0} ",a[i,j]);
} Console.WriteLine("\n");
}
//sử dụng đối xứng để rút nghiệm, nhưng mấy cái có vừa ngầm vừa tựa thì k có đối xứng,
chương trình này là tổng quát rồi
/*// Đối xứng theo phương dọc và phương ngang
for (int i = 2; i < n; i++)
for (int j = 2; j <= m; j++)
{
if(i!=j)
a[i, j] += a[i, 2 * m - j];
}
for(int j = 2; j <= m; j++)
for (int i = 2; i <= m; i++)
{
if (i != j)
a[i, j] += a[2 * m - i, j];
}
// Đối xứng theo trục nghiêng 45o
dem2 = 1;
for (int i = 2; i <= m; i++)
{
for (int j = i; j <= m; j++)
{
if (i != j) a[i, j] += a[j, i];
X[dem1, dem2] = a[i, j];

dem2++;
}
}
dem1++;*/


//đưa mảng a[] tại vị trí i,j bất kỳ vào mảng chung x[,]
dem2 = 1;
for(int i=2;ifor (int j = 2; j < n; j++)
{
X[dem1, dem2] = a[i, j];
dem2++;
}
dem1++;
}
//xong tất cả x phương trình x ẩn
//đưa vế phải vào mảng x[,]
for (int i = 1; i < dem1; i++)
{
X[i, dem1] = 1.0*h * h * h * h * q / D;
}
matrix(X, dem1-1, n);
}
static void matrix(double[,] a, int y, int n)
{
double p, Q;
double[] x = new double[y+1];
for (int i = 1; i <=y; i++)
{

p = a[i, i];
for (int j = i; j <= y+1; j++)
{
a[i, j] /= p;
}
for (int k = i + 1; k <= y; k++)
{
Q = a[k, i];
for (int j = i; j <= y+1; j++)
{
a[k, j] -= a[i, j] * Q;
}
}
}
x[y] = a[y, y+1] / a[y, y];
for (int i = y - 1; i > 0; i--)
{
x[i] = a[i, y+1];
for (int j = y; j >= i + 1; j--)


x[i] -= (a[i, j] * x[j]);
}
for (int i = 1; i <= y; i++)
{
Console.Write("W{0} = {1}", i, x[i]);
}
}
}
}




×