PDA

View Full Version : حل معادله ی درجه ی 3 در C++ (فوریه کمک کنید)



amir_khafan
سه شنبه 08 فروردین 1385, 02:33 صبح
ببینید من باید به زبان C++ برنامه ای بنویسم که معادله ی دزجه ی سوم :

X^3+2X^2+3X+1=0

رو حل کنه .
(نکته : ^=توان)

نکته:
ببینید من برنامه ای نمیخوام که هر معادله ی درجه ی سومی رو که بهش بدم حل کنه ( چون ما هنوز ارایه ها رو نخوندیم) یعنی نمیخوام اینجوری باشه که مثلا اول برنامه از کاربر 4 تا عدد درخواست کنه که به ترتیب اون عددها رو ضریب x^3 و x^2 و x و عدد, قرار بده بلکه فقط میخوام یک معادله ی درجه ی سوم ثابت مثل X^3+2X^2+3X+1=0 رو حل کنه.

ممنون میشم کمک کنی:قلب: د.

amir_khafan
سه شنبه 08 فروردین 1385, 14:02 عصر
بابا, جون من به این تاپیک هم نگاه کنید (مدیرها کجان پس؟) .

Junior
سه شنبه 08 فروردین 1385, 15:11 عصر
برای حل معادلات درجه 3 بهترین روش، روش نیوتن رافسونه. توضیحاتش رو تو کتابای محاسبات عددی پیدا کنید.

Junior
سه شنبه 08 فروردین 1385, 15:11 عصر
برای حل معادلات درجه 3 بهترین روش، روش نیوتن رافسونه. توضیحاتش رو تو کتابای محاسبات عددی پیدا کنید.

Junior
سه شنبه 08 فروردین 1385, 15:11 عصر
برای حل معادلات درجه 3 بهترین روش، روش نیوتن رافسونه. توضیحاتش رو تو کتابای محاسبات عددی پیدا کنید.

amir_khafan
سه شنبه 08 فروردین 1385, 16:31 عصر
دوست عزیز من روش نیوتن رو بلدم(تقسیم دو جمله ای هم میشه).

من مشکلم تو نوشتن الگوریتم هست.

این برنامه خیلی سادست (فکر نمیکنم 10 خط بیشتر بشه) یک نفر نیست که بنویسه؟

amir_khafan
سه شنبه 08 فروردین 1385, 16:31 عصر
دوست عزیز من روش نیوتن رو بلدم(تقسیم دو جمله ای هم میشه).

من مشکلم تو نوشتن الگوریتم هست.

این برنامه خیلی سادست (فکر نمیکنم 10 خط بیشتر بشه) یک نفر نیست که بنویسه؟

seyedof
سه شنبه 08 فروردین 1385, 22:13 عصر
سلام
نه کسی نمینویسه چون حل تمرین درسی در اینجا ممنوعه. ضمنا خیلی آسونه.
ممنون علی

amir_khafan
چهارشنبه 09 فروردین 1385, 03:47 صبح
عزیز من چه ربطی به حل تمرین داره .

خب بلد نیستی بگو نیستم دیگه چرا اینجوری میگی.

seyedof
چهارشنبه 09 فروردین 1385, 11:39 صبح
عزیز من چه ربطی به حل تمرین داره .

خب بلد نیستی بگو نیستم دیگه چرا اینجوری میگی.

سلام
مطمئن باش بلدم و از شونصد راه هم میشه سوال به این راحتی رو حل کرد! ولیکن به نظر میرسه که تمرین درسی باشه. ضمنا لطفا درست صحبت کن وگرنه مجبورم پستت رو پاک کنم.
ممنون علی

Mohammad D
چهارشنبه 09 فروردین 1385, 12:23 عصر
اگه راهنمایی میخوای من خودم در خدمتتم

اما دوست عزیز مطمئن باشین استفاده از برنامه دیگران شما رو برنامه نویس نمیکنه
تنها سودی که واسه شما داره یه نمرست که چقد خوب میشه از دسترنج خودتون اونو بگیرین

amir_khafan
چهارشنبه 09 فروردین 1385, 14:38 عصر
ای خدا , بابا چرا شماها اینجوری میکنین :گریه: , خب نمیخواد برنامه بنویسید فقط روش کار رو بگید .یعنی بگید من چجوری باید این معادله رو حل کنم .کدنویسی که کار سختی نیست مهم فهمیدن اون چیزیه که باید انجام بدی.

میشه حداقل روش حل یک معادله ی درجه ی 3 رو بگید .
شرمنده اگه بی احترامی نسبت به کسی شده .:خجالت:

ممنون میشم کمک کنید.

seyedof
چهارشنبه 09 فروردین 1385, 18:06 عصر
ای خدا , بابا چرا شماها اینجوری میکنین :گریه: , خب نمیخواد برنامه بنویسید فقط روش کار رو بگید .یعنی بگید من چجوری باید این معادله رو حل کنم .کدنویسی که کار سختی نیست مهم فهمیدن اون چیزیه که باید انجام بدی.

