Айтишники всея dota2ru помогите

avatar CortesGames

648

19

CortesGames

Пользователь

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

CortesGames

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

Я искренне на знаю в какой раздел кидать эту тему поетому прошу модераторов не удалять мою тему а переместить в нужный раздел. Спасибо!

Вообщем пишу на С программу вычисляющую Ряд Тейлора для уравнения y=e^(2*x-1.5)-ln(x+2) xє(1;2) для 31 значения х, и что-то  ̶н̶е̶ ̶о̶ч̶е̶н̶ь̶  совсем не выходит. При компиляции раньше выводилось бесконечное количество значений "Y=0.00000000", потом я немного исправил ошибки в коде и теперь он не выводит совсем ничего :/ Кто сможет помочь буду очень признательным.

Вот весь код:

Спойлер:

#include

#include

#include

#include

#define N 31

int main()

{

    float x,y,z,i,j;

    printf("Type x like (i,j):");

    scanf("%f,%f",&i,&j);

    z=fabs(j-i);

    while(x<=z){

    x=0;

    x+=z/N;

    y=exp(2*x-1.5)-log(x+2);

    printf("\nY=%f",&y);

    }

}

дикий волк

Пользователь

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

дикий волк

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

Ошибка в строчке поидее x+= z/N

N не инициализировано.

CortesGames

Пользователь

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

CortesGames

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

дикий волк сказал(а):
Ошибка в строчке поидее x+= z/N

N не инициализировано.
Нажмите, чтобы раскрыть...

Я его через дефайн задал

Reverie

Участник команды сайта

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

Reverie

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

мб присвоение иксу нуля перед циклом задать

А вообще такие темки кажись в таверну кидают, @дикий волк

Thonks

Пользователь

Регистрация: 06.06.2013

Сообщения: 2859

Рейтинг: 521

Thonks

Регистрация: 06.06.2013

Сообщения: 2859

Рейтинг: 521

Саммон @nubideus

Turmarin

Пользователь

Регистрация: 25.10.2014

Сообщения: 211

Рейтинг: 84

Turmarin

Регистрация: 25.10.2014

Сообщения: 211

Рейтинг: 84

таки да, поставить x=0 перед циклом, а не внутри него. иначе смысла нету, у тебя ничего меняться в цикле не будет, поскольку икс каждый раз обнуляется

CortesGames

Пользователь

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

CortesGames

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

Turmarin сказал(а):
таки да, поставить x=0 перед циклом, а не внутри него. иначе смысла нету, у тебя ничего меняться в цикле не будет, поскольку икс каждый раз обнуляется
Нажмите, чтобы раскрыть...

Поставил, всё тоже самое.

HE_Toponimik

Пользователь

Регистрация: 23.04.2013

Сообщения: 5989

Рейтинг: 5679

HE_Toponimik

Регистрация: 23.04.2013

Сообщения: 5989

Рейтинг: 5679

Reverie сказал(а):
А вообще такие темки кажись в таверну кидают, @дикий волк
Нажмите, чтобы раскрыть...

Если хочешь чтобы что-то произошло, пиши мне.

дикий волк

Пользователь

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

дикий волк

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

CortesGames сказал(а):
Поставил, всё тоже самое.
Нажмите, чтобы раскрыть...

А чего у тебя main ничего не возвращает? Пропиши в конце return 0;

Еще между %f℅f убери запятую

дикий волк

Пользователь

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

дикий волк

Регистрация: 27.06.2016

Сообщения: 3067

Рейтинг: 3633

Нарушения: 109

Reverie сказал(а):
мб присвоение иксу нуля перед циклом задать

А вообще такие темки кажись в таверну кидают, @дикий волк
Нажмите, чтобы раскрыть...

HE_Toponimik сказал(а):
Если хочешь чтобы что-то произошло, пиши мне.
Нажмите, чтобы раскрыть...

Поясните за таверну, с чего такие темки должны быть в таверне?

r3hub

Пользователь

Регистрация: 25.12.2015

Сообщения: 232

Рейтинг: 152

r3hub

Регистрация: 25.12.2015

Сообщения: 232

Рейтинг: 152

дикий волк сказал(а):
Поясните за таверну, с чего такие темки должны быть в таверне?
Нажмите, чтобы раскрыть...

А она же щас прям в таверне

Reverie

Участник команды сайта

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

Reverie

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

HE_Toponimik сказал(а):
Если хочешь чтобы что-то произошло, пиши мне.
Нажмите, чтобы раскрыть...

Не собираюсь шквариться соре, лучше уж волку.

legion.

Пользователь

Регистрация: 20.07.2016

Сообщения: 134

Рейтинг: 59

legion.

Регистрация: 20.07.2016

Сообщения: 134

Рейтинг: 59

CortesGames сказал(а):
Поставил, всё тоже самое.
Нажмите, чтобы раскрыть...

А дебаггером пользоваться уже не модно?

Reverie

Участник команды сайта

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

Reverie

Регистрация: 11.07.2013

Сообщения: 12941

Рейтинг: 25522

дикий волк сказал(а):
Поясните за таверну, с чего такие темки должны быть в таверне?
Нажмите, чтобы раскрыть...

Программные коды никак не касаются раздела о технике :\

Kael - The Invoker

Пользователь

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

Kael - The Invoker

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

CortesGames сказал(а):
Я искренне на знаю в какой раздел кидать эту тему поетому прошу модераторов не удалять мою тему а переместить в нужный раздел. Спасибо!

Вообщем пишу на С программу вычисляющую Ряд Тейлора для уравнения y=e^(2*x-1.5)-ln(x+2) xє(1;2) для 31 значения х, и что-то  ̶н̶е̶ ̶о̶ч̶е̶н̶ь̶  совсем не выходит. При компиляции раньше выводилось бесконечное количество значений "Y=0.00000000", потом я немного исправил ошибки в коде и теперь он не выводит совсем ничего :/ Кто сможет помочь буду очень признательным.

Вот весь код:

Спойлер:

#include

#include

#include

#include

#define N 31

int main()

{

    float x,y,z,i,j;

    printf("Type x like (i,j):");

    scanf("%f,%f",&i,&j);

    z=fabs(j-i);

    while(x<=z){

    x=0;

    x+=z/N;

    y=exp(2*x-1.5)-log(x+2);

    printf("\nY=%f",&y);

    }

}

Нажмите, чтобы раскрыть...

Не вижу разложения в ряд тейлора, суть задания была именно в том, чтобы через рекурсию вычислять значения с заданной точностью?

В таком случае тут ничего не правильно.

CortesGames

Пользователь

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

CortesGames

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

Kael - The Invoker сказал(а):
Не вижу разложения в ряд тейлора, суть задания была именно в том, чтобы через рекурсию вычислять значения с заданной точностью?

В таком случае тут ничего не правильно.
Нажмите, чтобы раскрыть...

Значит я неправильно выразился, мне нужно сделать программу для вычисления значений y для разных значений  х используя 3 оператора цикла. И значение х рассмотреть в N точках. И после этого вывести на друк значение у и х в столбик используя возможности оператора printf. Не исключено что я наворотил фигню в моей програме просто я не понял сначала как это делать.

Если можешь помочь, буду благодарен.

Kael - The Invoker

Пользователь

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

Kael - The Invoker

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

CortesGames сказал(а):
Значит я неправильно выразился, мне нужно сделать программу для вычисления значений y для разных значений  х используя 3 оператора цикла. И значение х рассмотреть в N точках. И после этого вывести на друк значение у и х в столбик используя возможности оператора printf. Не исключено что я наворотил фигню в моей програме просто я не понял сначала как это делать.

Если можешь помочь, буду благодарен.
Нажмите, чтобы раскрыть...

Прежде чем программу писать, нужно взять ручку с бумагой и подумать.

1) разложи в ряд тейлора данную тебе функцию, в точке x.

2) Вырази общий член этого ряда - т.е. тот который определяется отличие следующего члена от предыдущего, насколько я помню делается это так y_n/y_(n-1)=a_n

Где a - общий член, y_n - нное слагаемое в ряду тейлора.

теперь у тебя есть выражение y_n=a*у_(n-1)

3)как найти значение функции с заданной точностью?

очень просто:

пока у_n>заданной точности

{

у_n=y_(n-1)*a

sum=sum+y_n

n++

}

Этот цикл вычислит тебе значение функции с заданной точностью в одной точке. Чтобы было 31 точек, придется считать все 31 раз, соостветсвенно появится внешний цикл со счетчиком.

for i:=1 to 31 do

{

x=N+i*(N-K)/31 // к начальной точке N прибавляем 1/31 длинны промежутка в котором производятся вычисления промежуток -(N;K)

пока у_n>заданной точности

{

у_n=y_(n-1)*a

sum=sum+y_n

n++

}

}

Тебе нужно только явно вычислить, ручками на бумажке a - оно будет зависить от x.

Сдвигаешь х - меняется общий член. Надеюсь идея тебе понятна, с синтаксисом си вообще не знаком.

Kael - The Invoker

Пользователь

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

Kael - The Invoker

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

если надо будет, могу пример с косинусом каким-нибудь привести.

CortesGames

Пользователь

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

CortesGames

Регистрация: 27.06.2014

Сообщения: 37

Рейтинг: 9

Kael - The Invoker сказал(а):
если надо будет, могу пример с косинусом каким-нибудь привести.
Нажмите, чтобы раскрыть...

А ты сам как знаком з языками програмирования? Или может работаешь в этой области? Просто интересуюсь.

Kael - The Invoker

Пользователь

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

Kael - The Invoker

Регистрация: 04.06.2015

Сообщения: 2405

Рейтинг: 4025

CortesGames сказал(а):
А ты сам как знаком з языками програмирования? Или может работаешь в этой области? Просто интересуюсь.
Нажмите, чтобы раскрыть...

Я больше математик. Работаю инженером-программистом. Но уже давно ни на чем не прогал.