Я уже неделю себе ломят голову над этой задачей, у меня возникли некоторые вопросы:
У меня есть готовая функция для диф. уравнения первого порядка
Код:
void euler(double x0, double y0, double h, double y[], int ny, double (*fn)(double,double))
{
int i;
double xi = x0;
double yi = y0;
for(i=0; i < ny; ++i, xi += h)
{
yi = y = yi + h*fn(xi,yi);
}
}
Так вот у меня возник вопрос как с его помощью решить систему уравнений. Мы такого с мат. анализа не проходили поэтому решил обратиться к вам
Условие задачи ниже
Я уже все нашел только не знаю как начать финальною задачу
Код всей программы
Код:
void MultiplyMatrix(int a[N][N],int b[N][N],int c[N][N],int h,int w)
{
int i,j;
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
c[i][j] = a[i][j]*b[j][i];
}
}
}
int minElement(int a[N][N],int &y,int &x,int h,int w)
{
int temp;
temp = a[0][0];
y = 0;
x = 0;
int i,j;
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
if(temp > a[i][j])
{
temp = a[i][j];
x = j;
y = i;
}
}
}
return temp;
}
void Transpon(int a[N][N],int b[N][N],int h,int w)
{
int i,j;
for(i = 0; i < h;i++)
{
for(j = 0; j < w; j++)
{
b[j][i] = a[i][j];
}
}
}
float f(float x)
{
return pow(pow(x,2),1./3.) - cos(x);
}
float Nuton(float x1, float x2,float eps)
{
float x = (x2 - x1)/2;
while (fabs(f(x)) > eps)
{
if (f(x) > 0)
{
x2 = x;
}
else
{
x1 = x;
}
x = (x2+x1)/2;
}
return x;
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Button1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x0,xk,x,epsilon;
int i,j,x1=0,y=0;
int min_element;
if(ComboBox1->Text == "Вручну")
{
x0 = StrToFloat(LabeledEdit1->Text);
xk = StrToFloat(LabeledEdit2->Text);
epsilon = StrToFloat(LabeledEdit3->Text);
}
x = Nuton(x0,xk,epsilon);
LabeledEdit4->Text = FloatToStr(x);
int G[4][4];
int Z[4][4];
int Gt[4][4];
int A[4][4];
int W[4][4];
int Wt[4][4];
int inval=0;
if(ComboBox1->Text == "Вручну")
{
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
G[i][j]=StrToInt(StringGrid1->Cells[j][i]);
Z[i][j]=StrToInt(StringGrid2->Cells[j][i]);
}
}
}
Transpon(G,Gt,4,4);
int temp;
if(ComboBox1->Text == "Вручну")
{
for(int i = 0; i < 4;i++)
{
for(int j = 0; j < 3; j++)
{
StringGrid3->Cells[j][i]=Gt[i][j];
}
}
}
MultiplyMatrix(Z,Gt,A,3,4);
if(ComboBox1->Text == "Вручну")
{
for(int i = 0; i < 3;i++)
{
for(int j = 0; j < 4; j++)
{
StringGrid4->Cells[j][i]=A[i][j];
}
}
}
min_element=minElement(A,y,x1,3,4);
Label6->Caption = "Мінімальний елемент матриці A "+IntToStr(min_element);
int tmp;
for(int z=3;z>0;z--)
{
for(int i=0;i<3-1;i++)
{
if(A[i][x1]>A[i+1][x1])
{
tmp = A[i][x1];
A[i][x1] = A[i+1][x1];
A[i+1][x1] = tmp;
}
}
}
for(int i = 0; i < 3;i++)
{
for(int j = 0; j < 4; j++)
{
W[i][j] = A[i][j];
StringGrid5->Cells[j][i]=W[i][j];
}
}
Transpon(W,Wt,4,4);
for(int i = 0; i < 4;i++)
{
for(int j = 0; j < 3; j++)
{
StringGrid6->Cells[j][i]=Wt[i][j];
}
}
}
Проверку объектов на предмет ввода данных убрал
Еще не реализовал программно матрицу D (A), но уже есть на листе