سوالات و مشکلات مدل سازی و کدنویسی در نرم افزار متلب - Matlab - تخصصی مهندسی شیمی

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
1287986292_37 (1).jpg

با سلام خدمت دوستان و مهندسین شیمی

لطفا سوالات مشکلات و مسائل مهندسی شیمی خود را که در زمینه نرم افزار متب میباشد در این تاپیک مطرح کنید.
 
آخرین ویرایش:

JU JU

کاربر ممتاز
سوالات و مشکلات در نرم افزار متلب - Matlab

سوالات و مشکلات در نرم افزار متلب - Matlab

سلام بچه‌ها
میشه یکی هم اینو ببینه و بگه مشکلش کجاشه ؟

حامد این همونیه که برات فرستادم
با برنامه متلب نوشتم
این درست شه تا نصف برنامه رو رفتم

سوال: میشه یه پروژه نوشت برا طراحی برج تبخیر کننده‌های forward feeding که در اون دست کاربر رو باز گزاشت و تعداد مراحل رو خوده کاربر تعیین کنه و بقیه ماجرا رو خود برنامه بره جلو ؟

یا باید حتمن محدود کرد کاربر رو و بین 3 تا 5 مرحله گذاشت تعداد مراحل رو ( خوب توی صنعت فقط همین مقدار هست )
میشه کمکم کنین :gol:
 

پیوست ها

  • test.rar
    523 بایت · بازدیدها: 0

پیرجو

مدیر ارشد
سلام بچه‌ها
میشه یکی هم اینو ببینه و بگه مشکلش کجاشه ؟

حامد این همونیه که برات فرستادم
با برنامه متلب نوشتم
این درست شه تا نصف برنامه رو رفتم

سوال: میشه یه پروژه نوشت برا طراحی برج تبخیر کننده‌های forward feeding که در اون دست کاربر رو باز گزاشت و تعداد مراحل رو خوده کاربر تعیین کنه و بقیه ماجرا رو خود برنامه بره جلو ؟

یا باید حتمن محدود کرد کاربر رو و بین 3 تا 5 مرحله گذاشت تعداد مراحل رو ( خوب توی صنعت فقط همین مقدار هست )
میشه کمکم کنین :gol:

این که بیشتر شبیه داستان نویسی بود تا برنامه نویسی...:D
برای یک مرحله ای میشه از این استفاده کرد.
کد:
%function mcdist

load mcsim001

L=length(J);
mF=mF(J);
mD=mD(J,:)-ones(L,1)*[10 5 40 25];
mX=mX(J,:);
%inter=60;
inter=300;
%inter=120;
dynsim=10;
dynsim2=100;

t=0:inter:(L-1)*inter;
t1=zeros(2*L-1,1);
d1=zeros(2*L-1,4);
f1=zeros(2*L-1,1);
x1=zeros(2*L-1,5);
t1(2:2:end-1)=t(2:end);
t1(3:2:end)=t(2:end);
d1(1:2:end,:)=mD;
d1(2:2:end-1,:)=d1(1:2:end-2,:);
f1(1:2:end)=mF;
f1(2:2:end-1)=mF(1:end-1);
% f1(1:end)=mF(4);
% d1=mD(4*ones(2*L-1,1),:);
DistData=[t1 d1];

%mX: P2 F100 T201 F200 F3
x1(1:2:end,:)=mX(:,1:5);
x1(2:2:end-1,:)=x1(1:2:end-2,:);
P2Set=[t1 x1(:,1)-56.4245];
 

JU JU

کاربر ممتاز
این که بیشتر شبیه داستان نویسی بود تا برنامه نویسی...:D
برای یک مرحله ای میشه از این استفاده کرد.]

میشه یه توضیح راجع یه اینا بدی ؟ من تا حالا همچین شکلی ندیده بودم
خوب آره
تمامی جزئیات رو از اول نوشتم

ممنون میشم بهم بگی اینا چی بودن

این رو با برنامه مطلب نوشتن :surprised:
 

t.salehi

