Решение системы 6 уравнений методом Рунге-Кутта 4 порядка - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как переделать мою программу для решения системы 6 уравнений методом рунге кута 4 порядка? Переделать на язык С#? Проблема в том, что я не понимаю, как в моей программе реализовать систему заданных уравнений. dQ/dt = g/V*(N*cosj-cosQ) dH/dt = V*sinQ dP/dt=(-g/V*cosQ)*N*sinj dX/dt=V*cosQ*cosP dZ/dt=V*cosQ*sinP g,N,j, V– задаутся с клавы Начальные условия: Qo , Ho,Po,Xo,Zo – задаются с клавы Программа для другого уравнения на с++
Листинг программы
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <math.h>
  4. using namespace std;
  5. double myfunc(const double& x, const double& y)
  6. {
  7. return 6*x*x+5*x*y+y*y+4*x+2*y-3;
  8. }
  9. int main(int argc, char *argv[])
  10. {
  11. int i, n;
  12. double x, y, h,py, fy,k,k0,k1,k2,k3;
  13. cout<< " h = "; cin>>h;
  14. cout<< " n = "; cin>>n;
  15. cout<< " x0 = "; cin>>x;
  16. cout<< " y0 = "; cin>>y;
  17. for (i = 0; i <= n; i++)
  18. {
  19. fy = myfunc(x, y);
  20. k0=h*fy;
  21. k1=h*myfunc(x+h/2, y+k0/2);
  22. k2=h*myfunc(x+h/2, y+k1/2);
  23. k3=h*myfunc(x+h, y+k2);
  24. k=(k0+2*k1+2*k2+k3)/6;
  25. y += k;
  26. cout << "y = " << y;
  27. cout << " x = " << x << "\n";
  28. x += h;
  29. }
  30. system("PAUSE");
  31. return EXIT_SUCCESS;
  32. }

Решение задачи: «Решение системы 6 уравнений методом Рунге-Кутта 4 порядка»

textual
Листинг программы
  1. using System;
  2. using System.Windows.Forms;
  3. using System.Collections.Generic;
  4.  
  5. namespace рас1
  6. {
  7.     public partial class Form1 : Form
  8.     {
  9.         // Здесь будут храниться наши данные.
  10.         private List<MyData> list;
  11.  
  12.         public Form1()
  13.         {
  14.             InitializeComponent();
  15.         }
  16.  
  17.         private void Form1_Load(object sender, EventArgs e)
  18.         {
  19.             list = new List<MyData>();
  20.  
  21.             // Создаем связь между DataGridView, BindingSource и нашим списком.
  22.             dataGridView1.AutoGenerateColumns = true;
  23.             dataGridView1.DataSource = bindingSource1;
  24.             bindingSource1.DataSource = list;
  25.  
  26.            
  27.             button1.Click += new EventHandler(button1_Click);
  28.         }
  29.  
  30.         private void button1_Click(object sender, EventArgs e)
  31.         {
  32.            
  33.             double h, n, t, Q, V, ny, j;
  34.  
  35.             if (!double.TryParse(textBox1.Text, out h)) h = 0;
  36.             if (!double.TryParse(textBox2.Text, out n)) n = 0;
  37.             if (!double.TryParse(textBox3.Text, out t)) t = 0;
  38.             if (!double.TryParse(textBox4.Text, out Q)) Q = 0;
  39.             if (!double.TryParse(textBox5.Text, out V)) V = 0;
  40.             if (!double.TryParse(textBox6.Text, out ny)) ny = 0;
  41.             if (!double.TryParse(textBox7.Text, out j)) j = 0;
  42.  
  43.  
  44.             double fy, k, k0, k1, k2, k3;
  45.             for (int i = 0; i < n; i++)
  46.             {
  47.                 fy = MyFunc(t, Q);
  48.                 k0 = h * fy;
  49.                 k1 = h * MyFunc(t + h / 2.0, Q + k0 / 2.0);
  50.                 k2 = h * MyFunc(t + h / 2.0, Q + k1 / 2.0);
  51.                 k3 = h * MyFunc(t + h, Q + k2);
  52.                 k = (k0 + 2.0 * k1 + 2.0 * k2 + k3) / 6.0;
  53.                 Q += k;
  54.  
  55.                 // Заносим данные в наш список.
  56.                 list.Add(new MyData(t, Q));
  57.  
  58.                 t += h;
  59.             }
  60.  
  61.             // Отображаем результат (наш список) в DataGridView
  62.             bindingSource1.ResetBindings(true);
  63.         }
  64.  
  65.         //  функция.
  66.         private double MyFunc(double t, double Q,double V, double ny, double j)
  67.         {
  68.            
  69.             return Q = 9.81 / V * (ny * Math.Cos(j) - Math.Cos(Q));
  70.         }
  71.  
  72.         private void button2_Click(object sender, EventArgs e)
  73.         {
  74.             Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
  75.             Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
  76.             Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
  77.             //Книга.
  78.             ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value);
  79.             //Таблица.
  80.             ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
  81.  
  82.             //Значения [y - строка,x - столбец]
  83.             ObjWorkSheet.Cells[2, 1] = label1.Text;
  84.             ObjWorkSheet.Cells[2, 2] = label2.Text;
  85.             ObjWorkSheet.Cells[2, 3] = label3.Text;
  86.             ObjWorkSheet.Cells[2, 4] = label4.Text;
  87.            
  88.  
  89.             ObjWorkSheet.Cells[3, 1] = textBox1.Text;
  90.             ObjWorkSheet.Cells[3, 2] = textBox2.Text;
  91.             ObjWorkSheet.Cells[3, 3] = textBox3.Text;
  92.             ObjWorkSheet.Cells[3, 4] = textBox4.Text;
  93.  
  94.             for (int i = 0; i < list.Count; i++)
  95.             {
  96.                 ObjWorkSheet.Cells[i + 3, 1] = list[i].T;
  97.                 ObjWorkSheet.Cells[i + 3, 2] = list[i].Q;
  98.             }
  99.  
  100.  
  101.            
  102.  
  103.             //Вызываем нашу созданную эксельку.
  104.             ObjExcel.Visible = true;
  105.             ObjExcel.UserControl = true;
  106.         }
  107.         }
  108.     }
  109.  
  110.     // Класс, в котором хранятся данные.
  111.     class MyData
  112.     {
  113.         public double T { get; set; }
  114.         public double Q { get; set; }
  115.  
  116.         public MyData(double t, double Q)
  117.         {
  118.             this.T = t;
  119.             this.Q = Q;
  120.         }
  121.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы