gpt4 book ai didi

c# - Runge Kutta C# 中的错误返回值

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:00 26 4
gpt4 key购买 nike

有人能告诉我,为什么它总是返回相同的“y”值吗?我在 Internet 上搜索了很多,但我仍然不知道为什么它不起作用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Inżynierkuuuu
{
class Lecimy
{
double t, y, krok, cel;

public Lecimy(double t, double y, double krok, double cel)
{
this.t = t;
this.y = y;
this.krok = krok;
this.cel = cel;
}

public delegate double funkcja(double t, double y);

public double RK(double t, double y, double krok, funkcja yp)
{
double k1 = krok * yp(t, y);
double k2 = krok * yp(t + krok * 0.5, y + k1 * 0.5);
double k3 = krok * yp(t + krok * 0.5, y + k2 * 0.5);
double k4 = krok * yp(t + krok, y + k3);

double reszta = 1 / 6 * (k1 + 2 * k2 + 2 * k3 + k4);

this.y = y + reszta;

return y;
}

public void Run()
{
while(t < cel)
{
y = RK(t, y, krok, FN1);
t = t + krok;
Console.WriteLine("t: {0}, y: {1}", t, y);
}
}

public double FN1(double t, double y)
{
return y;
}

}
}

第二类:这里的“y”值为 1,当我将它更改为 5 时,它总是会在输出窗口中返回 5。

static void Main(string[] args)
{
Lecimy e = new Lecimy(0.0, 1.0, 0.0001, 1.0);
e.Run();
//Application.EnableVisualStyles();
//Application.SetCompatibleTextRenderingDefault(false);
//Application.Run(new Form1());
}

最佳答案

尽管我不明白你想做什么,但你的代码有两个明显的问题。

  1. 1/6 将始终为零,您应该执行 1.0/6。原因是在前者中,选择了 /(int, int) 重载。
  2. 您将参数 y 与类字段 y 混为一谈。不要用相同的名称命名局部变量/参数/字段,这很困惑而且非常容易出错;在方法 RK 中,您确定不应该返回吗这个.y?你确定 this.y = y + reszta 是正确的吗不应该是 this.y += reszta。看看这有多困惑?

关于c# - Runge Kutta C# 中的错误返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com