کاربر ممتاز
میشه یه توضیح راجع یه اینا بدی ؟ من تا حالا همچین شکلی ندیده بودم
خوب آره
تمامی جزئیات رو از اول نوشتم

ممنون میشم بهم بگی اینا چی بودن

این رو با برنامه مطلب نوشتن :surprised:
خوب باید تمامی متغیر هاتو اول از همه تعریف کنی بعد بری سراغ نوشتن برنامه
 

JU JU

کاربر ممتاز
خوب باید تمامی متغیر هاتو اول از همه تعریف کنی بعد بری سراغ نوشتن برنامه

متغیرها تعریف بشه ؟ من تا الان تو برنامه matlab همچین کاری نکردم، توی cpp همیشه اینکار رو می‌کردم
حالا میشه یکی برام تمامی نوشته‌ها ( کدهایی که پیرجو گذاشته ) توضیح بده از اول ؟ پیرجویی بیااااااااا

اینکه در مورد خط به خطش توضیح برام بدی و اینکه این گزینه load چیه ؟ error میده :D
 
آخرین ویرایش:

JU JU

کاربر ممتاز
با دستور syms میشه متغیرها رو تعریف کرد
جالب بود برم
تا الان ندیده بودم

البته توی دستور case باید 'متغیر' جوری که نوشتم باشه :d
 

negin1313

New member
سلام

چندتا برنامه هست نمیدونم از کجا شروع کنم اگه کمکم کنید ممنون میشم:w05:
یکیش اینه

برنامه ای بنویسید که ضرایب a,b,c معادله درجه دوم ax^2+bx+c=0 را از ورودی بگیرد و جواب های این معادله )x1,x2) را به همراه مشخص کردن جواب ریشه ها (ریشه برابر.دو ریشه حقیقی.دو ریشه مختلط) با استفاده از dispدر خروجی چاپ کند
 

حــامد

مدیر بازنشسته
سلام

چندتا برنامه هست نمیدونم از کجا شروع کنم اگه کمکم کنید ممنون میشم:w05:
یکیش اینه

برنامه ای بنویسید که ضرایب a,b,c معادله درجه دوم ax^2+bx+c=0 را از ورودی بگیرد و جواب های این معادله )x1,x2) را به همراه مشخص کردن جواب ریشه ها (ریشه برابر.دو ریشه حقیقی.دو ریشه مختلط) با استفاده از dispدر خروجی چاپ کند


چند جمله ای
p(x)=x^3-2X-5
نظر بگیرید برای ایجاد چند جمله ای کافیست ضرایب آن را به صورت مرتب برحسب توانهای بزرگ به کوچک از چپ به راست در یک بردار سطری وارد نمایید
کد:
p(x)=1x^3-0x^2-2X-5
p=[1 0 -2 -5];
متغیر p در حقیقت یک بردار سطری معمولیست
پیدا کردن ریشه های چند جمله ای:
تابع roots تمامی ریشه های حقیقی و مختلط یک چند جمله ای را پیدا میکند:
کد:
[LEFT]r= roots(p)
r=
2.0946
-1.0473 + 1.11359i
-1.0473 - 1.11359i[/LEFT]
 
آخرین ویرایش:

JU JU

کاربر ممتاز
سلام

چندتا برنامه هست نمیدونم از کجا شروع کنم اگه کمکم کنید ممنون میشم:w05:
یکیش اینه

برنامه ای بنویسید که ضرایب a,b,c معادله درجه دوم ax^2+bx+c=0 را از ورودی بگیرد و جواب های این معادله )x1,x2) را به همراه مشخص کردن جواب ریشه ها (ریشه برابر.دو ریشه حقیقی.دو ریشه مختلط) با استفاده از dispدر خروجی چاپ کند

روشی که حامد گفتن روش خیلی قشنگ و زیبایی هستش و بر اساس یه اصل کار کرده، اصل مارتیس
همونطور که از اسم matlab بر میاد میشه لابراتور ماتریس، بازی با ماتریس و حامد با زیبایی با ماتریس‌ها بازی می‌کنه و به نتیجه میرسه

