Вверх ↑
Этот топик читают: Гость
Ответов: 327
Рейтинг: 5
#1: 2013-04-24 05:42:21 ЛС | профиль | цитата
y=2x^3+15x^2+24x+3 на отрезке [2;3]

не получается вообще разложить ее так чтобы потом еще и собрать правильно для вычислений
y'=6x^2+30x+24 (получаем квадратное уравнение, решаемое через дискриминант)
вот схема на решение такого уравнения
code_30870.txt
потом проверяем принадлежит ли значение x1,x2 [2;3] (в этом варианте не принадлежит)
ну и дальше
y(2)=...
y(3)=...

на клочке бумаги без ошибок посчитаю среди ночи , но не могу разбить ф-ию для дальнейшего счета, выручайте
хотя бы помогите y=2x^3+15x^2+24x+3 -> y'=6x^2+30x+24

------------ Дoбавленo в 05.42:
на всякий случай...
(x^n)'=nx^(n-1)
x'=1
c'=0
карма: 0

0
файлы: 1code_30870.txt [1.7KB] [129]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-04-24 06:07:08 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-05 07:26:07
карма: 0

0
Ответов: 327
Рейтинг: 5
#3: 2013-04-24 08:20:44 ЛС | профиль | цитата
24x->24*1, я заменю, не вопрос, проблемы с "2x^3+15x^2"
это:
1.нужно вытащить все что до икса, умножить на знаки расположенные между "^" и +(или -)
2.соединить полученное число с "х^"
3.вычесть 1 из знаков расположенных между "^" и +(или -)
4.соединить полученные результаты пунктов 2 и 3.

и так дважды.
как вот это в схеме сделать не понимаю

[flood]вроде правильно все написал[/flood]
------------ Дoбавленo в 08.20:
вру... "24x->24*1" нет идей как осуществить, еще число без "х" отбросить нужно
карма: 0

0
Ответов: 5446
Рейтинг: 323
#4: 2013-04-24 09:52:53 ЛС | профиль | цитата
knoot0279, хорошо бы ещё понять, чего требуется-то. Для разложения (факторизации) многочлена дифференцировать не нужно.
карма: 1

0
Ответов: 327
Рейтинг: 5
#5: 2013-04-24 10:03:47 ЛС | профиль | цитата
iarspider писал(а):

ну это алгебра... "наибольшее и наименьшее значение функции на отрезке" если быть точнее

как решить на бумаге я прекрасно понимаю, но как это забить в схему, вот моя проблема...(y=2x^3+15x^2+24x+3 на отрезке [2;3])
карма: 0

0
Ответов: 5446
Рейтинг: 323
#6: 2013-04-24 11:16:46 ЛС | профиль | цитата
knoot0279, очень хорошо. Вопрос номер два: мы ведём разговор о конкретной функции, только о полиномиальных функциях (т.е. без синусов-косинусов), или о произвольных?

В принципе, если в выражении нет скобок (т.е. функция вида y = a_0 + a_1*x + a_2*x^2 + ... + a_n*x^n, с явно проставленными операторами умножения), то алгоритм дифференцирования будет примерно такой:

0. Убираем из строки все пробелы
1. Заменяем везде "-" на "+-"
2. Разбиваем по "+" - получаем набор подстрок вида "a_i*x^i"
3. Каждую подстроку разбиваем по "*", правую часть дополнительно по "^"; получаем три подподстроки - "a_i", "x", "i". Если в подстроке "*" не встретилась - выбрасываем, если есть "*" но нет "^" - считаем i = 1.
4. Теперь применяем правило (x^n)' = n*x^(n-1): a_i умножаем на i (обозначим b_j), а i уменьшаем на 1 (обозначим j). Если новое i == 0, то в выходную строку пишем просто b_j, иначе b_j * x^j.
5. Результат приводим в порядок: заменяем "+-" на "-"

карма: 1

0
Ответов: 8927
Рейтинг: 823
#7: 2013-04-24 15:30:23 ЛС | профиль | цитата
knoot0279 писал(а):
y=2x^3+15x^2+24x+3 на отрезке [2;3])

Первая производная:
у'=6*x^2+30*x+24
Приравниваем её к "0"
y'= 0= x^2 + 5*x + 4
Находим точки экстремумов:
x1 = -4; x2 = -1
На отрезке [2;3] экстремумов нет, максимальные и минимальные значения только на начальной и конечной точках отрезка.
x = 2; y = 127
x = 3; y = 264
МатПарсер кроме вычисления значений (две последние строчки) Вам не поможет, не умеет он дифференцировать и решать уравнения.
На форуме выкладывал схему "решателя" уравнений, но он ищет только одно значение.
------------ Дoбавленo в 15.30:
x1 = 3*Cos(ArcCtg(- 11*√38/152)/3) - 2.5
x2 = - 3*Sin(ArcTg(11*√38/152)/3 + pi/3) - 2.5
x3 = 3*Sin(ArcTg(11*√38/152)/3) - 2.5
или в числах:
x1 = -0.1364199290...
x2 = -5.281826577...
x3 = -2.081753493...
карма: 19

0
Ответов: 327
Рейтинг: 5
#8: 2013-04-25 02:59:53 ЛС | профиль | цитата
iarspider писал(а):
Заменяем везде "-" на "+-"

вот за это спасибо, оценил...
вот что в итоге вышло...
code_30872.txt
карма: 0

0
файлы: 1code_30872.txt [12.1KB] [158]
Ответов: 16884
Рейтинг: 1239
#9: 2013-04-25 09:18:45 ЛС | профиль | цитата
knoot0279 писал(а):
вот что в итоге вышло...
Эффект такой, что вроде в итоге оплачивается размер программы.

А вот что должно было выйти и всего на 19-ти компонентах вместо твоих 133-х : (хотя можно было и совсем коротко)

Add(Edit,6662796,455,38)
{
Left=260
Top=5
Text="2;3"
Alignment=2
}
Add(MainForm,10715029,210,147)
{
Height=130
BorderStyle=1
Position=1
}
Add(Edit,608451,280,217)
{
Left=25
Top=5
Width=160
Text="2x^3+15x^2+24x+3"
}
Add(Replace,7521685,280,266)
{
SubStr="x"
DestStr="*%1"
link(onReplace,14532254:doEvent1,[])
link(Str,608451:Text,[])
}
Add(Button,8660459,210,266)
{
Left=320
Top=5
Width=60
Caption="Посчитать"
link(onClick,7521685:doReplace,[])
}
Add(Label,2424607,266,147)
{
Left=5
Top=5
Width=20
Height=20
Font=[MS Sans Serif,10,1,0,1]
Caption="y="
}
Add(Label,14722588,308,147)
{
Left=185
Top=5
Width=81
Height=17
Font=[MS Sans Serif,8,1,0,1]
Transparent=0
Caption="на отрезке ["
}
Add(Label,13666624,350,147)
{
Left=310
Top=5
Width=7
Height=17
Font=[MS Sans Serif,8,1,0,1]
Caption="]"
}
Add(StyleXP,16269506,210,217)
{
}
Add(StrPart,834924,455,77)
{
Char=";"
DirectEvent=0
Point(Left)
Point(Right)
link(onSplit,2896240:doWork1,[])
link(onPart,2896240:doWork2,[])
link(Str,6662796:Text,[])
}
Add(Memo,1814233,518,266)
{
Top=27
Width=384
Height=65
Align=4
Font=[MS Sans Serif,10,1,0,1]
}
Add(MathParse,3134999,399,266)
{
DataCount=1
MathStr=""
Point(doMathStr)
link(onResult,11158118:doString,[])
link(X1,12944616:Var1,[(405,202)])
}
Add(Hub,14532254,343,266)
{
OutCount=3
link(onEvent1,2028924:doMask,[(376,272)(376,230)])
link(onEvent2,3134999:doMathStr,[])
link(onEvent3,834924:doSplit,[(375,286)(375,308)(189,308)(189,83)])
}
Add(FormatStr,11158118,462,266)
{
DataCount=3
Mask="y(%2) = %1 = %3"
link(onFString,1814233:doAdd,[])
link(Str1,2028924:FString,[(468,257)(461,257)])
link(Str2,12944616:Var3,[(475,202)])
}
Add(GetIndexData,15189299,455,140)
{
link(onIndex,5018701:doEvent1,[])
link(Data1,834924:Left,[])
link(Data2,834924:Right,[])
}
Add(ChanelToIndex,2896240,511,77)
{
link(onIndex,15189299:doIndex,[(550,83)(550,34)(439,34)(439,146)])
}
Add(GetDataEx,12944616,455,197)
{
link(Data,15189299:Var,[])
}
Add(FormatStr,2028924,455,217)
{
Mask=""
Point(doMask)
Point(FString)
link(Str1,12944616:Var2,[])
}
Add(Hub,5018701,504,140)
{
link(onEvent1,2028924:doString,[(547,146)(547,190)(445,190)(445,223)])
link(onEvent2,3134999:doCalc,[(535,153)(535,179)(388,179)(388,272)])
}


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5446
Рейтинг: 323
#10: 2013-04-25 11:36:56 ЛС | профиль | цитата
Tad, а где у тебя дифференцирование?
knoot0279, я бы за такую схему (даже если она корректно работает) поставил бы "2 с натяжкой" ((c) не моё). Так как я добрый пока что, то возьмусь за причёсывание этого экзерсиса. По мере причёсывания буду расписывать, что надо исправить.
------------ Дoбавленo в 11.36:
1. Всегда подписывай LineBtrak-и, причём словами (мой опыт говорит, что в противном случае ты через три дня забудешь, что у тебя и как).
2. Не очень понятны телодвижения с заменой "+" на "+()" и обратно.
3. Что-то мне кажется, что цикл с удалением пустых строк - лишний. Пустые строки можно "в процессе" отлавливать
4. Второй цикл - это выкидывание пробелов? Что-то очень странное...
5. Зачем столько таймеров?
------------ Дoбавленo в 11.36:
Да, я отчаялся причесать схему, походу проще заново нарисовать.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#11: 2013-04-25 13:20:11 ЛС | профиль | цитата
iarspider писал(а):
а где у тебя дифференцирование?
А оно тут надо ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 9906
Рейтинг: 351
#12: 2013-04-25 13:22:39 ЛС | профиль | цитата
iarspider писал(а):
Да, я отчаялся причесать схему, походу проще заново нарисовать.
хех
А я всегда так делаю.

А вот как объяснить народу, что такая схема есть неуважение к тому, кто тебе помогает -- так и не придумал за много лет...
Хоть кол на голове теши
карма: 9

0
Ответов: 5446
Рейтинг: 323
#13: 2013-04-25 13:26:09 ЛС | профиль | цитата
Tad, если я правильно понят ТС-а, то ему нужно решение не для одной конкретной функции (y=2x^3+15x^2+24x+3), а для произвольной полиномиальной.
карма: 1

0
Ответов: 327
Рейтинг: 5
#14: 2013-04-26 15:02:03 ЛС | профиль | цитата
iarspider писал(а):
Не очень понятны телодвижения с заменой "+" на "+()" и обратно.

тут да, согласен... потом уже подумал что явно лишнее
а в остальном... что знаю то и применяю
Tad писал(а):
А вот что должно было выйти и всего на 19-ти компонентах вместо твоих 133-х

ну, честно признаюсь, не додумался бы...
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#15: 2013-04-26 16:40:56 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-05 07:26:08
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)