PDA

View Full Version : سوال: چگونه ریشه چندم هر عنصر یک آرایه را محاسبه می شود؟



stubborn2
شنبه 05 اسفند 1391, 02:03 صبح
سلام دوستان
من می خام بدونم چطوری می تونم ریشه چندم هر عنصر یک آرایه را محاسبه کنم؟
ممنون

Ananas
شنبه 05 اسفند 1391, 14:23 عصر
سلام.

ریشه چندم
این یعنی چی؟ ریشه ی آرایه؟(دقیقا یعنی چی؟) ریشه ی عدد؟ (عدد اول و این صحبتها یا رادیکال و جذر و ...؟) ریشه ی معادله؟ (درجه ی nام؟)

armintirand
شنبه 05 اسفند 1391, 18:22 عصر
احتمالا این سوال دوستمون یک پروژه میباشد که از قرار دادن سوال و پاسخ پروژه در اینجا معذوریم
ولی برای راهنمایی میگم سوال شما دوقسمت داره که قسمت اول مدیریت اعداد در آرایه است که زیاد سخت نیست ولی قسمت دوم هم قسمت ریاضی میشه که اگه منظور شما رادیکال گرفتن از عدد اون هم در ریشه n باشه باید اول روش ریاضی اونو بدونید بعد دوتا قسمت رو تکمیل کنین.برای اینکار هم اگه جذر اعشاری منظور هست که خدا کمکتون کنه ولی اگه جذر صحیح میخواهین پیدا کنین چیزی نیست. بازم اگه مشکلی بود در خدیمتیم

Ananas
شنبه 05 اسفند 1391, 21:53 عصر
برای رادیکال کافیه عددتون رو به توان (1 تقسیم بر فورجه) برسونید. مثلا برای رادیکال با فورجه 2 شما می تونید از تابع Power استفاده کنید و عدد رو به توان 1/2 که میشه 0.5 برسونید و مثلا برای فورجه ی 3 باید به توان 1/3 برسونید و برای فورجه ی 4 باید به توان 1/4 یا 0.25 برسونیم و الی آخر. البته برای فورجه ی 2 که همون جذر هست استثناعا از تابع Sqrt استفاده کنید سرعتش بیشتره.

stubborn2
شنبه 05 اسفند 1391, 22:36 عصر
سلام دوستان. ممنون از کمکاتون. راستش من یک سری محاسبات خرکاری دارم. خاستم کد بنویسم براش. برای مثال می خام از 20 تا عدد اعشاری که در یک آرایه 20 عضوی قرار دارند ریشه 20ام بگیرم. دستور pow جواب نمیده. از فرمول exp(b*log a). نیز استفاده کردم که خروجی به هم 1 میده!!!!نمی فهمم مشکل کجاست. خاستم بدونم راهی برای محاسبه توان اعشاری اعداد اعشاری هست یا نه!!
شاید بگید که بهتره از MATLAB استفاده کنم. چون این محاسبات برای پایان نامم و چون قبلا c++ کار کردم، از C++ استفاده کنم. حال بگویید من چه کنم؟؟!!!
ممنونم ازتون.

Ananas
شنبه 05 اسفند 1391, 23:06 عصر
دستور pow جواب نمیده.
چرا؟ مشکل کجاست؟
نوع اعشاری رو long double بگیرید که بیشترین دقت رو داشته باشه. اعدادی که به توان میرسونید تو چه رنجی هستن؟

stubborn2
شنبه 05 اسفند 1391, 23:10 عصر
می گفت نمی تونه convert کنه. اعدادم حداکثر با ۸ رقم اعشار،
امتحان می کنم تا ۲۰ دقیقه دیگه جوابشو می نویسم. ممنونم

Ananas
شنبه 05 اسفند 1391, 23:28 عصر
منظورم دقت اعشارشون نبود منظورم اینه که وقتی به نماد علمی نوشته میشن چه توان 10 ای دارن؟

stubborn2
شنبه 05 اسفند 1391, 23:32 عصر
داداش این error میده:
Floating point: Square root of negative number.
من همه اعدادم مثبته!!!

stubborn2
شنبه 05 اسفند 1391, 23:34 عصر
حداکثر ۸ تا

stubborn2
شنبه 05 اسفند 1391, 23:38 عصر
الان یکاریش کردم. اون error رو نداد. ولی عوضش جواب ۱ داد!!!