در روش زیر یه روش ساده با استفاده از دستور‌های شرطی رفته جلو

برنامه رو میزارم به شرطی که برین بخونینش یادش بگیرین، خواستین توضیحاتش رو هم میزاریم ولی چیزی که نداره :D

( این برنامه رو همونطور که گفتین، تنها برای معادله درجه دوم نوشتم، همین، برای نوشتن درجات بیشتر باید با استفاده از ماتریس‌ها، روش تکرار حلقه برای کردن داده‌ها در ماتریس و در آخر از دستور root برای یافتن ریشه :D )
موفق باشین


کمی هم انشا نویسی برا شما کردم توی برنامه، ولی خوب نیازی به انشا نویسی و ... نداره، در حد توضیحات برنامه هستش

کد:
disp('aX^2 + bX + C = D');

a=input('insert a:  ');
b=input('insert b:  ');
c=input('insert c:  ');
D=input('insert D:  ');

delta=(b^2) - (4*a*(c-D));

if delta > 0
    set_1=((-b)+sqrt(delta))/(2*a);
    set_2=((-b)-sqrt(delta))/(2*a);
    
    disp('2 rishe haqiqi vojud dard')
    disp([set_1 set_2])
    
else if delta == 0
        set=(-b)/(2*a);
        
        disp('1 rishe moza''af vojud darad')
        disp(set)
        
    else
        disp ('moadele rishe haqiqi nadara ')
        
    end
end
 

حــامد

مدیر بازنشسته
سلام
سوالم در رابطه با مطلبه

می‌خوام ورودی رو n بدم، بعد با دستور for این مقدار n رو تکرار کنه و در حال تکرار، یه محاسبته انجام بده، سپس تمامی مقدارهای محاسبه شده رو به صورت یه ماتریس سطری یا ستونی بنویسه

اینجوری نوشتم جواب نمیده:
مثالی ساده میزنم که کاربردش برا همه مثال‌ها باشه دیگه

کد:
[LEFT]n=3;
for i=1:n
u=input('insert U: ');
disp([u']
end[/LEFT]


وقتی برنامه اجرا میشه​


1- به صورت تک تک نشون میده اعداد ورودی رو که من می‌خوام در پایان همش رو با هم نشون بده نه اینکه بعد از وارد کردن هر عدد، مقدارش رو همون موقع نشون بده​



2- حال اگه از قضیه بالایی بگذریم، اگه بعد از اجرای دستور u رو وارد کنیم، تنها مقدار آخر رو نشون میده و ماتریس رو نشون نمی‌ده متاسفانه، برا اینکه یه ماتریس ستونی با 3 سطر نشون بده باید چیکار کنم ؟​


این سوالیه که جاوید در قسمت پرسشها مطرحش کرد
 

حــامد

مدیر بازنشسته
جاوید جان مشکل اینه که شما برای u اندیس گذاری نکردی خوب هر بار که حلقه تکرار میشه u مقدار جدید میگیره دستور disp هم باید بیرون حلقه باشه:

کد:
 [/SIZE][/FONT]
[FONT=Courier New][SIZE=4]for n=1:3[/SIZE][/FONT]
[FONT=Courier New][SIZE=4]u(n)=input('insert U: ');[/SIZE][/FONT]
[FONT=Courier New][SIZE=4]end[/SIZE][/FONT]
[FONT=Courier New][SIZE=4]disp([u])[/SIZE][/FONT]
[FONT=Courier New][SIZE=4]
اینم خروجی:
کد:
 [/SIZE][/FONT]
[FONT=Courier New][SIZE=4]insert U: 1
insert U: 4
insert U: 5
     1     4     5[/SIZE][/FONT]
[FONT=Courier New][SIZE=4]
 

حــامد

مدیر بازنشسته
این سوالو یکی از دوستان تو پیامام گداشته بود

خوب قراره این برنامه رو بنویسم که n,x رو از ورودی بگیره و جواب رو چاپ کنه.
s=1+x/1!+x^2/2!+...+x^n/ni
ni=hamon n factorilre inja nemishod benevisamesh
خودم نوشتم یه چیز عجیبی ولی بهم جواب نمبده اول یه function تعریف کردم این جوری:


کد:
 [LEFT]function
fact=myeq


n=input(
'enter n
fact=1;


for
i=1:1:n


fact=fact*i;
end[/LEFT]
بعد برنامه رو این جوری نوشتم

کد:
x=input('enter x=');
n=input('enter n=');
fact=myeq;
for i=1:1:n
sum=((x^i)/fact);
disp(sum)
end

اما جواب نمیده
البته اینجا یه کم ریخته بهم فرمتش
 

حــامد

مدیر بازنشسته
سلام حامدی، سوالات رو همین‌جا بپرسیم یا جای دیگه ؟
چند جا توی همین تاپیک دیدم دوستان از دستور function استفاده می‌کنن
میشه برام توضیح بدین این دستور به چه جهت کاربرد داره ؟

عزیزم همین جا بپرس
خوب وارد کردن یک دستور و اجرای بلافاصله آن برای نوشتن برنامه هایی که دارای 10 ها یا 100 ها خط دستور میباشند مناسب نیست matlab یک پنجره ویرایش گر متنی با عنوان editor ارائه کرده است که شما میتوانید همه دستورات برنامه خود را در این ویرایشگر متنی وارد و پس ار تکمیل با نام دلخواه ذخیره کرده و با @ و بعد اسم فایل مذکور فراخوانی کنید
 

JU JU

کاربر ممتاز
عزیزم همین جا بپرس
خوب وارد کردن یک دستور و اجرای بلافاصله آن برای نوشتن برنامه هایی که دارای 10 ها یا 100 ها خط دستور میباشند مناسب نیست matlab یک پنجره ویرایش گر متنی با عنوان editor ارائه کرده است که شما میتوانید همه دستورات برنامه خود را در این ویرایشگر متنی وارد و پس ار تکمیل با نام دلخواه ذخیره کرده و با @ و بعد اسم فایل مذکور فراخوانی کنید

حامد خداییش نفهمیدم چی شد ...
خوب من همیشه از editor مطلب استفاده می‌کنم، همون دستور edit، حالا function چیه ؟

دستت درد نکنه
توی کتابش راجع به این موضوع می‌خونم :gol:
 

meytim

متخصص محاسبات عددی و MATLAB
این سوالو یکی از دوستان تو پیامام گداشته بود

خوب قراره این برنامه رو بنویسم که n,x رو از ورودی بگیره و جواب رو چاپ کنه.
s=1+x/1!+x^2/2!+...+x^n/ni
ni=hamon n factorilre inja nemishod benevisamesh
خودم نوشتم یه چیز عجیبی ولی بهم جواب نمبده اول یه function تعریف کردم این جوری:


کد:
 [LEFT]function
fact=myeq


n=input(
'enter n
fact=1;


for
i=1:1:n


fact=fact*i;
end[/LEFT]
بعد برنامه رو این جوری نوشتم

کد:
x=input('enter x=');
n=input('enter n=');
fact=myeq;
for i=1:1:n
sum=((x^i)/fact);
disp(sum)
end

اما جواب نمیده
البته اینجا یه کم ریخته بهم فرمتش

اگر برنامه رو اینجوری بنویسی راحت تره:
کد:
N = input('input N =');
x = input ('input x =');
for n = 1 : N;
s = sum((x^N)/prod(1:n));
end
disp([s])
و خروجی برنامه:
کد:
input N =5
input x =7
  140.0583
ساده‏ترين روشي كه من به ذهنم رسيد اينه:​
کد:
  [COLOR=black][FONT=&quot]x=7, n=5[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]s=1+x.^(1:n)*(1./factorial(1:n)')[/FONT][/COLOR]

اين هم اجراش:​
کد:
  [COLOR=black][FONT=&quot]x =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]     7[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]n =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]     5[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]s =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]  329.7667[/FONT][/COLOR]

  • با توجه به اينكه من همواره با استفاده از input مخالف بوده و هستم، در اولش از input استفاده نكردم؛ شما دلتون خواست بهش اضافه كنيد.

  • جواب حامد درست نيست. از امكانات خاص متلب هم درش استفاده نشده. اگه درستش هم كنيد، چون از حلقه for استفاده شده، سرعتش بايد كمتر باشه.
 

حــامد

مدیر بازنشسته
ساده‏ترين روشي كه من به ذهنم رسيد اينه:​



کد:
  [COLOR=black][FONT=&quot]x=7, n=5[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]s=1+x.^(1:n)*(1./factorial(1:n)')[/FONT][/COLOR]


اين هم اجراش:​

کد:
  [COLOR=black][FONT=&quot]x =[/FONT][/COLOR]
 
  [COLOR=black][FONT=&quot]     7[/FONT][/COLOR]
 
  [COLOR=black][FONT=&quot]n =[/FONT][/COLOR]
 
  [COLOR=black][FONT=&quot]     5[/FONT][/COLOR]
 
  [COLOR=black][FONT=&quot]s =[/FONT][/COLOR]
 
  [COLOR=black][FONT=&quot]  329.7667[/FONT][/COLOR]

  • با توجه به اينكه من همواره با استفاده از input مخالف بوده و هستم، در اولش از input استفاده نكردم؛ شما دلتون خواست بهش اضافه كنيد.
  • جواب حامد درست نيست. از امكانات خاص متلب هم درش استفاده نشده. اگه درستش هم كنيد، چون از حلقه for استفاده شده، سرعتش بايد كمتر باشه.

بله درست میگید من

کد:
N = input('input N =');
کد:
[LEFT]x = input ('input x =');

for n = 1 : N;
[LEFT]s = sum(1+(x^[COLOR=red]N[/COLOR])/prod(1:n));
end
disp([s])[/LEFT]
[/LEFT]


باید بجای N از n استفاده میکردم

ممنون



در نهایت برنامه رو بصورت زیر تصحیح میکنم:

کد:
N = input('input N =');
x = input ('input x =');
for n = 1 : N;
s(n) = (1+(x.^n)./(factorial(n)));
end
m = sum(s(1:n));
disp(m)
و خروجی برنامه:
کد:
input N =5
input x =7
  333.7667
 
آخرین ویرایش:

حــامد

مدیر بازنشسته
اینم شکل دیگه اش هست که از تابع فاکتوریل استفاده نشده
کد:
N = input('input N =');
x = input ('input x =');
for n = 1 : N;
s(n) = (1+(x.^n)./(prod(1:n)));
end
m = sum(s(1:n));
disp(m)
 

meytim

متخصص محاسبات عددی و MATLAB
بله درست میگید من

کد:
N = input('input N =');
کد:
[LEFT]x = input ('input x =');

for n = 1 : N;
[LEFT]s = sum(1+(x^[COLOR=red]N[/COLOR])/prod(1:n));
end
disp([s])[/LEFT]
[/LEFT]
باید بجای N از n استفاده میکردم

ممنون



در نهایت برنامه رو بصورت زیر تصحیح میکنم:

کد:
N = input('input N =');
x = input ('input x =');
for n = 1 : N;
s(n) = (1+(x.^n)./(factorial(n)));
end
m = sum(s(1:n));
disp(m)
و خروجی برنامه:
کد:
input N =5
input x =7
  333.7667

اینم شکل دیگه اش هست که از تابع فاکتوریل استفاده نشده
کد:
N = input('input N =');
x = input ('input x =');
for n = 1 : N;
s(n) = (1+(x.^n)./(prod(1:n)));
end
m = sum(s(1:n));
disp(m)

باز هم اشتباه نوشتي كه حامد جان. اين تستش:
کد:
  [COLOR=black][FONT=&quot]syms [/FONT][/COLOR][COLOR=#a020f0][FONT=&quot]x[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]n=5;[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]s=1+x.^(1:n)*(1./factorial(1:n)')[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]N=5;[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]for[/FONT][/COLOR][COLOR=black][FONT=&quot] n = 1 : N;[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]s(n) = (1+(x.^n)./(factorial(n)));[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]end[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]m1 = sum(s(1:n))[/FONT][/COLOR]
  
  [COLOR=blue][FONT=&quot]for[/FONT][/COLOR][COLOR=black][FONT=&quot] n = 1 : N;[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]s(n) = (1+(x.^n)./(prod(1:n)));[/FONT][/COLOR]
  [COLOR=blue][FONT=&quot]end[/FONT][/COLOR]
  [COLOR=black][FONT=&quot]m2 = sum(s(1:n))[/FONT][/COLOR]

اين هم خروجي متلب:
کد:
  [COLOR=black][FONT=&quot]s =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]1+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]m1 =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]5+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]m2 =[/FONT][/COLOR]
  
  [COLOR=black][FONT=&quot]5+x+1/2*x^2+1/6*x^3+1/24*x^4+1/120*x^5[/FONT][/COLOR]

