Maple或Matlab怎麼解不定方程?

時間 2021-05-31 08:27:39

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 上式若寫成一行會很長,續行後更直觀。使用.的另乙個好處就是可以方便...