当前位置:首页 > 编程笔记 > 正文
已解决

C#,数值计算——偏微分方程,谱方法的微分矩阵的计算方法与源程序

来自网友在路上 11008100提问 提问时间:2023-11-08 12:43:53阅读次数: 100

最佳答案 问答题库1008位专家为你答疑解惑

1 文本格式

using System;

namespace Legalsoft.Truffer
{
    /// <summary>
    /// 谱方法的微分矩阵
    /// Differentiation matrix for spectral methods
    /// </summary>
    public class Weights
    {
        public Weights()
        {
        }

        public static void weights(double z, double[] x, double[,] c)
        {
            int n = c.GetLength(0) - 1;
            int m = c.GetLength(1) - 1;
            double c1 = 1.0;
            double c4 = x[0] - z;
            for (int k = 0; k <= m; k++)
            {
                for (int j = 0; j <= n; j++)
                {
                    c[j, k] = 0.0;
                }
            }
            c[0, 0] = 1.0;
            for (int i = 1; i <= n; i++)
            {
                int mn = Math.Min(i, m);
                double c2 = 1.0;
                double c5 = c4;
                c4 = x[i] - z;
                for (int j = 0; j < i; j++)
                {
                    double c3 = x[i] - x[j];
                    c2 = c2 * c3;
                    if (j == i - 1)
                    {
                        for (int k = mn; k > 0; k--)
                        {
                            c[i, k] = c1 * (k * c[i - 1, k - 1] - c5 * c[i - 1, k]) / c2;
                        }
                        c[i, 0] = -c1 * c5 * c[i - 1, 0] / c2;
                    }
                    for (int k = mn; k > 0; k--)
                    {
                        c[j, k] = (c4 * c[j, k] - k * c[j, k - 1]) / c3;
                    }
                    c[j, 0] = c4 * c[j, 0] / c3;
                }
                c1 = c2;
            }
        }

    }
}
 

2 代码格式

using System;namespace Legalsoft.Truffer
{/// <summary>/// 谱方法的微分矩阵/// Differentiation matrix for spectral methods/// </summary>public class Weights{public Weights(){}public static void weights(double z, double[] x, double[,] c){int n = c.GetLength(0) - 1;int m = c.GetLength(1) - 1;double c1 = 1.0;double c4 = x[0] - z;for (int k = 0; k <= m; k++){for (int j = 0; j <= n; j++){c[j, k] = 0.0;}}c[0, 0] = 1.0;for (int i = 1; i <= n; i++){int mn = Math.Min(i, m);double c2 = 1.0;double c5 = c4;c4 = x[i] - z;for (int j = 0; j < i; j++){double c3 = x[i] - x[j];c2 = c2 * c3;if (j == i - 1){for (int k = mn; k > 0; k--){c[i, k] = c1 * (k * c[i - 1, k - 1] - c5 * c[i - 1, k]) / c2;}c[i, 0] = -c1 * c5 * c[i - 1, 0] / c2;}for (int k = mn; k > 0; k--){c[j, k] = (c4 * c[j, k] - k * c[j, k - 1]) / c3;}c[j, 0] = c4 * c[j, 0] / c3;}c1 = c2;}}}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"C#,数值计算——偏微分方程,谱方法的微分矩阵的计算方法与源程序":http://eshow365.cn/6-35359-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!