در ضمن، با توجه به اينكه x و n اسكالر هستند، در برنامه‏هاي شما استفاده از كارگرهاي درايه به درايه (Element by element operators) زائده. برنامه من روي بردار عمل مي‏كنه و لازمه.
 
آخرین ویرایش:

khale rize

New member
سوال

سوال

اگر در آزمايشي غلظت هاي جزء A و B به صورت زير مشخص باشد،برنامه اي بنويسيد كه در آن M و K گزارش شود؟​
RUN 1
CA=1.5 2 2.1 2.17
CB= 5 5 5 5
T=0.1 0.2 0.3 0.4
RUN 2
CA= 4 4 4 4
CB= 1.3 1.35 1.4 1.42
T= 0.1 0.2 0.3 0.4
CB^n * CA^m * k =-dCA/dT=-rA
rA=-rB=-dCB/dT -
 

khale rize

New member
اين جواب رو خودم نوشتم ولي نميدونم درسته يا نه
ca=[1.5 2 2.1 2.17];cb=[5];t=[0.1 0.2 0.3 0.4];cc=[4];cd=[1.3 1.35 1.4 1.42]; %#ok<NBRAK>
for j=1:3
q(j)=(ca(j+1)-ca(j))/(t(j+1)-t(j)); %#ok<SAGROW>
end
y=log(-q);
for i=1:3
d(i)=ca(i+1); %#ok<SAGROW>
end
x=log(d);
r=polyfit(x,y,1);
for h=1:3
u(h)=(cd(h+1)-cd(h))/(t(h+1)-t(h)); %#ok<SAGROW>
end
y2=log(-u);
for z=1:3
p(z)=cd(z+1); %#ok<SAGROW>
end
x2=log(p);
r2=polyfit(x2,y2,1);
k=exp(r(2)-(r2(1)*log(cb)));
 

khale rize

New member
سوال

سوال

شايد بگين جواب سوالم خيلي ساده است ولي خوب چيكارش كنم ERROR ميده!
برنامه اي بنويسيد كه سه عدد را دريافت كند و چاپ كند كه آيا اضلاع مثلث هستند يا خير ؟
لطفا با استفاده از دستورات INPUT و IF-ELSE و DISP آخه نميدونم با دستورهاي ديگه هم ميشه نوشت يا نه!
 

پیرجو

مدیر ارشد


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

توی سه معادله اول، مقادیر V رو که پایین نوشتم قرار میدیم رو توی بالایی ها قرار میدیم
از معادلات زیری ( اون دوتا که S ندارن مقادیر L1 و L2 رو بدست میاریم )
سپس S رو

حال که Lها بدس اومدن می‌تونیم V رو هم بدست بیاریم
حالا من تو این قسمت موندم، چطوری این رو توی برنامه مطلب بنویسم ؟ بشدت مورد نیازمه

لطفن طوری طراحی کنین که برای N مشخص باشه نه این 2تا L و V هاا
ممنونم
منتظرم حامدی

این تموم شه برنامهم تقریبن کامل میشه‌هاا
دستت درد نکنه
سلام، این چیه که گذاشتی؟ محاسبات مربوط به چه چیزی هستش؟ چه درسی؟ یک کمی توضیح بده تا بببینم چه کمکی از دستم بر میاد.
 

JU JU

کاربر ممتاز
سلام، این چیه که گذاشتی؟ محاسبات مربوط به چه چیزی هستش؟ چه درسی؟ یک کمی توضیح بده تا بببینم چه کمکی از دستم بر میاد.

محاسبات مربوط به مرحله اول تبخیر کننده‌های چند جزئی می‌شه، بعد از این مرحله، به دو مرحله قبل برگشته و اونقد این مراحل تکرار می‌شه تا Vها و L های دقیقی بدست بیاد و بعد به بقیه حل مساله پرداخته

من برنامه رو توسط مطلب تا این مرحله نوشتم، تا اینجا
چون یه مدل 3 مرحله‌ای دارم، روی اون رفتم جلو، ولی برای پروژه باید N مرحله‌ای تحویل بدم

اگه مرحله اول که S داره رو در ابتدا رها کنیم و فرمول‌های بعدی رو حل کنیم، دو معادله دو مجهول رو میشه حل کرد ( توجه کنیم که مقادیر V رو که پایین نوشتم باید در اینجا جا گذاری کرد و بعد از بدست آوردن Lها، V رو بدست بیاریم )
خوب بعد از حل دو معادله دو مجهول از معادله اول S رو میشه بدست آورد و بعد V ها رو بدست میاریم

اگه بجای سه افکت چهار افکت داشتیم، یه معادله به صورت زیر اضاف میشه

L3.h3 + V3.landa3 = L4.h4 + V4.Hv4

حال اگه 5 افکت داشتیم، یه مرحله دیگه مثه این اضاف میشه

تو رو خدا بگین من چجوری این قسمت برنامه رو بنویسم توی مطلب، خیلی نیاز دارم :cry:
 

پیرجو

مدیر ارشد
محاسبات مربوط به مرحله اول تبخیر کننده‌های چند جزئی می‌شه، بعد از این مرحله، به دو مرحله قبل برگشته و اونقد این مراحل تکرار می‌شه تا Vها و L های دقیقی بدست بیاد و بعد به بقیه حل مساله پرداخته

من برنامه رو توسط مطلب تا این مرحله نوشتم، تا اینجا
چون یه مدل 3 مرحله‌ای دارم، روی اون رفتم جلو، ولی برای پروژه باید N مرحله‌ای تحویل بدم

اگه مرحله اول که S داره رو در ابتدا رها کنیم و فرمول‌های بعدی رو حل کنیم، دو معادله دو مجهول رو میشه حل کرد ( توجه کنیم که مقادیر V رو که پایین نوشتم باید در اینجا جا گذاری کرد و بعد از بدست آوردن Lها، V رو بدست بیاریم )
خوب بعد از حل دو معادله دو مجهول از معادله اول S رو میشه بدست آورد و بعد V ها رو بدست میاریم

اگه بجای سه افکت چهار افکت داشتیم، یه معادله به صورت زیر اضاف میشه

L3.h3 + V3.landa3 = L4.h4 + V4.Hv4

حال اگه 5 افکت داشتیم، یه مرحله دیگه مثه این اضاف میشه

تو رو خدا بگین من چجوری این قسمت برنامه رو بنویسم توی مطلب، خیلی نیاز دارم :cry:

الان توی این معادله مجهول ها کدوم ها هستن؟

L3.h3 + V3.landa3 = L4.h4 + V4.Hv4​
 

JU JU

کاربر ممتاز
الان توی این معادله مجهول ها کدوم ها هستن؟

L3.h3 + V3.landa3 = L4.h4 + V4.Hv4​

این معادله یه افکت اضافه شده به سوال قبله
توی هر تبخیر کننده چند مرحله‌ای، F و L در مرحله آخر مشخصه
V4 در اینجا برابره L3-L4
V3 در اینجا برابره L2-L3
V2 در اینجا برابره L1-L2
V1 در اینجا برابره F-L1

این معادله که نوشتی، چون مربوط به افکت 4 میشه و 3تا افکت دیگه هم هست که اون بالا نوشتم
معلومات کمی تغییر می‌کنه، L4 اینجا معلومه و بقیه Lها مجهول
هدف بدست آوردن L هستش

بهتره معادلات رو اینجوری بنویسم ( یعنی همشون رو بنویسم )

F.hf + S.landa s = L1.h4 + V1.Hv1
L1.h1 + V1.landa1= L2.h2 + V2.Hv2
L2.h2 + V2.landa2 = L3.h3 + V3.Hv3
L3.h3 + V3.landa3 = L4.h4 + V4.Hv4

هدف من اینه که برنامه رو ماتریس وار بنویسم و بتونم مراحلش رو زیاد و زیادتر کنم، به دلخواه باشه
Lها و V ها مجهولن
 

JU JU

کاربر ممتاز
اگر در آزمايشي غلظت هاي جزء A و B به صورت زير مشخص باشد،برنامه اي بنويسيد كه در آن M و K گزارش شود؟​
RUN 1
CA=1.5 2 2.1 2.17
CB= 5 5 5 5
T=0.1 0.2 0.3 0.4
RUN 2
CA= 4 4 4 4
CB= 1.3 1.35 1.4 1.42
T= 0.1 0.2 0.3 0.4
CB^n * CA^m * k =-dCA/dT=-rA
rA=-rB=-dCB/dT -

معادله سرعت واکنش در سینتیک واکنش، همین درس و گاهن شیمی فیزیک هم گفته می‌شه
خوب K تنها تابع دمای واکنش هستش، حال اون T که شما گذاشتین چیه ؟ منظورتون از run 1 & run 2 چیه ؟ یعنی اینکه در هر مرحله مقادیر n & m & k رو بدست بیاریم ؟ ( در هر run ) حال سوال من اینه، سرعت‌ها run یک و 2 با هم برابره ؟ سوالتون درسته ؟


شايد بگين جواب سوالم خيلي ساده است ولي خوب چيكارش كنم ERROR ميده!
برنامه اي بنويسيد كه سه عدد را دريافت كند و چاپ كند كه آيا اضلاع مثلث هستند يا خير ؟
لطفا با استفاده از دستورات INPUT و IF-ELSE و DISP آخه نميدونم با دستورهاي ديگه هم ميشه نوشت يا نه!
من ریاضیم خوب نیست :D شیوه بدست آوردن این سوال رو به صورت ریاضی برای من بنویسید، حلش رو برا شما می‌زارم
( تو یه کاغذ بنویسین، عکس بگیرین بزارینش اینجا )

موفق باشین
 
آخرین ویرایش:

sahand_nima

New member
سلام
خسته نباشيد دوستان عزيز
مي خواستم نمودار مثلثي رو كه واسه يه مخلوط سه جزئي بود رو تو MATLAB رسم كنم. از چه دستوري استفاده كنم؟
 

JU JU

کاربر ممتاز
سلام
خسته نباشيد دوستان عزيز
مي خواستم نمودار مثلثي رو كه واسه يه مخلوط سه جزئي بود رو تو MATLAB رسم كنم. از چه دستوري استفاده كنم؟

سلام
مرسی، شما نیز

خوب برا رسم گراف از دستور plot استفاده میشه، plot3 هم برای گراف سه بعدی

بخش‌ مربوط به رسم نمودارها رو توی مطلب بخونین کمکتون می‌کنه
 

khale rize

New member
سلام.مرسي از توجه شما(ju ju) !
t=زمان
با استفاده از run 1 و run 2 يك جواب براي n و m و k بايد بدست بياريم.
سوالم درسته.در مورد سرعت چيزي بهمون نگفتن.
در مورد مثلث بايد به اين صورت باشه چيز ديگه اي به ذهنم نمي رسه!:
a+b>c & a+c>b & b+c>a
 
بالا