Ananas
شنبه 05 اسفند 1391, 23:43 عصر
اون عددی که این ارور رو سر اون میده و همچنین اون توانی که بهش میگی رو دقیقا بنویس برامون.

stubborn2
شنبه 05 اسفند 1391, 23:47 عصر
۳.۷۵ به توان 1/3

stubborn2
شنبه 05 اسفند 1391, 23:55 عصر
دوست عزیز احتمال می دم کجا مشکل داره ولی درک نمی کنم چرا؟ می شه کد بنویسم ببینی کجاش مشکله؟

Ananas
یک شنبه 06 اسفند 1391, 00:10 صبح
وقتی با اعداد اعشاری کار میکنید برای نوشتن صریح عدد همیشه از علامت ممیز استفاده کنید و اگر نوع float هست حتما از f در آخر عدد و اگر نوع long double هست حتما از L در آخر عدد استفاده کنید. برای مثال 1/3 میشه 0 ولی 1.0/3.0 تقریبا میشه 0.3333333333333 . پس به نظرم دلیل خطا این بوده.

stubborn2
یک شنبه 06 اسفند 1391, 00:19 صبح
داداش مشکل حل نشد ولی یکسری عدد داد که درست نبودن. فکر کنم مشکل از الگوریتم باشه. چکش می کنم. دمت گرم خیلی
ممنونم ازت، اگه باز مشکل خوردم اینجا می نویسم
بازم ممنون

stubborn2
یک شنبه 06 اسفند 1391, 00:39 صبح
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main ()
{
char a;
long double n;
long double o;
long double a1[]={0.2857,0.3333,0.4}, a2[]={0.3333,0.4,0.5}, a3[]={0.4,0.5,0.6667}, a4[] = {0.5, 0.6667, 1.0l}, a0[]={0.6667,1.0l,2.0l}, a5[]={0.5,1.0l,1.5}, a6[]= {1.0l,1.5,2.0l}, a7[]={1.5,2.0l,2.5}, a8[]={2.0l,2.5,3.0l}, a9[]={2.5,3.0l,3.5};
cout << " Enter Number of datas:";
cin >> n;
long double f[] = {1.0l,1.0l,1.0l}, r[3][3];
o = 1 / n;
for (int w =0; w<3; w++){
long double M[] = {1.0l,1.0l,1.0l};
long double m[] = {1,1,1};
for (int j = 0; j < n; j++)
{
cin >> a;
switch (a){
case '1':m[0]=a1[0], m[1] = a1[1]; m[2] = a1[2];
break;
case '2':m[0]=a2[0], m[1] = a2[1], m[2]=a3[2];
break;
case '3':m[0]= a3[0], m[1]= a3[1], m[2]= a3[2];
break;
case '4':m[0]=a4[0], m[1]=a4[1], m[2]=a4[2];
break;
case '5':m[0]=a5[0], m[1]=a5[1], m[2]=a5[2];
break;
case '0':m[0]= a0[0], m[1]= a0[1], m[2]= a0[2];
break;
case '6': m[0]= a6[0],m[1]= a6[1], m[2]= a6[2];
break;
case '7': m[0]= a7[0], m[1]= a7[1], m[2]= a7[2];
break;
case '8': m[0]= a8[0], m[1]= a8[1], m[2]= a8[2];
break;
case '9': m[0]= a9[0], m[1]= a9[1], m[2]= a9[2];
break;
}
M[0] = m[0]*M[0];
M[1] = m[1]*M[1];
M[2] = m[2]*M[2];
}
for (int k = 0; k<3; k++)
{
f[k] = f[k]*M[k];
}
r[w][0] = pow(f[0],o);
r[w][1] = pow(f[1],o);
r[w][2] = pow(f[2],o);
}
for (int s = 0; s<3; s++)
{
for (int q =0; q<3; q++)
{
cout << r[s][q] << "\t" ;
}
cout << "\n" ;
}
}

stubborn2
یک شنبه 06 اسفند 1391, 00:42 صبح
داداش اینم از کد.
الان به توان ۲ می رسونه در هر حلقه اصلی

stubborn2
یک شنبه 06 اسفند 1391, 00:52 صبح
داداش مشکل زمانیه که حلقه اصلی میره تو دوره دوم!!!
اعداد بدست آمده در مرحله اول رو با اعداد مرحله دوم ضرب میشن!!!
منظورم آرایه r که در پایان هر دور محاسبه میشه!!

