|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Форма 2. Текст клиентского кода программы расчета плоской фермы ..91ПРИЛОЖЕНИЯ ПРИЛОЖЕНИЕ 1 Текст клиентского кода программы расчета плоской фермы……..91 ПРИЛОЖЕНИЕ 2 Программа расчета плоской рамы…………………………………..107 ПРИЛОЖЕНИЕ 3 Программа расчета потенциального течения жидкости…………..134 ПРИЛОЖЕНИЕ 4 Программа исследования вращения твердого тела………………..149 ПРИЛОЖЕНИЕ 5 Программа расчета условий равновесия системы сил……………154
ПРИЛОЖЕНИЕ 1 Текст клиентского кода программы расчета плоской фермы: Форма1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing.Drawing2D;
namespace WindowsFormsAppФерма { public partial class Form1: Form { Form2 f2; List<string> list_st = new List<string>(); string st; string[] St; public bool dinamika = false;
public Double[,] MatrCoor, MatrTop; public double[] q; public int i = 0, j = 0, n = 0, m = 0; public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { // Сохранение в файл координатной матрицы n = 0; for (i = 0; i < dataGridView1.RowCount - 1; i++) n++; MatrCoor = new double[n, 7];
for (i = 0; i < n; i++) { for (j = 0; j < 7; j++) MatrCoor[i, j] = Convert.ToDouble(dataGridView1.Rows[i].Cells[j].Value);
} if (saveFileDialog1.ShowDialog() == DialogResult.OK) { FileStream FS= saveFileDialog1.OpenFile() as FileStream; StreamWriter SR = new StreamWriter(FS); //dataGridView1.Rows.Add(); for (i = 0; i < n; i++) { st = null; for (j = 0; j < 7; j++) { st = st + MatrCoor[i, j].ToString() + " "; } SR.WriteLine(st); } SR.Close(); FS.Close(); }
}
private void button2_Click(object sender, EventArgs e) { // Считывание из файла координатной матрицы if (openFileDialog1.ShowDialog() == DialogResult.OK) { FileStream FSR=openFileDialog1.OpenFile() as FileStream; StreamReader SRR = new StreamReader(FSR);
dataGridView1.Rows.Clear();
list_st.Clear(); while (SRR.Peek() > 0) { list_st.Add(SRR.ReadLine()); //dataGridView1 dataGridView1.Rows.Add(); } St = list_st.ToArray(); n = St.Length; MatrCoor = new double[n, 7]; MatrCoor = new Double[n, 7];
for (i = 0; i < n; i++) {
St[i] = St[i].Replace(".", ",");; //Разбиение строки St на подстроки aa string[] aa = St[i].Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for (j = 0; j < aa.Length; j++) { //Заполнение матрицы и таблицы MatrCoor[i, j] = Convert.ToDouble(aa[j]); dataGridView1.Rows[i].Cells[j].Value= MatrCoor[i, j]; } }
SRR.Close(); FSR.Close(); } }
private void button3_Click(object sender, EventArgs e) { // Сохранение в файл топологической матрицы m = 0; for (i = 0; i < dataGridView2.RowCount - 1; i++) m++; MatrTop = new double[m, 5];
for (i = 0; i < m; i++) { for (j = 0; j < 5; j++) MatrTop[i, j] = Convert.ToDouble(dataGridView2.Rows[i].Cells[j].Value);
} if (saveFileDialog1.ShowDialog() == DialogResult.OK) { FileStream FS =saveFileDialog1.OpenFile() as FileStream; StreamWriter SR = new StreamWriter(FS); //dataGridView1.Rows.Add(); for (i = 0; i < m; i++) { st = null; for (j = 0; j < 5; j++) { st = st + MatrTop[i, j].ToString() + " "; } SR.WriteLine(st); } SR.Close(); FS.Close(); }
}
private void button4_Click(object sender, EventArgs e) { // Считывание из файла топологической матрицы if (openFileDialog1.ShowDialog() == DialogResult.OK) { FileStream FSR = openFileDialog1.OpenFile() as FileStream; StreamReader SRR = new StreamReader(FSR);
dataGridView2.Rows.Clear();
list_st.Clear(); while (SRR.Peek() > 0) { list_st.Add(SRR.ReadLine()); //dataGridView1 dataGridView2.Rows.Add(); } St = list_st.ToArray(); m = St.Length; MatrTop = new double[m, 5]; MatrTop = new Double[m, 5];
for (i = 0; i < m; i++) {
St[i] = St[i].Replace(".", ",");; //Разбиение строки St на подстроки aa string[] aa = St[i].Split(" \t".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
for (j = 0; j < aa.Length; j++) { //Заполнение матрицы и таблицы MatrTop[i, j] = Convert.ToDouble(aa[j]); dataGridView2.Rows[i].Cells[j].Value = MatrTop[i, j]; } }
SRR.Close(); FSR.Close();
}
}
private void button5_Click(object sender, EventArgs e) { //Построение double[] x, y; Double My = 0, MaxY = 0, Mx = 0, MaxX = 0; int[] yint, xint;
Bitmap myBmp;
x = new double[n]; y = new double[n]; for (i = 0; i < n; i++) { x[i] = MatrCoor[i, 1]; y[i] = MatrCoor[i, 2]; }
if (x == null || y == null) return; MaxY = 0.001;
MaxX = 0.001;
for (i = 0; i < n; i++) { if (System.Math.Abs(y[i]) > MaxY) { MaxY = System.Math.Abs(y[i]);; } if (System.Math.Abs(x[i]) > MaxX) { MaxX = System.Math.Abs(x[i]); }
} if (MaxY >= MaxX) MaxX = MaxY; else MaxY = MaxX; My = (pictureBox1.Height) / 1.2 / MaxY;
Mx = (pictureBox1.Width) / 1.2 / MaxX;
yint = new int[n];
xint = new int[n]; for (int i = 0; i < n; i++) { yint[i] = Convert.ToInt32(pictureBox1.Height / 1.1) - Convert.ToInt32(y[i] * My);
xint[i] = Convert.ToInt32(pictureBox1.Width / 10) + Convert.ToInt32(x[i] * Mx);
}
myBmp = new Bitmap(pictureBox1.Width, pictureBox1.Height); Graphics gr1 = Graphics.FromImage(myBmp); Pen P1 = new Pen(Color.Red, 2); gr1.DrawRectangle(P1, 1, 1, pictureBox1.Width - 2, pictureBox1.Height - 2);
Pen P2 = new Pen(Color.Green, 2); Pen P5 = new Pen(Color.Green, 8); Brush B2 = new SolidBrush(Color.Azure);
int[] Zakx = new int[n]; int[] Zaky = new int[n]; for (i = 0; i < n; i++) { Zakx[i] = Convert.ToInt32(MatrCoor[i, 5]); Zaky[i] = Convert.ToInt32(MatrCoor[i, 6]);
}
for (i = 0; i < n; i++) {
//gr1.FillEllipse(B2, xint[i]-4, yint[i]-4,8,8); //gr1.DrawEllipse(P2, xint[i] - 4, yint[i] - 4, 8, 8); if (Zakx[i]!=0 || Zaky[i]!= 0) { gr1.DrawLine(P5, xint[i] - 24, yint[i] - 8,xint[i] + 24, yint[i] - 8); } } Pen P3 = new Pen(Color.Brown, 4); for (i = 0; i < m; i++) { gr1.DrawLine(P3, xint[(int)MatrTop[i, 1] - 1], yint[(int)MatrTop[i, 1] - 1], xint[(int)MatrTop[i, 2] - 1], yint[(int)MatrTop[i, 2] - 1]); } for (i = 0; i < n; i++) {
gr1.FillEllipse(B2, xint[i] - 4, yint[i] - 4, 8, 8); gr1.DrawEllipse(P2, xint[i] - 4, yint[i] - 4, 8, 8);
} double Mp = 0,MaxP=0.001,P=0; double []Px=new double[n]; double[] Py = new double[n]; int[] intPx = new int[n]; int[] intPy = new int[n]; Pen P4 = new Pen(Color.Indigo, 6); // Стиль пера с наконечниками P4.SetLineCap(LineCap.Flat, LineCap.ArrowAnchor, DashCap.Flat); for(i=0;i<n;i++)
{ Px[i]=MatrCoor[i, 3]; Py[i] = MatrCoor[i, 4]; P = Math.Sqrt(Px[i] * Px[i] + Py[i] * Py[i]); if (MaxP <= P) MaxP = P; } Mp = pictureBox1.Width / 8 / MaxP; for (i = 0; i < n; i++) { intPy[i] = Convert.ToInt32(Py[i] * Mp); intPx[i] = Convert.ToInt32(Px[i] * Mp);
} for (i = 0; i < n; i++) { if (intPx[i]!= 0 || intPy[i]!= 0) { gr1.DrawLine(P4, xint[i], yint[i], xint[i]+intPx[i], yint[i]-intPy[i]); } } //Построение второго слоя после вычисления перемещений double[] x1 = new double[n]; double[] y1 = new double[n]; double Md = 1; // Условие продолжения построений if (q!= null) { Md = Convert.ToDouble(textBox1.Text); for (i = 0; i < 2 * n; i++) { if (i % 2 == 0) { x1[i/2] = x[i/2] + q[i] * Md;
} else { y1[i / 2] = y[i / 2] + q[i] * Md; } }
int [] yint1 = new int[n];
int [] xint1 = new int[n]; for (int i = 0; i < n; i++) { yint1[i] = Convert.ToInt32(pictureBox1.Height / 1.1) - Convert.ToInt32(y1[i] * My);
xint1[i] = Convert.ToInt32(pictureBox1.Width / 10) + Convert.ToInt32(x1[i] * Mx);
}
Pen P11 = new Pen(Color.Aqua, 1); gr1.DrawRectangle(P11, 1, 1, pictureBox1.Width - 2, pictureBox1.Height - 2);
Pen P12 = new Pen(Color.Green, 1); Pen P15 = new Pen(Color.Green, 2); Brush B12 = new SolidBrush(Color.Azure);
Pen P13 = new Pen(Color.Red, 2); for (i = 0; i < m; i++) { gr1.DrawLine(P13, xint1[(int)MatrTop[i, 1] - 1], yint1[(int)MatrTop[i, 1] - 1], xint1[(int)MatrTop[i, 2] - 1], yint1[(int)MatrTop[i, 2] - 1]); } for (i = 0; i < n; i++) {
gr1.FillEllipse(B2, xint1[i] - 4, yint1[i] - 4, 8, 8); gr1.DrawEllipse(P2, xint1[i] - 4, yint1[i] - 4, 8, 8);
}
Pen P14 = new Pen(Color.Blue, 3); // Стиль пера с наконечниками P14.SetLineCap(LineCap.Flat, LineCap.ArrowAnchor, DashCap.Flat);
for (i = 0; i < n; i++) { intPy[i] = Convert.ToInt32(Py[i] * Mp); intPx[i] = Convert.ToInt32(Px[i] * Mp);
} for (i = 0; i < n; i++) { if (intPx[i]!= 0 || intPy[i]!= 0) { gr1.DrawLine(P14, xint1[i], yint1[i], xint1[i] + intPx[i], yint1[i] - intPy[i]); } } }
pictureBox1.Image = myBmp;
}
private void button6_Click(object sender, EventArgs e) { //Выход Close(); }
private void button7_Click(object sender, EventArgs e) { // Вычисление // Создание формы 2
f2 = new Form2(this); f2.Show(); }
private void button8_Click(object sender, EventArgs e) { // Вычисление амплитуд перемещений при установившемся режиме dinamika = true; button7_Click(sender,e); dinamika = false; }
} } Форма 2 ---------------------------------------------------------------------------------------------------------------------
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsAppФерма { public partial class Form2: Form { //Вычисление матрицы жесткости Form1 f1; public double[,] K,K1,Ke,Ke1,T,Tt,TtK,M,Me,Me1,TtM; public double[] P, P1, u, u1, eps, usilie; public int[,] A; public double Ro = 1,w=0; public Form2(Form1 f1) { InitializeComponent(); this.f1 = f1; Demo(); } void Demo() { //dataGridView1.Rows.Clear();
if (f1.n > 0) { for (int i = 0; i < 2 * f1.n - 1; i++) { // Добавление колонки DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn(); titleColumn1.HeaderText = "Titlt" + (i + 2).ToString(); //Выравнивание ширины колонки в соответствии с заданным стилем - AllCells titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridView1.Columns.Add(titleColumn1); dataGridView1.Rows.Add(); } } P = new double[2 * f1.n]; P1 = new double[2 * f1.n]; K = new double[2 * f1.n, 2 * f1.n]; M = new double[2 * f1.n, 2 * f1.n]; K1 = new double[2 * f1.n, 2 * f1.n]; A = new int[f1.m, 5]; for (int i = 0; i < f1.n * 2; i++) { P[i] = 0; if (i % 2 == 0) P[i] = f1.MatrCoor[i / 2, 3]; else P[i] = f1.MatrCoor[i / 2, 4]; //dataGridView1.Rows[i].Cells[0].Value = P[i]; } for (int i = 0; i < f1.m; i++) { // Формирование матрицы индексов A[i, 0] = i + 1; A[i, 1] = Convert.ToInt32(f1.MatrTop[i, 1]) * 2 - 1; A[i, 2] = Convert.ToInt32(f1.MatrTop[i, 1]) * 2; A[i, 3] = Convert.ToInt32(f1.MatrTop[i, 2]) * 2 - 1; A[i, 4] = Convert.ToInt32(f1.MatrTop[i, 2]) * 2;
} //Формирование матрицы жесткости и масс if(f1.dinamika) w = Convert.ToDouble(f1.textBox2.Text); for (int ii = 0; ii < f1.m; ii++) { Ke = new double[2, 2]; Ke1 = new double[4, 4]; Me = new double[2, 2]; Me1 = new double[4, 4]; T = new double[2, 4]; Tt = new double[4, 2]; TtK = new double[4, 2]; TtM = new double[4, 2]; double x1 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 1]) - 1, 1]; double y1 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 1]) - 1, 2]; double x2 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 2]) - 1, 1]; double y2 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 2]) - 1, 2]; double h = Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); double cosA = (x2 - x1) / h; double cosB = (y2 - y1) / h; double EF = f1.MatrTop[ii, 3]; double mm = f1.MatrTop[ii, 4]; T[0, 0] = cosA; T[0, 1] = cosB; T[0, 2] = 0; T[0, 3] = 0; T[1, 0] = 0; T[1, 1] = 0; T[1, 2] = cosA; T[1, 3] = cosB; Ke[0, 0] = EF / h; Ke[1, 1] = EF / h; Ke[0, 1] = -EF / h; Ke[1, 0] = -EF / h; double mmm=mm*h/6; Me[0, 0] = mmm*2; Me[1, 1] = mmm*2; Me[0, 1] = mmm; Me[1, 0] = mmm; for (int i = 0; i < 2; i++) for (int j = 0; j < 4; j++) Tt[j, i] = T[i, j]; for (int i = 0; i < 4; i++) { for (int j = 0; j < 2; j++) { TtK[i, j] = 0; TtM[i, j] = 0; for (int k = 0; k < 2; k++) { TtK[i, j] = TtK[i, j] + Tt[i, k] * Ke[k, j]; TtM[i, j] = TtM[i, j] + Tt[i, k] * Me[k, j]; } } } for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { Ke1[i, j] = 0; Me1[i, j] = 0; for (int k = 0; k < 2; k++) { Ke1[i, j] = Ke1[i, j] + TtK[i, k] * T[k, j]; Me1[i, j] = Me1[i, j] + TtM[i, k] * T[k, j]; } } }
for (int i = 1; i <= 4; i++) { int ig = A[ii, i]; for (int j = 1; j <= 4; j++) { int jg = A[ii, j]; K[ig - 1, jg - 1] = K[ig - 1, jg - 1] + Ke1[i - 1, j - 1]; M[ig - 1, jg - 1] = M[ig - 1, jg - 1] + Me1[i - 1, j - 1];
} }
}
//Копирование матрицы жесткости в K1 for (int i = 0; i < f1.n * 2; i++) for (int j = 0; j < f1.n * 2; j++) { K1[i, j] = K[i, j]; //dataGridView1.Rows[i].Cells[j].Value = K1[i, j]; } //Добавление динамической составляющей for (int i = 0; i < f1.n * 2; i++) for (int j = 0; j < f1.n * 2; j++) { K1[i, j] = K[i, j]-w*w*M[i,j]; //dataGridView1.Rows[i].Cells[j].Value = K1[i, j]; } for (int i = 0; i < f1.n; i++) {
if (f1.MatrCoor[i, 5] > 0) { for (int j = 0; j < f1.n * 2; j++) { K1[2*i, j] = 0; } K1[2 * i, 2 * i] = Ro * K[2 * i, 2 * i]; } if (f1.MatrCoor[i, 6] > 0) { for (int j = 0; j < f1.n * 2; j++) { K1[2*i+1, j] = 0; } K1[2 * i + 1, 2 * i + 1] = Ro * K[2 * i + 1, 2 * i + 1]; }
}
for (int i = 0; i < f1.n * 2; i++) { P1[i] = P[i]; //dataGridView1.Rows[i].Cells[0].Value = P1[i]; }
int KS = 0; ClassSIMQ S = new ClassSIMQ(); S.SIMQ(K1,ref P1, f1.n*2, ref KS); label2.Text = "Код ошибки равен "+KS.ToString(); f1.q=new double[f1.n*2]; f1.q = P1; //Реакции и узловые внешние силы double[] D = new double[f1.n * 2]; for (int i = 0; i < f1.n * 2; i++) { D[i] = 0; for (int j = 0; j < f1.n * 2; j++) { D[i]=D[i]+K[i,j]*P1[j]; } } //Проверка double[] D1 = new double[f1.n * 2]; for (int i = 0; i < f1.n * 2; i++) { D1[i] = -P[i]; for (int j = 0; j < f1.n * 2; j++) { D1[i] = D1[i] + K1[i, j] * P1[j]; } } int signal = 0; if (f1.radioButton1.Checked) signal = 1; if (f1.radioButton2.Checked) signal = 2; if (f1.radioButton3.Checked) signal = 3; switch (signal) {
case 1: //Вывод матрицы жесткости в таблицу for (int i = 0; i < f1.n * 2; i++) for (int j = 0; j < f1.n * 2; j++) { //K1[i, j] = K[i, j]; dataGridView1.Rows[i].Cells[j].Value = K1[i, j]; } label1.Text = " Матрица жесткости"; break; case 2: for (int i = 0; i < f1.n * 2; i++) {
dataGridView1.Rows[i].Cells[0].Value = P1[i]; } for (int i = 0; i < f1.n * 2; i++) {
dataGridView1.Rows[i].Cells[1].Value = D[i]; } label1.Text = " Перемещения узлов и внешние силы"; break; case 3: for (int i = 0; i < f1.n * 2; i++) {
dataGridView1.Rows[i].Cells[1].Value = D1[i]; } label1.Text = " Проверка равновесия узлов"; break; default: String Str = "Выберите результат вычислений"; //Вывод сообщения MessageBox.Show(Str, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
} }
private void button1_Click(object sender, EventArgs e) { //Напряженя и деформации // dataGridView2.Rows.Clear();
if (f1.n > 0) { for (int i = 0; i < f1.m - 1; i++) { // Добавление колонки DataGridViewTextBoxColumn titleColumn1 = new DataGridViewTextBoxColumn(); titleColumn1.HeaderText = "Элемент " + (i + 2).ToString(); //Выравнивание ширины колонки в соответствии с заданным стилем - AllCells titleColumn1.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; dataGridView2.Columns.Add(titleColumn1);
} for (int i = 0; i < 1; i++) dataGridView2.Rows.Add();
} eps=new double[f1.m]; usilie=new double[f1.m]; for (int ii = 0; ii < f1.m; ii++) {
T = new double[2, 4];
double x1 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 1]) - 1, 1]; double y1 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 1]) - 1, 2]; double x2 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 2]) - 1, 1]; double y2 = f1.MatrCoor[Convert.ToInt32(f1.MatrTop[ii, 2]) - 1, 2]; double h = Math.Sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); double cosA = (x2 - x1) / h; double cosB = (y2 - y1) / h; double EF = f1.MatrTop[ii, 3];
T[0, 0] = cosA; T[0, 1] = cosB; T[0, 2] = 0; T[0, 3] = 0; T[1, 0] = 0; T[1, 1] = 0; T[1, 2] = cosA; T[1, 3] = cosB;
u1 = new double[4]; u1[0] = P1[A[ii, 1]-1]; u1[1] = P1[A[ii, 2]-1]; u1[2] = P1[A[ii, 3]-1]; u1[3] = P1[A[ii, 4]-1]; u = new double[2]; for (int i = 0; i < 2; i++) { u[i] = 0; for (int k = 0; k < 4; k++) u[i] = u[i] + T[i, k] * u1[k]; }
double[] dNdx = new double[2]; dNdx[0] = -1 / h; dNdx[1] = 1 / h;
eps[ii] = 0; for (int k = 0; k < 2; k++) eps[ii] = eps[ii] + dNdx[k]*u[k];
usilie[ii] = EF * eps[ii]; }
for (int i = 0; i < f1.m; i++) {
dataGridView2.Rows[0].Cells[i].Value = eps[i]; dataGridView2.Rows[1].Cells[i].Value = usilie[i]; }
} } } Класс ClassSIMQ using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace WindowsFormsAppФерма { class ClassSIMQ { double[] A,B;
public void SIMQ(double[,] K,ref double[] P, int N,ref int KS) {
A = new double[N * N+1]; B = new double[N+1]; int sd=0; for (int i = 0; i < N; i++) { B[i + 1] = P[i]; for (int j = 0; j < N; j++) { sd++; A[sd] = K[j,i]; } } int JY,IT,J,IJ,IMAX=0,I,I1,k,I2,IQS,IX,JX,IXJX,JJX,IXJ,NY,IB,IA,IC; double TOL = 0,BIGA=0,SAVE; KS = 0; int JJ = -N; for (J = 1; J <= N; J++) { JY = J + 1; JJ = JJ + N + 1; BIGA = 0.0; IT = JJ - J; for (I = J; I <= N; I++) { IJ = IT + I; if (Math.Abs(BIGA) - Math.Abs(A[IJ])<0) { BIGA = A[IJ]; IMAX = I; } }//30 if (Math.Abs(BIGA) - TOL <= 0) { KS = 1; return; } I1 = J + N * (J - 2); IT = IMAX - J; for (k = J; k <= N; k++) { I1 = I1 + N; I2 = I1 + IT; SAVE = A[I1]; A[I1] = A[I2]; A[I2] = SAVE; A[I1] = A[I1] / BIGA; }//50 SAVE = B[IMAX]; B[IMAX] = B[J]; B[J] = SAVE / BIGA; if ((J - N) == 0) { break; } IQS = N * (J - 1); for (IX = JY; IX <= N; IX++) { IXJ = IQS + IX; IT = J - IX; for (JX = JY; JX <= N; JX++) { IXJX = N * (JX - 1) + IX; JJX = IXJX + IT; A[IXJX] = A[IXJX] - A[IXJ] * A[JJX]; } B[IX] = B[IX] - B[J] * A[IXJ]; } }//65 NY = N - 1; IT = N * N; for (J = 1; J <= NY; J++) { IA = IT - J; IB = N - J; IC = N; for (k = 1; k <= J; k++) { B[IB] = B[IB] - A[IA] * B[IC]; IA = IA - N; IC = IC - 1; } }//80
for (int i = 0; i < N; i++) { P[i] = B[i + 1]; }
}
} } Экранные формы: Форма 1. Форма 2.
ПРИЛОЖЕНИЕ 2 Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.112 сек.) |