Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод итераций 
:(
    Опции темы
polina123
Дата 30.11.2015, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
disputant
Дата 30.11.2015, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 28.11.2011

Репутация: нет
Всего: 3



Корней точно нет: нет, видно и по графику

PM MAIL   Вверх
polina123
Дата 30.11.2015, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.11.2015

Репутация: нет
Всего: нет



а как мне с программой быть?
PM MAIL   Вверх
Курсант
Дата 30.11.2015, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 21.2.2009
Где: Балашиха или Воро неж

Репутация: 1
Всего: 4



Думаю, Вам нужно на заданном интервале вычислить значения функции. Если в одной точке функция положительна, а в соседней отрицательна, то между этими точками как минимум один корень уравнения. Если знак функции не меняется на всем интервале, значит корней нет. Нужно сделать то же самое, что Вы сделали вручную, но только программно, и с шагом не 1, а 0.00001, как задано.

Это сообщение отредактировал(а) Курсант - 30.11.2015, 19:37
PM ICQ Skype   Вверх
math64
Дата 1.12.2015, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 12
Всего: 72



Если функция - полином (как в Вашем случае) для определения числа корней на интервале [a,b] нужно вычислить значения функции и её производных на концах интервала (a и b). Есть теорема определяющая число корней на интервале по знакам полинома и его производных на концах (формулировку не помню, посмотрите в учебник и найдите в интернете).
Теорема Штурма

Это сообщение отредактировал(а) math64 - 1.12.2015, 11:26
PM   Вверх
xvr
Дата 1.12.2015, 14:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Кстати, сама функция у вас запрограмированна неправильно (зачем вы сделали pow(10,z) ?)
И метод итераций тоже итерирует не совсем то, что надо  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1189 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.