پارسی‌لاتک

لاتک LATEX => گرافیک، جدول و شکل => نويسنده: MhzTpr در جولای 16, 2014, 03:31:31 بعد از ظهر

عنوان: رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 16, 2014, 03:31:31 بعد از ظهر
با سلام و خسته نباشید
چطور میتونم تو زی پرشین توابع ریاضی رو رسم کنم؟ دستورش چیه؟ به عنوان مثال میخوام نمودار تابع لگاریتمی نمایی و مثلثاتی و ... رو رسم کنم
ممنون میشم راهنماییم کنید یا یه نمونه ازش برام بفرستید
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: هادی صفی‌اقدم در جولای 16, 2014, 03:47:09 بعد از ظهر
سلام
از بسته‌های زیر می‌تونین استفاده کنین.
tikz
pstricks
xy-pic
راهنماشونو ببینین، نمونه‌هایی با شکل خروجی و کد ورودی گذاشته که با کپی اونا می‌تونین ازشون استفاده کنین.
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 16, 2014, 05:41:32 بعد از ظهر
با سلام
من خودم برای رسم نمودار از بسته pgfplot استفاده می کنم. واقعا بسته بسیار بسیار قدرتمندی است.
یک نمونه مثال اتچ کردم.
یک عالمه مثال نیز در لینک زیر وجود دارد.

http://pgfplots.sourceforge.net/gallery.html
(http://pgfplots.sourceforge.net/gallery.html)
برای رسم توابع توسط pgfplot شما چندین راه دارید.
الف) رسم توابع با استفاده از فرمول آن ها مثل فایل اتچ شده.
ب) رسم نمودار با استفاده از داده‌ها. داده‌های عددی شما می تواند در یک فایل مجزا با پسوند txt یا csv یا dat و یا ... باشد و یا در داخل خود فایل tex اصلی باشد. نمونه ای از این حالت را در مثال اتچ شده به نام LowerBound2 گذاشتم. اگر دقت کنید در این مثال داده های عددی من در یک فایل csv در کنار فایل tex قرار دارد.

در مثال اتچ شده بعدی به نام LowerBound3 من دو نمودار sin‌و log را برای شما کشیدم و ما بین آن ها را نیز پر کردم. اگر به مثال ها کمی دقت کنید می توانید نحوه رسم نمودار ها را پیدا کنید. مثلا در همین مثال LowerBound3 دستورات زیر استفاده شده است.
۱) تعریف یک محیط axis برای ترسیم نمودار.
۲) دستورات

width=15cm, height=11cm,

برای تعریف اندازه نمودار
۳) دستور xlabel و ylabel برای عنوان محور x ها و y ها
۴) domain مشخص کننده دامنه تابع
۵) دستور

xtick={5,70,...,600}

بر چسب اعداد روی محور x . اولین عدد ۵ دومی ۷۰ و همین طور اعداد به فاصله ۶۵ تا از یکدیگر
۶) دستور

samples=300

تعداد نمونه ها برای رسم نمودار هرچه مقدار sample بزرگتر باشد نمودار نرم تر و با کیفیت بالاتری است.
۷) دستور

\addplot

یک نمودار به axis شما اضافه می کند. شما به راحتی می توانید رابطه خود را بر حسب x به عنوان آرگومان این دستور بدهید. مثلا

\addplot{sin(3*x)};

در آخر آن نیز نقطه ویرگول فراموش نشود.
۸)

name path=B و name path=A

به هر نمودار یک نام می دهد. تا بتوانیم در دستور سوم یعنی

\addplot[gray!30] fill between[of=A and B];

وسط دو نمودار را با رنگ gray!30 پر کنیم.
۹) با دستورات xmin و xmax و ymin و ymax می‌توانید محدوده دقیق نمودار را مشخص کنید.

بسته pgfplot غیر از نمودارهای خطی انواع مختلف نمودار را پیشتیبانی می کند. نمونه ای از نمودار از نوع bar در مثال SumXY قرار داده شده است.
باتشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 16, 2014, 06:07:33 بعد از ظهر
با سلام
در ادامه پست قبلی. اکثر نرم افزار ها مثل MATLAB و ... فایل های داده حاصل از شبیه سازی را می توانند به فرمت های دیگر نیز ذخیره کنند. برای مثال من خروجی یکی از شبیه سازی هایم را در MATLAB به صورت فایل csv در آوردم. و نموداری که می خواستم را با همین بسته pfdplot رسم کردم.
مثال اتچ شده برخی از امکانات این بسته را به خوبی نشان می‌دهد.
فقط دقت کنید که من در کنار فایل های این مثال یک فایل به نام gototheinfty.csv وجود دارد که داده های اصلی است. اگر دقت کنید در سطر اول من سطرها را به نام a , b , c‌گذاشتم. منظور این است که اگر شما خروجی فایل csv گرفتید حتما سطر اولش را این گونه نام گذاری کنید تا بتوانید درون فایل tex بفهمانید که کدام ستون را بر حسب کدام ترسیم کند.

\addplot[mark=o,mark size=2] table [x=a, y=b, col sep=comma] {gototheinfty.csv}node[pos=.5,pin=-75:{Line Slope = 0.9999}] {};

پیرو نکات قبلی واضح است که برای رسم تابع شما نیاز دارید که بسته هایی را وارد کنید.

\usepackage{tikz}
\usetikzlibrary{intersections}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot,fillbetween}

\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{1mm}

فقط در وارد کردن این بسته ها بسته preview برای حذف حاشیه سفید رنگ صفحه وارد شده است.
اگر می خواهید نمودار را در یک فایل نوشتاری استفاده کنید، من این کار را می کنم  که ابتدا آن را به صورت جداگانه تولید کنید مثل مثال های نمونه سپس فایل pdf‌ خروجی را به صورت یک عکس با دستور includegraphics وارد نوشتار اصلی بکنید.

نکته: برای یادگیری بسته pgfplot خواندن راهنمای بسته، مثال های مختلفی که در لینک های یاد شده قرار دارد، خواندن مثال هایی که در این دو پست اتچ شد، می‌تواند مفید باشد.

باتشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 12:00:33 قبل از ظهر
با سلام و خسته نباشید
ضمن تشکر از توضیحات و وقت بسیاری که گذاشتید
آقای دیانت چرا وقتی میخوام تغییراتی تو نمودار بدم اعمال نمیشه و وقتی اجرا میکنم فایل پی دی افش بدون تغییر میمونه؟؟
با تشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 20, 2014, 12:10:19 قبل از ظهر
با سلام
احتمال داره فایلتون خطا داره، میشه فایل مورد نظر را که تغییر داده اید ارسال کنید؟
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 12:49:16 قبل از ظهر
نقل قول از: ابوالفضل دیانت در جولای 20, 2014, 12:10:19 قبل از ظهر
با سلام
احتمال داره فایلتون خطا داره، میشه فایل مورد نظر را که تغییر داده اید ارسال کنید؟
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 20, 2014, 01:03:12 قبل از ظهر
با سلام
خطای فایل شما این است که تابع log را اشتباه می زنید.

log(x)

در صورتی که درستش این است که مثلا اگر می خواهید لگاریتم در مبنای ۱۰ را بکشید این طوری تابع را وارد کنید.

log10(x)

پس دستور رسم لگاریتم در مبنای ۱۰ به صورت زیر است.

\addplot[name path=B,dashed,,samples=300] {log10(x)};