میشه حداقل روش حل یک معادله ی درجه ی 3 رو بگید .
شرمنده اگه بی احترامی نسبت به کسی شده .:خجالت:

ممنون میشم کمک کنید.

سلام
معادله درجه 3 روش حل کلی داره. یعنی تشکیل دلتا و غیره که توی نظام قدیم توی کتاب جبر سال سوم دبیرستان رشته ریاضی بود و توی کتابهای ریاضی الان هم باید باشه.
روشهای عددی هم که آسونه توی کتابهای محاسبات عددی هست. روش تنصیف مثلا باید خوب جواب بده.
ممنون علی

Amir Oveisi
پنج شنبه 10 فروردین 1385, 01:02 صبح
خوب میتونی بشینی فکر کنی خودت یه روش ابتکاری واسه این کار کشف کنی !!! :لبخند:
زیاد سخت نگیر :متفکر: ( شما دانشگاه ارومیه هستی؟ :متفکر: )

Amateurism programmer
دوشنبه 21 فروردین 1385, 22:39 عصر
فکر میکنم مناسبترین روش جهت پروژه همون روش نصف کردن یا نیوتن باشه

amir_khafan
چهارشنبه 23 فروردین 1385, 08:00 صبح
حیف که هیچ کدوم از بچه های دانشگاه هم نتونست با روش نیوتن حل کنه. :اشتباه: :افسرده: :عصبانی++:

talchak
شنبه 26 فروردین 1385, 12:36 عصر
با سلام
چون معادله صعودی است پس دقیقا یک ریشه دارد
چون مقدار تابع در نقطه صفر مثبت است پس ریشه یک عدد منفی است
حالا تنها کار این است که x ای را که منفی است و مقدار تابع در آن هم منفی است بدست آورده مثلا 10- ، حالا کار تمام است از الگوریتم نصف کردن استفاده کن در یک حلقه قرار بده و کار را در مرحله بعدی وقتی ادامه بده که در هر مرحله دو مقدار ایکسی که بدست می آید ضربشان منفی باشد که این یعنی ریشه بین این دو مقدار است.
:متفکر:

darkwoldemot@gmail.com
یک شنبه 24 اردیبهشت 1396, 22:19 عصر
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;

int main()
{
int a, b, c, d, D, M, D1, D2, X, X1, X2, i;
i == i;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
D2 = ((2*b*b*b)-(9*a*b*c)+ (27*a*a*d));
D = (18*a*b*c*d)-(4*b*b*b*d)+(b*b*c*c)-(4*a*c*c*c)-(27*a*a*d*d);
D1 = (b*b)- (3*a*c);
M = pow(((D2)+ sqrt((D2*D2)-(4*D*D*D)))/2,0.333333);
X = (-1/(3*a)) * (b + M + (D/M));
X1 = (-1/(3*a)) * (b +(M*(-1 + i*sqrt(3))/2 ) + (D/(M*(-1 + i*sqrt(3))/2 )));
X2 = (-1/(3*a)) * (b +(M*(-1 - i*sqrt(3))/2 ) + (D/(M*(-1 - i*sqrt(3))/2 )));
if (D==0)
{
cout << "\n"<< X;
}
if (D != 0)
{
cout << "\n" << X;
cout << "\n" << X1;
cout << "\n" << X2;
}
return 0;
}

دوستان این برنامه حل معادله درجه 3 ای هستش ک نوشتم ولی کار نمیکنه یکی یه کمکی بکنه بگه ایرادش کجاست

Ananas
چهارشنبه 27 اردیبهشت 1396, 00:59 صبح
#include <iostream>
#include <cmath>
#include <conio.h>
using namespace std;

int main()
{
int a, b, c, d, D, M, D1, D2, X, X1, X2, i;
i == i;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
D2 = ((2*b*b*b)-(9*a*b*c)+ (27*a*a*d));
D = (18*a*b*c*d)-(4*b*b*b*d)+(b*b*c*c)-(4*a*c*c*c)-(27*a*a*d*d);
D1 = (b*b)- (3*a*c);
M = pow(((D2)+ sqrt((D2*D2)-(4*D*D*D)))/2,0.333333);
X = (-1/(3*a)) * (b + M + (D/M));
X1 = (-1/(3*a)) * (b +(M*(-1 + i*sqrt(3))/2 ) + (D/(M*(-1 + i*sqrt(3))/2 )));
X2 = (-1/(3*a)) * (b +(M*(-1 - i*sqrt(3))/2 ) + (D/(M*(-1 - i*sqrt(3))/2 )));
if (D==0)
{
cout << "\n"<< X;
}
if (D != 0)
{
cout << "\n" << X;
cout << "\n" << X1;
cout << "\n" << X2;
}
return 0;
}

دوستان این برنامه حل معادله درجه 3 ای هستش ک نوشتم ولی کار نمیکنه یکی یه کمکی بکنه بگه ایرادش کجاست
از نوع اعشاری استفاده کنید برای متغیر ها نه نوع صحیح. float یا double کنید متغیرهارو و اینکه اعدادی هم که مینویسید به شکل اعشاری بنویسید. مثلا به جای 3 بنویسید 3.0