Решение системы 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 – задаются с клавы Программа для другого уравнения на с++
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
double myfunc(const double& x, const double& y)
{
    return 6*x*x+5*x*y+y*y+4*x+2*y-3;
    
}
int main(int argc, char *argv[])
{
    int i, n; 
    double x, y, h,py, fy,k,k0,k1,k2,k3;
    cout<< " h = "; cin>>h;
    cout<< " n = "; cin>>n;
    cout<< " x0 = "; cin>>x;
    cout<< " y0 = "; cin>>y;
   for (i = 0; i <= n; i++)
    {
        fy = myfunc(x, y);
        k0=h*fy;
        k1=h*myfunc(x+h/2, y+k0/2);
        k2=h*myfunc(x+h/2, y+k1/2);
        k3=h*myfunc(x+h, y+k2);
        k=(k0+2*k1+2*k2+k3)/6;
        y += k;
        
        cout << "y = " << y;
        cout << "   x = " << x << "\n";
        x += h;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

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

textual
Листинг программы
using System;
using System.Windows.Forms;
using System.Collections.Generic;
 
namespace рас1
{
    public partial class Form1 : Form
    {
        // Здесь будут храниться наши данные.
        private List<MyData> list;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            list = new List<MyData>();
 
            // Создаем связь между DataGridView, BindingSource и нашим списком.
            dataGridView1.AutoGenerateColumns = true;
            dataGridView1.DataSource = bindingSource1;
            bindingSource1.DataSource = list;
 
            
            button1.Click += new EventHandler(button1_Click);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            
            double h, n, t, Q, V, ny, j;
 
            if (!double.TryParse(textBox1.Text, out h)) h = 0;
            if (!double.TryParse(textBox2.Text, out n)) n = 0;
            if (!double.TryParse(textBox3.Text, out t)) t = 0;
            if (!double.TryParse(textBox4.Text, out Q)) Q = 0;
            if (!double.TryParse(textBox5.Text, out V)) V = 0;
            if (!double.TryParse(textBox6.Text, out ny)) ny = 0;
            if (!double.TryParse(textBox7.Text, out j)) j = 0;
 
 
            double fy, k, k0, k1, k2, k3;
            for (int i = 0; i < n; i++)
            {
                fy = MyFunc(t, Q);
                k0 = h * fy;
                k1 = h * MyFunc(t + h / 2.0, Q + k0 / 2.0);
                k2 = h * MyFunc(t + h / 2.0, Q + k1 / 2.0);
                k3 = h * MyFunc(t + h, Q + k2);
                k = (k0 + 2.0 * k1 + 2.0 * k2 + k3) / 6.0;
                Q += k;
 
                // Заносим данные в наш список.
                list.Add(new MyData(t, Q));
 
                t += h;
            }
 
            // Отображаем результат (наш список) в DataGridView
            bindingSource1.ResetBindings(true);
        }
 
        //  функция.
        private double MyFunc(double t, double Q,double V, double ny, double j)
        {
            
            return Q = 9.81 / V * (ny * Math.Cos(j) - Math.Cos(Q));
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Excel.Application ObjExcel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
            //Книга.
            ObjWorkBook = ObjExcel.Workbooks.Add(System.Reflection.Missing.Value);
            //Таблица.
            ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
 
            //Значения [y - строка,x - столбец]
            ObjWorkSheet.Cells[2, 1] = label1.Text;
            ObjWorkSheet.Cells[2, 2] = label2.Text;
            ObjWorkSheet.Cells[2, 3] = label3.Text;
            ObjWorkSheet.Cells[2, 4] = label4.Text;
            
 
            ObjWorkSheet.Cells[3, 1] = textBox1.Text;
            ObjWorkSheet.Cells[3, 2] = textBox2.Text;
            ObjWorkSheet.Cells[3, 3] = textBox3.Text;
            ObjWorkSheet.Cells[3, 4] = textBox4.Text;
 
            for (int i = 0; i < list.Count; i++)
            {
                ObjWorkSheet.Cells[i + 3, 1] = list[i].T;
                ObjWorkSheet.Cells[i + 3, 2] = list[i].Q;
            }
 
 
           
 
            //Вызываем нашу созданную эксельку.
            ObjExcel.Visible = true;
            ObjExcel.UserControl = true;
        }
        }
    }
 
    // Класс, в котором хранятся данные.
    class MyData
    {
        public double T { get; set; }
        public double Q { get; set; }
 
        public MyData(double t, double Q)
        {
            this.T = t;
            this.Q = Q;
        }
    }

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


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

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

9   голосов , оценка 3.889 из 5
Похожие ответы