作者ejialan (eji)
看板MATLAB
標題Re: [討論] 初學者 還不是很會寫積分程式
時間Tue May 1 12:29:14 2012
※ 引述《hsuanboy (壓力)》之銘言:
: 比如一個例子:
: 分子為:-3^X+4X+1由0積到theat角
: 分母為:-3^X+4X+1由0積到pi/3
: 上面的兩式相除會等於1/20
: 求theat角為多少
: 以下是我初試寫的 真的是剛學 還不是很懂 希望有好心的大大能幫忙
: syms x
: function g1=fun(x)
matlab 的m-file有兩種 一種是執行檔式的 可以直接按F5執行
效果相當於將指令逐行貼到Command Window執行
另一種是函數形式的 開頭必須是function [output]=fname(input)
檔名也必須存成fname(需要對應 ^^^^^)
以function 定義函數也只能出現在function型的m-file
這裡你要在執行式的m-file定義函數建議你使用匿名函數
g1=@(x) -3.^x+4*x+1
這裡我是照你上面的例子打 你下面似乎是想打-3*x.^2+4*x+1
: g1=-3(x).^2+4x+1;
: area1=quadl(@fun,0,1/3pi);
: function g2=fun(x)
: g2=-3(x).^2+4x+1;
: area2=quadl(@fun,0,theat);
: function y=fun(x);y=1/20
: y=area1/area2;
: pretty(y)
: 我這樣寫是哪邊有錯的呢
: 希望有大大能幫我更改的
: 謝謝阿!!
matlab積分可以用int和quad
int是做解析的積分 quad是做數值積分
你的分子積分上界含有變數 因此數值積分不適用
分母兩個都可以
然後分子/分母=1/20變成一個含有theat的方程式
要求解可以用solve
程式碼如下
syms theat
num=int('-3.^X+4*X+1',0,theat)
g2=@(x) -3.^x+4*x+1;
den=quad(g2,0,pi/3,eps)
% den=int('-3.^X+4*X+1',0,pi/3)
eq=num/den-1/20
theat=solve(eq)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.250.27.59
1F:推 vincent59:謝謝指教 05/01 14:36