Выпуск № 1362 от 29.07.2009, 14:35
Администратор рассылки: Dr_Andrew, Модератор
В рассылке: подписчиков - 637, экспертов - 157
В номере: вопросов - 1, ответов - 3
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170749: Осенью сдаём курсовой проект. В июле получил задание, а посмотреть решил только сейчас, и ужаснулся. Задание с комплексными числами. Знаний по этой теме ноль, проходить будем только в сентябре. А курсовой уже к тому времени должен быть готов. Д...
Вопрос № 170749:
Осенью сдаём курсовой проект. В июле получил задание, а посмотреть решил только сейчас, и ужаснулся. Задание с комплексными числами. Знаний по этой теме ноль, проходить будем только в сентябре. А курсовой уже к тому времени должен быть готов. Для начала хотелось бы понять матчасть, то есть что именно тут от меня хотят. Сможет ли кто нибудь помочь разобраться. Задание такое:
----- Good judgement comes from experience, and experience comes from bad judgement.
Ответ отправил: Ross, Практикант
Ответ отправлен: 24.07.2009, 15:55
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 252567
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает _Ayl_, Студент :
Здравствуйте, Андрей Владимирович Маракулин.
Ну, для начала матчасть по комплексным числам. Вот информация по комплексным числам на Википедии Если рассказывать кратко, то комплексные числа есть расширение вещественных путем введения числа √(-1), обозначаемого i. Любое комплексное число может быть представлено в виде
z=a+bi, где a и b - вещественные числа. Обычные вещественные числа могут быть записаны в виде z=a+0*i, т.е. вещественные числа являются частью комплексных.
Далее определяем операции над ними: Пусть: z1=a1+b1i z2=a2+b2i
Тогда: z = a+bi = z1 + z2 ⇔ {a = a1 + a2; b = b1+b2} z = a+bi = z1 * z2 ⇔ {a = a1*a2 - b1*b2; b = a1*b2+a2*b1}
Более сложные операции (возведение в степень, вычисление корня n-ой степени и т.д.) лучше выполнять не в алгебраической нотации, а, например, в тригонометрической.
Любое комплексное число может быть представлено в тригонометрической форме: z = r * (Cosφ + i*Sinφ),
где r - модуль комплексного числа, а φ - аргумент. Данные величины определяются по алгебраической записи следующим образом:
r = √(a2+b2) tgφ = b/a при a≠0; φ = pi/2 при a=0 и b>0; φ = 3*pi/2 (или -pi/2) при a=0 и b<0
При такой записи комплексных чисел вычисления степеней и корней производятся очень просто согласно формулам Муавра: zn = rn * (Cos(n*`
6;)+i*Sin(n*φ)) z1/n = r1/n * (Cos((φ+2*pi*k)/n)+i*Sin((φ+2*pi*k)/n)), где k = 0, 1, ..., n-1
Следствие из основной теоремы алгебры утверждает, что любой многочлен степени n с действительными коэффициентами имеет ровно n комплексных корней (возможно,
кратных).
В вашем проекте вам требуется определить все эти корни.
size_t pow=input<size_t>("Введите степень полинома:"); polynom f(pow+1);
// Вводим коэффицие
нты do { std::stringstream str; str<<"Введите коэффициент при степени "<<pow<<":"; f[pow]=input<value_type>(str.str()); } while (pow--);
// Ищет корень // p - полином // first - первое приближение // eps - погрешность value_type find_root(const polynom& p,const value_type& first,double eps) { value_type result; // Производная polynom d=polynom::diff(p); value_type z=first; while(true) { // Считаем значение производной value_type dz=d(z); // Проверяем деление на 0 if(dz!=static_cast<value_type>(0)) { // Считаем следующее значение result=z-p(z)/dz; // Проверяем погрешность if(abs(result-z)<=eps)break; z=result; } else { throw std::runtime_error("Деление на ноль. Производная равна нулю."); } } return result; }
// Функция для ввода с подсказкой template<class
T> T input(std::string message) { using std::cin; using std::cout; using std::numeric_limits; using std::streamsize;
Введите степень полинома:4 Введите коэффициент при степени 4:(-1,-5) Введите коэффициент при степени 3:(2,9) Введите коэффициент при степени 2:2 Введите коэффициент при степени 1:-8 Введите коэффициент при степени
0:(8,-1) Исходный полином: (-1,-5)*Z^4+(2,9)*Z^3+(2,0)*Z^2+(-8,0)*Z^1+(8,-1) Начальное приближение:1 Погрешность:0.00001 Найден корень:(0.797467,0.380048)
Ответ отправил: Micren, Практикант
Ответ отправлен: 24.07.2009, 22:08
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 252583
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.