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

Chương trình tính momen trên dầm đơn chịu lực phân bố đều và phân bố bậc 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 (48.71 KB, 4 trang )

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SaiPhan
{
class Program
{
static void Main(string[] args)
{
display();
}
static void display()
{
int n;
string s;
do
{
Console.WriteLine("----------------------------------------------------------");
Console.WriteLine("1.Tính mômen trên 1 dầm đơn chịu lực q phân bố đều");
Console.WriteLine("2.Tính mômen trên 1 dầm đơn chịu tải phân bố bậc nhất");
Console.WriteLine("----------------------------------------------------------");
Console.WriteLine("Nhấn phím bất kì để thoát. (Ngoại trừ 2 phím '1' & '2')");
s=Console.ReadLine();
try
{
n = Convert.ToInt32(s);
}
catch { n = 0; };
switch (n)
{


case 1: pbDeu(); break;
case 2: pbBacNhat(); break;
}
} while (n!=0);
}
static void pbDeu()
{
int n;
double q, l,delta;
string s;
Console.WriteLine("Nhập lực phân bố: q = ");
s = Console.ReadLine();
q = Convert.ToInt32(s);


Console.WriteLine("Nhập chiều dài nhịp: l = ");
s = Console.ReadLine();
l = Convert.ToInt32(s);
Console.WriteLine("Nhập số điểm chia của lưới: n = ");
s = Console.ReadLine();
n = Convert.ToInt32(s);
double[] m = new double[n];
double[,] A = new double[n, n];
delta = l/ (n - 1);
n--;
for (int i = 1; i < n; i++)
for (int j = 1; j < n; j++)
A[i, j] = 0;
for (int i = 1; i < n; i++)
{

A[i, i - 1] = 1;
A[i, i] = -2;
A[i, i + 1] = 1;
A[i, n] = -q*delta*delta;
}
matrix(A, n);
}
static void pbBacNhat()
{
double q0, q1, q2, l,delta,qmin;
int n;
string s;
Console.WriteLine("Nhập lực phân bố: q1 = ");
s = Console.ReadLine();
q1 = Convert.ToDouble(s);
Console.WriteLine("Nhập lực phân bố: q2 = ");
s = Console.ReadLine();
q2 = Convert.ToDouble(s);
Console.WriteLine("Nhập chiều dài nhịp: l = ");
s = Console.ReadLine();
l = Convert.ToDouble(s);
Console.WriteLine("Nhập số điểm chia của lưới: n = ");
s = Console.ReadLine();
n = Convert.ToInt32(s);
double[] m = new double[n];
double[,] A = new double[n, n];
delta = l / (n - 1);
n--;
q0 = Math.Abs(q1 - q2);
qmin = (q1 < q2 ? q1 : q2);



for (int i = 1; i < n; i++)
for (int j = 1; j < n; j++)
A[i, j] = 0;
for (int i = 1; i < n; i++)
{
A[i, i - 1] = 1;
A[i, i] = -2;
A[i, i + 1] = 1;
A[i, n] = -1.0*(q0/4 *i+qmin)* delta * delta;
}
matrix(A, n);
}
static void matrix(double[,] a,int m)
{
double p,Q;
double [] x= new double[m+1];
for(int i=1;i{
p=a[i,i];
for(int j=i;j<=m;j++)
{
a[i,j]/=p;
}
for(int k=i+1;k{
Q=a[k,i];
for(int j=i;j<=m;j++)
{

a[k,j]-=a[i,j]*Q;
}
}
}
for (int i = 1; i < m; i++)
{
for (int j = 1; j <= m; j++)
{
Console.Write("{0} ",a[i,j]);
}
Console.WriteLine();
}
if (a[m - 1, m - 1] == 0)
if (a[m - 1, m] == 0)
Console.WriteLine("PT co vo so nghiem");
else
Console.WriteLine("PT vo nghiem");


else
x[m-1]= a[m-1,m]/a[m-1,m-1];
for (int i = m - 2; i > 0; i--)
{
x[i] = a[i, m];
for(int j=m-1;j>=i+1;j--)
x[i]-=(a[i,j]*x[j]);
}
for (int i = 0; i <= m; i++)
Console.WriteLine("M{0} = {1} ",i+1, x[i]);
}

}
}



×