Problem z sumowaniem szeregu.

0

Cześć, na wstępie napiszę że widziałem podobne posty, zmieniałem kod a jednak nic mi to nie pomogło więc muszę napisać ten wątek.

Mam problem z programem sumującym szereg funkcyjny o wzorze (jak w załączniku) ((x^n)*(ln(n)))/n!.
Program ma obliczać sumę szeregu na podstawie zmiennej x i podanego Eps od 0 do 1.

public static void mgSumaSzeregu(float mgX, float mgEps, out float mgSuma, out int mgi)
        {
            mgSuma = 0;
            mgi = 1;
            float mgWyraz = 0; //pierwszy wyraz sumy to 0
            do
            {
                 mgSuma = mgSuma + mgWyraz;
                mgi++
                mgWyraz = mgWyraz + ((float)Math.Pow(mgX, mgi) * (float)Math.Log(mgi))/(float)mgSilnia(mgi));
            }
            while (Math.Abs(mgWyraz) > mgEps);
 
static int mgSilnia(int mgn)
        {
            if (mgn == 0)
            {
                return 1;
            }
            else
            {
                return mgn* mgSilnia(mgn - 1);
    }

Program niezależnie od wpisanego X i zawsze tego samego Eps pokazuje tą samą sumę. Ręce mi już opadają.
Pomocy dobrzy ludzie!

2

Koolejny szereg na tym forum w dość krótkim czasie, to gdzie was tymi szeregami meczą, jakiś bootcamp czy cuś :P?

public static double SumaSzeregu(double x, double eps)
        {
            double suma = 0;
            double silnia = 2;
            double xdontej = x*x;
            double wyraz = 0;
            int i = 2;
            do
            {
                wyraz = xdontej / silnia * Math.Log(i);
                suma += wyraz;
                xdontej *= x;               
                silnia *= ++i;                
            }
            while (Math.Abs(wyraz) > eps);

            return suma;
        } 
0

Dzięki wielkie :) Przerobiłem metodę na "void" z większą ilością elementów wyjściowych i już działa :D

0
neves napisał(a):

Koolejny szereg na tym forum w dość krótkim czasie, to gdzie was tymi szeregami meczą, jakiś bootcamp czy cuś :P?

public static double SumaSzeregu(double x, double eps)
        {
            double suma = 0;
            double silnia = 2;
            double xdontej = x*x;
            double wyraz = 0;
            int i = 2;
            do
            {
                wyraz = xdontej / silnia * Math.Log(i);
                suma += wyraz;
                xdontej *= x;               
                silnia *= ++i;                
            }
            while (Math.Abs(wyraz) > eps);

            return suma;
        } 

Jednak jest problem. Prof. wymaga obliczania kolejnych wyrazów przez wzór: Wn = r, gdzie moje r = x ln(n)/ (n *ln(n-1))
Ale u mnie pierwszy wyraz jest równy 0 więc każdy następny mnożony przez 0 to też 0 :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1