stubborn2
یک شنبه 06 اسفند 1391, 00:56 صبح
داداش حل شد!!!
واقعا دمت گرم. خیلی حال داری. حالا این شد تازه قسمت اول کد!!!
واقعا ممنونم

stubborn2
یک شنبه 06 اسفند 1391, 00:57 صبح
راستی اگه نظری در مورد کد داشتی ممنون می شم بهم بگی

Ananas
یک شنبه 06 اسفند 1391, 01:06 صبح
من متوجه نشدم کد شما کلا قراره چه عملیاتی رو انجام بده و خروجی چی باید باشه که نیست.

stubborn2
یک شنبه 06 اسفند 1391, 01:17 صبح
من می خوام که ۱ شاخص رو با ۳ شاخص مقایسه کنم توسط پرسشنامه. جواب پرسشنامه ها از ۱ تا ۹ می باشد که هر کدام بیانگر یک عدد فازی مثلثی است (۳ تا عدد دارند، آرایه های a). تعداد پرسشنامه ها نا محدوده (n). بعدش این پرسشنامه ها باید ادغام شن با روش میانگین هندسی ( تک تک اعداد باید در هم ضرب شن بدش ریشه n ام رو باید حساب کرد). در آخر هر کدام باید در سطرهای مختلف آرایه s نوشته شن!!
حالا یک سوال: چطوری میشه یک آرایه تعریف کرد که اندازه آن رو از ورودی تعیین کرد؟

Ananas
یک شنبه 06 اسفند 1391, 01:27 صبح
آوووووو! مسئله جالب شد (ولی حیف که خوابم میاد فردا باید برم سرکار انشاالله بعدا سر میزنم.)
اما تو کد بعد از اعداد long double بجای l کوچک از L بزرگ استفاده کنی بهتر دیده میشه و همچنی برای توان هم از تابع powl برای اعداد long double استفاده کنید. یک اشکالی به ذهنم میاد که الان دقیقا نمیدونم چطور هست باید امتحان شه اونم اینکه ممکنه اعداد موقع ضرب شدن خیلی بزرگ بشن و بعد دوباره موقع گرفتن ریشه خیلی عدد توان کوچیک باشه که هر دوی اینها از یک حدی به بعد کیفیت و دقت محاسبه رو زیر سوال میبرن. ممکنه ضربهای خیلی بزرگ جوابشون غلط بدست بیاد.
بای

stubborn2
یک شنبه 06 اسفند 1391, 01:30 صبح
ممنون ازت داداش. بیدارت نگه داشتم، شرمنده. خیلی حال دادی.
بای

armintirand
یک شنبه 06 اسفند 1391, 13:40 عصر
من می خوام که ۱ شاخص رو با ۳ شاخص مقایسه کنم توسط پرسشنامه. جواب پرسشنامه ها از ۱ تا ۹ می باشد که هر کدام بیانگر یک عدد فازی مثلثی است (۳ تا عدد دارند، آرایه های a). تعداد پرسشنامه ها نا محدوده (n). بعدش این پرسشنامه ها باید ادغام شن با روش میانگین هندسی ( تک تک اعداد باید در هم ضرب شن بدش ریشه n ام رو باید حساب کرد). در آخر هر کدام باید در سطرهای مختلف آرایه s نوشته شن!!
حالا یک سوال: چطوری میشه یک آرایه تعریف کرد که اندازه آن رو از ورودی تعیین کرد؟

خب دوست عزیز شما که دیگه استادی اینم که سوال سختی نیست آرایه ای که مقدارشو از ورودی بگیره میشه همون لیست پیوندی و البته در مورد کلاس vector سی پلاس پلاس هم بررسی کن شاید بدردت خورد.

stubborn2
یک شنبه 06 اسفند 1391, 16:18 عصر
خب دوست عزیز شما که دیگه استادی اینم که سوال سختی نیست آرایه ای که مقدارشو از ورودی بگیره میشه همون لیست پیوندی و البته در مورد کلاس vector سی پلاس پلاس هم بررسی کن شاید بدردت خورد.
سلام داداش. مرسی از لطفت. ما که تازه کاریم استاد افردای مثل شما هستن نه ما. من یک در این راهنمایی که کردی فقط با کلاس تا حدی آشنایی دارم ما بقی نمی دونم چی هستن!!! این لیست پیوندی چیه؟ چطوری تعریف میشه؟ کارکردش عینه آرایست؟