1樓:風攪雪
對MATLAB來說第一題太難了點吧...
第二題倒是很方便:
f = @(x)1/(sin(x(1))^2*sin(x(2))^2*cos(x(2))^2)+1/(cos(x(1))^2)-9;
lsqnonlin(f,rand(1,2))結果:ans =
0.9541 0.7863
2樓:趙晨
MATLAB 的 Symbolic Math Toolbox 可以通過 solve 用解析方法解代數方程,不過如果條件是不定的,可能不容易快速得到結果。也可以用 vpasolve (我用的R2013a) 來用數值方法解,但沒用過不知道不定條件下如何。其實 MATLAB 最強大的就是數值計算,這類簡單問題可以用數值逼近方法來解決。
當然只是一種方法,也許不能得到解析結果,也許運氣不好遇到區域性極值啥的,權作參考。
對於這兩題,都可以將變數限定在某個範圍內,設定乙個精度,用數值模擬求得最小結果來解。
第二題相對簡單。
clear
;range=[
0:0.001:pi
/2];fora=
range
forb
=range
index_a
=find(a
==range
);index_b
=find(b
==range);c
(index_a
,index_b)=
1/(cos(a
) ^ 2)+
...1/(
sin(
a) ^ 2
*sin(b
) ^ 2
*cos(b
) ^ 2)-
9;endend
solution
=abs(c
);[y,
x]=find
(solution
==min
(min
(solution
)));
solution_a
=range(y
);solution_b
=range(x
);solution_nv=c
(y,x
);fprintf
('a = %8.5f\nb = %8.5f\nnearest equation value = %8.5f\n'
,...
radtodeg
(solution_a
),radtodeg
(solution_b
),solution_nv
);得到結果:a=
54.71747b=
44.97719
nearest
equation
value
=0.00001
第二題涉及到三角形三邊關係,某一邊的條件,以及變數範圍的問題,姑且假設三邊均不超過200,在粗糙的精度下運氣好也能得到正確答案:
clear
;range_a=[
1:1:
200];
range_b=[
1:1:
200];
range_c=[
13:1:
200];
fora
=range_a
forb
=range_b
forc
=range_c
index_a
=find(a
==range_a
);index_b
=find(b
==range_b
);index_c
=find(c
==range_c
);if
index_a
+index_b
>index_c
||...
index_a
+index_c
>index_b
||...
index_b
+index_c
>index_ad(
index_a
,index_b
,index_c)=
a ^ 2
+b ^ 2
+169
+...
sqrt(c
-13)-
24*a-
10*b;
elsed(
index_a
,index_b
,index_c)=
10000
;end
endend
endsolution
=abs(d
);[z,
y,x]
=find
(solution
==min
(min
(min
(solution
))));
solution_a
=range_a(z
);solution_b
=range_b(y
);solution_c
=range_c(x
);solution_nv=d
(z,y
,x);fprintf
(['a = %8.5f\nb = %8.5f\nc = %8.5f\n'
...'nearest equation value = %8.5f\n'
],...
solution_a
,solution_b
,solution_c
,solution_nv
);得到結果:a=
12b=5
c=13nearest
equation
value=0
原來恰巧就是直角三角形。
3樓:章佳傑
我不知道 maple 怎麼算,mathematica 是可以算的。
第乙個問題:
Solve[, ]
能得出正確答案
第二個問題:
Solve[, ]
也能得出正確答案(你應該能看出這個形式和原問題是什麼關係吧?)既然你會手算,答案我就不貼了。另外……雖然題主說不是作業題,但是這種湊得很好的題目很難讓人相信不是作業題。
Mathematica或matlab怎麼求解含有復變數的方程?
這題其實有解析解 一般常規的代數方程用一些cas計算器模擬器更方便,比如Ti nspire cas的模擬器。使用csolve函式即可求解。其中 特別的,如果 紐澤西管風琴 Solve 0.1 2 Im Sqrt 10.9 I x x Reals,x 將常數改為精確的數就可以得到解析解。Solve 1...
MATLAB或excel解方程?
jaffedream 這是一元高次方程,很好解的。說種最簡單的。B1 SUMPRODUCT 93.59 1 A1 ROW 1 12 單變數求解。目標單元格是B1,結果是1000,變數是A1。結果就出來咯。 看你的式子,應該是想求內部收益率 Internal rate of return 吧?使用MA...
Matlab矩陣或公式很長,有辦法換行嗎?
易夕 三連點 省略號 表示續行。當一行內語句太長,可以使用三個點.表示續行,另起一行。y 1234567 2345671 3456712.4567123 5671234 6712345.7123456 2345678 3456789 上式若寫成一行會很長,續行後更直觀。使用.的另乙個好處就是可以方便...