برای آشنایی با انواع توابع pgf مثل sin ، cos و log10 و ... از پیوند زیر راهنمای pgf را دانلود کنید و صفحه ۹۳۵ بخش 2-90 را مشاهده کنید.
راهنمای pgf (http://mirrors.ctan.org/graphics/pgf/base/doc/pgfmanual.pdf)
باتشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 01:13:00 قبل از ظهر
خیلی ممنون اما بازم هم تغییر ایجاد نشد. مثال های داخل سایتی که معرفی کردین و همچنین  فایل document شما رو هم pdf شو نشون نمیده موقع اجرا صفحه  pdfخاکستری میاد. من حتی بسته هایی هم که تو پیرو راهنمایی تون اشاره کردین هم وارد کردم بازم نشد....
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: هادی صفی‌اقدم در جولای 20, 2014, 01:15:25 قبل از ظهر
آقای دیانت؟ من از این مورد استفاده نکرده‌ام و بلد نیستم. ولی از فایل‌شون معلومه که intersections رو نداره مثل اینکه. درسته؟
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 20, 2014, 01:18:25 قبل از ظهر
با سلام
نه ظاهرا دارند چون در ابتدای فایل نوشتند

\usepackage{tikz}
\usetikzlibrary{intersections}

یعنی کتابخانه مورد نظر را فراخوانی کرده اند، و در ضمن برای هر نمودار یک نام path مشخص کرده اند. مثلا:

name path=B

من فایلشان را که کامپایل کردم غیر از مشکل log مشکل دیگری نداشت.
باتشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 01:31:38 قبل از ظهر
اگر دقت کرده باشید من اسم محور ها هم (که جمله بودن) عوض کردم بازم تغییر ایجا نمیشه
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 20, 2014, 01:40:58 قبل از ظهر
با سلام
برای من درست است.
مشکل  این است که ظاهرا شما از 2.8 MikTex استفاده می کنید. در ضمن بسته pgf و pgfplot شما خیلی خیلی قدیمی است. بسته های شما برای سال ۲۰۰۸ است.
باید بسته ها را حتما حتما بروز کنید، وگرنه همین طور خطا می گیرد، چون موارد استفاده شده در بسته های قدیمی وجود نداشته ظاهرا.
خروجی برای خودم را اتچ کردم.
پیشنهاد: از TexLive 2014 به جای miktex استفاده کنید. و حتما حتما هر چند مدت یکبار بسته ها بروز کنید.
برای نحوه نصب و دانلود TexLive 2014 به انجمن TexLive در همین تالار مراجعه کنید و چند پست اول را مشاهده کنید.
باتشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 01:52:40 قبل از ظهر
بله درسته از MikTex 2.8 استفاده میکنم، به احتمال قوی شما درست میگید باید به روز رسانی بشه.
بسیار ممنونم جناب دیانت از راهنمایی مفیدتون و همچنین از وقتی که گذاشتید
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 03:03:14 بعد از ظهر
با سلام
چرا وقتی ضابطه تابع رو عوض میکنم نمودار تغییر نمیکن؟. مثلا به جای (f(x تو خط 11 میذارم x^2+1 تغییری تو نمودار ایجاد نمیشه. مشکل کجاست؟؟
با تشکر
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: هادی صفی‌اقدم در جولای 20, 2014, 03:14:46 بعد از ظهر
نقل قول از: mhztpr در جولای 20, 2014, 03:03:14 بعد از ظهر
با سلام
چرا وقتی ضابطه تابع رو عوض میکنم نمودار تغییر نمیکن؟. مثلا به جای (f(x تو خط 11 میذارم x^2+1 تغییری تو نمودار ایجاد نمیشه. مشکل کجاست؟؟
با تشکر
سلام
ربطی به اینا نداره. یعنی مشکل از اینا عمیق‌تر هست. بسته رسم شکل شما اون فایله رو نداره. یعنی قدیمی هست. همانطور که آقای دیانت گفتن، باید تک‌لایو جدید نصب کنین.
عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: ابوالفضل دیانت در جولای 20, 2014, 05:22:13 بعد از ظهر
با سلام
دلیل عدم تغییر در نمودار این است که شما دارید فقط title نمودار را عوض می کنید. ضرایب نمودار

\psPolynomial[coeff=6 3 -1,linecolor=black]{-2}{5}

ضرایب نمودار را coeff دارد تعیین می کند نه تابع f(x) در خط ۱۱. خط

\rput[lb](4,4){\textcolor{black}{$f(x)$}}

فقط یک text برای نمودار می گذارد.
برای مثال برای تابع

f(x) = 9 + 3x-5x^2

باید بنویسید:

\psPolynomial[coeff=9 3 -5,linecolor=black]{-2}{4}


نکته بسیار مهم: البته همان طور که آقای صفی اقدم گفتند مشکل بروزنبودن بسته ها واقعا جدی است و بعید است بتوانید کار خود را با موفقیت به پیش ببرید. حتما Miktex را پاک کنید و TexLive 2014 را نصب و بروز کنید.
باتشکر

عنوان: پاسخ : رسم نمودار توابع
رسال شده توسط: MhzTpr در جولای 20, 2014, 11:47:30 بعد از ظهر
با سلام
بله صحیح گفتین ضرایب رو تغییر دادم درست شد خیلی ممنونم