|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Форма 2. using System.Collections.Generic;
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 Потенциальный_поток { public partial class Form2: Form { Form1 f1; public Double[,] MatrCoor, MatrTop, MatrGran; public double[,] K, Ke, K1; public double[] P, P1, u; public Form2(Form1 f1) { InitializeComponent(); this.f1 = f1; this.MatrCoor = f1.MatrCoor; this.MatrTop = f1.MatrTop; this.MatrGran = f1.MatrGran; Demo(); } void Demo() { int[,] IM; IM = new int[f1.m, 3]; for (int i = 0; i < 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(); dataGridView2.Rows.Add(); } //Формирование матрицы индексов for (int i = 0; i < f1.m; i++) { for (int j = 0; j < 3; j++) { IM[i, j] = Convert.ToInt32(MatrTop[i, j + 1] - 1); //dataGridView1.Rows[i].Cells[j].Value = IM[i, j]; } } K = new double[f1.n, f1.n]; //Формирование матрицы коэффициентов влияния for (int i = 0; i < f1.m; i++) { int n1 = IM[i, 0]; int n2 = IM[i, 1]; int n3 = IM[i, 2]; Double x1 = MatrCoor[n1, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n1, 2] * Math.Sin(MatrTop[i, 4]); Double y1 = MatrCoor[n1, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n1, 1] * Math.Sin(MatrTop[i, 4]); Double x2 = MatrCoor[n2, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n2, 2] * Math.Sin(MatrTop[i, 4]); Double y2 = MatrCoor[n2, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n2, 1] * Math.Sin(MatrTop[i, 4]); Double x3 = MatrCoor[n3, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n3, 2] * Math.Sin(MatrTop[i, 4]); Double y3 = MatrCoor[n3, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n3, 1] * Math.Sin(MatrTop[i, 4]); Double a1 = x3 - x2; Double a2 = x1 - x3; Double a3 = x2 - x1; Double b1 = y2 - y3; Double b3 = y1 - y2; Double b2 = y3 - y1; Double F2 = b1 * a2 - b2 * a1; Double sx = MatrTop[i, 5]; Double sy = MatrTop[i, 6]; Double[,] fk = new Double[3, 3]; fk[0, 0] = (sx * b1 * b1 + sy * a1 * a1) / (2* F2); fk[1, 1] = (sx * b2 * b2 + sy * a2 * a2) / (2*F2); fk[2, 2] = (sx * b3 * b3 + sy * a3 * a3) / (2* F2); fk[0, 1] = (sx * b1 * b2 + sy * a1 * a2) / (2* F2); fk[0, 2] = (sx * b1 * b3 + sy * a1 * a3) / (2* F2); fk[1, 2] = (sx * b3 * b2 + sy * a3 * a2) / (2* F2); fk[1, 0] = fk[0, 1]; fk[2, 0] = fk[0, 2]; fk[2, 1] = fk[1, 2]; for (int l = 0; l < 3; l++) { int ll = IM[i, l]; for (int z = 0; z < 3; z++) { int zz = IM[i, z]; K[ll, zz] = K[ll, zz] + fk[l, z]; } } } P = new double[f1.n]; for (int i = 0; i < MatrGran.Length / 4; i++) { int ll = Convert.ToInt32(MatrGran[i, 1]) - 1; int zz = Convert.ToInt32(MatrGran[i, 2]) - 1; double L = Math.Sqrt(Math.Pow((MatrCoor[ll, 1] - MatrCoor[zz, 1]), 2) + Math.Pow((MatrCoor[ll, 2] - MatrCoor[zz, 2]), 2)); P[ll] = P[ll] + MatrGran[i, 3] /2*L; P[zz] = P[zz] + MatrGran[i, 3] /2*L; } //Копирование матриц K1 = new double[f1.n, f1.n]; P1 = new double[f1.n]; for (int i = 0; i < f1.n; i++) { P1[i] = P[i]; //dataGridView1.Rows[i].Cells[0].Value = P[i]; for (int j = 0; j < f1.n; j++) { K1[i, j] = K[i, j];
//dataGridView1.Rows[i].Cells[j].Value = K[i, j]; } } //Главные граничные условия for (int i = 0; i < f1.n; i++) { if (MatrCoor[i, 3]!= 0) {
for (int j = 0; j < f1.n; j++) { if (i!= j) { K1[i, j] = 0;
} } K1[i, i] = K[i, i]; P1[i] = MatrCoor[i, 3] * K[i, i]; // dataGridView1.Rows[i].Cells[0].Value = P1[i]; } } u = new double[f1.n];
for (int i = 0; i < f1.n; i++) { u[i] = P1[i]; } int KS = 0; ClassSIMQ S = new ClassSIMQ(); S.SIMQ(K1, ref u, f1.n, ref KS); label1.Text = "Код ошибки равен " + KS.ToString(); for (int i = 0; i < f1.n; i++) {
dataGridView2.Rows[i].Cells[0].Value = u[i]; for (int j = 0; j < f1.n; j++) { dataGridView1.Rows[i].Cells[j].Value = K1[i, j]; } } //Расчет скоростей double[] vx = new double[f1.m]; double[] vx1 = new double[f1.m]; double[] vy = new double[f1.m]; double[] vy1 = new double[f1.m]; double[] v = new double[f1.m]; for (int i = 0; i < f1.m; i++) { int n1 = IM[i, 0]; int n2 = IM[i, 1]; int n3 = IM[i, 2]; Double x1 = MatrCoor[n1, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n1, 2] * Math.Sin(MatrTop[i, 4]); Double y1 = MatrCoor[n1, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n1, 1] * Math.Sin(MatrTop[i, 4]); Double x2 = MatrCoor[n2, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n2, 2] * Math.Sin(MatrTop[i, 4]); Double y2 = MatrCoor[n2, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n2, 1] * Math.Sin(MatrTop[i, 4]); Double x3 = MatrCoor[n3, 1] * Math.Cos(MatrTop[i, 4]) + MatrCoor[n3, 2] * Math.Sin(MatrTop[i, 4]); Double y3 = MatrCoor[n3, 2] * Math.Cos(MatrTop[i, 4]) - MatrCoor[n3, 1] * Math.Sin(MatrTop[i, 4]); Double a1 = x3 - x2; Double a2 = x1 - x3; Double a3 = x2 - x1; Double b1 = y2 - y3; Double b3 = y1 - y2; Double b2 = y3 - y1; Double F2 = b1 * a2 - b2 * a1; Double sx = MatrTop[i, 5]; Double sy = MatrTop[i, 6]; Double u1 = u[n1]; Double u2 = u[n2]; Double u3 = u[n3]; vx[i] = 1.0/F2* sx * (b1 * u1 + b2 * u2 + b3 * u3); vy[i] = 1.0/F2* sy * (a1 * u1 + a2 * u2 + a3 * u3); vx1[i] = vx[i] * Math.Cos(MatrTop[i, 4]) - vy[i] * Math.Sin(MatrTop[i, 4]); vy1[i] = vx[i] * Math.Sin(MatrTop[i, 4]) + vy[i] * Math.Cos(MatrTop[i, 4]); dataGridView3.Rows.Add(); dataGridView3.Rows[i].Cells[0].Value = i + 1; dataGridView3.Rows[i].Cells[1].Value = vx1[i]; dataGridView3.Rows[i].Cells[2].Value = vy1[i]; f1.qx[i] = vx1[i]; f1.qy[i] = vy1[i]; v[i] = Math.Sqrt(vx1[i] * vx1[i] + vy1[i] * vy1[i]); dataGridView3.Rows[i].Cells[3].Value = v[i]; } }
private void button1_Click(object sender, EventArgs e) { //Построение
f1.графикToolStripMenuItem_Click(sender, e); f1.Activate(); } } }
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.01 сек.) |