Исходное дифференциальное уравнение

ý - y - 2*sin(x) = 0;

Рис 5. Форма для условия задачи.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

this->Hide();

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

double f1,x, y1;

double h = Convert::ToDouble(textBox1->Text);

double b = Convert::ToDouble(textBox2->Text);

double y = Convert::ToDouble(textBox3->Text);

x = 0;

y1 = y;

chart1->Series[0]->Points->Clear();

chart1->Series[1]->Points->Clear();

do

{

f1 = y - 2*sin(x);

x = x+h;

y = y+f1*h;

chart1->Series[0]->Points->AddXY(x, y);

chart1->Series[1]->Points->AddXY(x,f1);

}

while (x<=b);

}};}};}

Рис 6. Форма для автора.

Рис 7. Форма для отображения результатов моделировния.

Язык программирования C#

private void button1_Click(object sender, EventArgs e)

{

double h = 0.01;

double y = 0;

double b = 2;

double x = 0;

double y1 = 4;

do

{

double f = y + 2*Math.Sin(x);

x = x + h;

y = y1 + f * h;

chart1.Series[0].Points.AddXY(x, y);

chart1.Series[1].Points.AddXY(x, f);

y1 = y;

}

while (x <= b);

}

// foreach (DataPoint p in chart1.Series[0].Points)

// {

// Вывожу Х в лог

// textBox1.AppendText("X=" + p.XValue.ToString());

// textBox1.AppendText(Environment.NewLine);

// listBox1.Items.Add("X=" + p.XValue.ToString());

// }

// Y является массивом, поэтому пробегаю по массиву

// foreach (DataPoint yp in chart1.Series[0].Points)

// {

//Вывожу Y

// textBox1.AppendText("Y=" + yp.ToString());

// textBox1.AppendText(Environment.NewLine);

// listBox1.AppendText("Y=" + yp.ToString());

// listBox1.AppendText(Environment.NewLine);

// listBox2.Items.Add("Y=" + yp.ToString());

// }

// }

private void chart1_Click(object sender, EventArgs e)

{

}

private void button2_Click_1(object sender, EventArgs e)

{

Close();

} }}

Пример 2.

Условия задачи: Исследовать объект, динамика которого представляется дифференциальным уравнением

ý - y - a*sin(x) = 0;

Цель занятия: получить практические навыки исследования систем (объектов), динамика которых описывается дифференциальными уравнениями 1-го порядка при изменении параметра «а»

Задачи занятия:

1. Разработка алгоритма в виде блок- схемы.

2. Построение графиков кривых y=f(x), ý = f(x) =y(x) при параметрах a-var

Рис 8. Титульный лист Рис. 9. Условия задачи

Рис 10. Автор программы

Рис. 11. Результаты исследования.

Листинг программы

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

this->Hide();

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

double f1,f2,x, y1;

double h = Convert::ToDouble(textBox1->Text);

double b = Convert::ToDouble(textBox2->Text);

double y2 = Convert::ToDouble(textBox3->Text);

double a = Convert::ToDouble(textBox4->Text);

double a1 = Convert::ToDouble(textBox5->Text);

x = 0;

// double y1 = y2;

int a3=a;

//for int i=0;i<=1;i++)

//{

chart1->Series[0]->Points->Clear();

chart1->Series[1]->Points->Clear();

chart1->Series[2]->Points->Clear();

chart2->Series[0]->Points->Clear();

chart2->Series[1]->Points->Clear();

chart2->Series[2]->Points->Clear();

//}

do

{

// for (int i=1;i<=5;i++)

// {

a3=a;

f1 = y2 - a3*sin(x);

// int i=0;

double y = y2+f1*h;

//int i=0;

chart1->Series[0]->Points->AddXY(x, y);

chart2->Series[0]->Points->AddXY(x,f1);

a3=a3+a1;

f1 = y2 - a3*sin(x);

y = y2+f1*h;

chart1->Series[1]->Points->AddXY(x,y);

chart2->Series[1]->Points->AddXY(x,f1);

a3=a3+a1;

f1 = y2 - a3*sin(x);

y = y2+f1*h;

chart1->Series[2]->Points->AddXY(x,y);

chart2->Series[2]->Points->AddXY(x,f1);

//y=y2;

x = x+h;

}

while (x<=b);

x=0;

}

private: System::Void chart2_Click(System::Object^ sender, System::EventArgs^ e) {

}

private: System::Void textBox1_TextChanged(System::Object^ sender, System::EventArgs^ e) {

}

};

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow