![]() |
|
Модераторы: bsa |
![]()
|
|
| polina123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.11.2015 Репутация: нет Всего: нет |
Здравствуйте. Дали вот такое задание для курсовой работы:
Для заданной функции Y = f(x) на интервале [a,b]: 1) рассчитать n значений функции с равномерным шагом изменения аргумента x , значения аргумента и функции представить в виде таблицы; 2) отделить корни уравнения f(x) = 0 аналитически, т.е. определить количество корней; 3) уточнить корни уравнения f(x) = 0 методом итераций с точностью 0.00001 Исходные данные: , где Y=x^4-13x+36 n = 40, a = - 4 , b = 4 Я решила это уравнение вручную. И получилось так, что корней нет. И надо сделать программу визуально. И как-то программа должна все просчитывать, но не знаю как( Я сделала форму(которая на фотографии) и мне нужен код только для кнопки button, чтобы просто выводил, то, что я решила вручную. Помогите мне пожалуйста разобраться. Я написала код в консольном виде. Но работает он как-то не очень. #include "stdafx.h" #include <iostream> #include <iomanip> #include <conio.h> #include <math.h> using namespace std; double f1(double c) { double z=c*c*c*c-13*c+36; return(pow(10, z)); } int main() { int n=0; double a,b,E,x,z,g; cout<<"vvedite a"<<endl; cin>>a; cout<<"vvedite b"<<endl; cin>>b; cout<<"vvedite E"<<endl; cin>>E; x=(a+b)/2; do { z=x; x=f1(x); n++; } while ((fabs(x-z))>=E); cout<<endl; cout<<"x="<<x<<endl; cout<<"n="<<n<<endl; getch(); system("pause"); return 0; } Вот решение вручную. Обозначим: f(x)=x4 - 13x + 36. Найдем производную: f'(x)=4x3 - 13 Составим таблицу для нахождения корней уравнения: -4 -1 0 4 + + + + f(-4)=(-4)4 - 13*(-4) + 36=256+52+36=344>0 f(-1)= (-1)4 - 13*(-1) + 36=1+13+36=40>0 f(0)=0-0+36=36>0 f(4)=44 - 13*4 + 36=256-52+36=240>0 Из таблицы видно, что все знаки положительные. Следовательно корней нет. Это сообщение отредактировал(а) polina123 - 30.11.2015, 17:59 Присоединённый файл ( Кол-во скачиваний: 4 )
mF2cYdf6Fxw.jpg 33,75 Kb |
|||
|
||||
| disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: нет Всего: 3 |
||||
|
||||
| polina123 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 30.11.2015 Репутация: нет Всего: нет |
а как мне с программой быть?
|
|||
|
||||
| Курсант |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 338 Регистрация: 21.2.2009 Где: Балашиха или Воро неж Репутация: 1 Всего: 4 |
Думаю, Вам нужно на заданном интервале вычислить значения функции. Если в одной точке функция положительна, а в соседней отрицательна, то между этими точками как минимум один корень уравнения. Если знак функции не меняется на всем интервале, значит корней нет. Нужно сделать то же самое, что Вы сделали вручную, но только программно, и с шагом не 1, а 0.00001, как задано.
Это сообщение отредактировал(а) Курсант - 30.11.2015, 19:37 |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
Если функция - полином (как в Вашем случае) для определения числа корней на интервале [a,b] нужно вычислить значения функции и её производных на концах интервала (a и b). Есть теорема определяющая число корней на интервале по знакам полинома и его производных на концах (формулировку не помню, посмотрите в учебник и найдите в интернете).
Теорема Штурма Это сообщение отредактировал(а) math64 - 1.12.2015, 11:26 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Кстати, сама функция у вас запрограмированна неправильно (зачем вы сделали pow(10,z) ?)
И метод итераций тоже итерирует не совсем то, что надо |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |