Помогите матрицу умножить на вектор))
должно считать, но не считает
Код:
a=new float[2, 2];
f=new float[2];
transA = new float[2, 2];
souzA = new float[2, 2];
X = new float[2];
int i = 0;
int j = 0;
//присваиваем матрицам соответствующие элементы из системы уравнений
f[0] = float.Parse(textBox9.Text);
f[1] = float.Parse(textBox10.Text);
a[0, 0] = float.Parse(textBox1.Text);
a[1, 0] = float.Parse(textBox2.Text);
a[0, 1] = float.Parse(textBox5.Text);
a[1, 1] = float.Parse(textBox6.Text);
d = body(a, 2);
if (d == 0)
{
label10.Text = "Определитель системы равен нулю, система уравнений не имеет единого решения";
}
else
{
for (i = 0; i < 2; i++) //Заполняем матрицы, соответствующие тем или иным икс.
for (j = 0; j < 2; j++) //Столбец, соответствующий порядковому номеру икс (учитывая, что индексация в массивах начинаеться с 0), заполняем свободными членами,
{
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
{
souzA[j, i] = (float)Math.Pow(-1, (i + j + 2)) * (float)body(matrix_cut(a, 2, i, j), 2 - 1);
}
textBox22.Text = "";
for (i = 0; i < 2; i++)
{
textBox22.Text += "\r\n";
for (j = 0; j < 2; j++)
{
if (souzA[i, j] == (int)souzA[i, j])
{
textBox22.Text += souzA[i, j] + "\t";
}
else
{
textBox22.Text += String.Format("{0:0.0000}", souzA[i, j]) + "\t";
}
}
}
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
{
transA[i, j] = (float)(1 / d) * souzA[i, j];
}
textBox21.Text = "";
for (i = 0; i < 2; i++)
{
textBox21.Text += "\r\n";
for (j = 0; j < 2; j++)
{
if (transA[i, j] == (int)transA[i, j])
{
textBox21.Text += transA[i, j] + "\t";
}
else
{
textBox21.Text += String.Format("{0:0.0000}", transA[i, j]) + "\t";
}
}
}
for (i = 0; i < 2; i++)
{
X = 0;
for (i = 0; i < 2; i++)
X += transA[i, j] * f;
}
}
i = j = 0;
label10.Text = String.Format("{0:0.00}", X); //вывод Х1
}
}
break;
}
f=new float[2];
transA = new float[2, 2];
souzA = new float[2, 2];
X = new float[2];
int i = 0;
int j = 0;
//присваиваем матрицам соответствующие элементы из системы уравнений
f[0] = float.Parse(textBox9.Text);
f[1] = float.Parse(textBox10.Text);
a[0, 0] = float.Parse(textBox1.Text);
a[1, 0] = float.Parse(textBox2.Text);
a[0, 1] = float.Parse(textBox5.Text);
a[1, 1] = float.Parse(textBox6.Text);
d = body(a, 2);
if (d == 0)
{
label10.Text = "Определитель системы равен нулю, система уравнений не имеет единого решения";
}
else
{
for (i = 0; i < 2; i++) //Заполняем матрицы, соответствующие тем или иным икс.
for (j = 0; j < 2; j++) //Столбец, соответствующий порядковому номеру икс (учитывая, что индексация в массивах начинаеться с 0), заполняем свободными членами,
{
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
{
souzA[j, i] = (float)Math.Pow(-1, (i + j + 2)) * (float)body(matrix_cut(a, 2, i, j), 2 - 1);
}
textBox22.Text = "";
for (i = 0; i < 2; i++)
{
textBox22.Text += "\r\n";
for (j = 0; j < 2; j++)
{
if (souzA[i, j] == (int)souzA[i, j])
{
textBox22.Text += souzA[i, j] + "\t";
}
else
{
textBox22.Text += String.Format("{0:0.0000}", souzA[i, j]) + "\t";
}
}
}
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
{
transA[i, j] = (float)(1 / d) * souzA[i, j];
}
textBox21.Text = "";
for (i = 0; i < 2; i++)
{
textBox21.Text += "\r\n";
for (j = 0; j < 2; j++)
{
if (transA[i, j] == (int)transA[i, j])
{
textBox21.Text += transA[i, j] + "\t";
}
else
{
textBox21.Text += String.Format("{0:0.0000}", transA[i, j]) + "\t";
}
}
}
for (i = 0; i < 2; i++)
{
X = 0;
for (i = 0; i < 2; i++)
X += transA[i, j] * f;
}
}
i = j = 0;
label10.Text = String.Format("{0:0.00}", X); //вывод Х1
}
}
break;
}
это большая часть
а ошибка я думаю тут
Код:
for (i = 0; i < 2; i++)
{
X = 0;
for (i = 0; i < 2; i++)
X += transA[i, j] * f;
}
{
X = 0;
for (i = 0; i < 2; i++)
X += transA[i, j] * f;
}
Если в каждом цикле писать не так
Код:
for (i = 0; i < 2; i++)
Код:
for (int i = 0; i < 2; i++)
Замечания по коду.
Вместо литерала "\r\n" следует употрблять Environment.NewLine. Так как на разных платформах могут быть разные символы перевода строки.
Вместо пустой строки "", следует писать String.Empty.
Строки подобные этой
Код:
float.Parse(textBox9.Text);
Всем контролам и переменным следует дать внятные наименования. Что означает, например, textBox9 ? Для ввода какой величины он предназначен? Из названия неясно.
У контрола TextBox есть метод AppendText - лучше использовать его вместо добавления к свойству Text.
Код переписать, об исполнении доложить.