こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MATLABで指数関数を含む方程式の複素数解を求め

MATLABで多項式と指数関数からなる方程式の解を求めたいと考えています。
実数解だけでなく、複素数解も求める必要があります。

例えば、
x^2-exp(x)=0
のような方程式を解きたい場合、
fzero(@(x)(x^2-exp(x)),2)
を実行すれば、-0.7035という実数解が得られます。
しかし、複素数解は得られません。
なんとかして、複素数解も得られませんか?

roots()関数を使えば、多項式からなる方程式に対しては、
複素数解を求めることができます。
しかし、今回の場合は使えません。

指数関数をテーラー展開する方法を考えたのですが、
解がどのあたりにあるのか見当がつかないので、
どの点周りにテーラー展開すれば良いのか分かりません。

最終的には、制御工学で遅れ型むだ時間を含むシステムの極を調べたいのですが、
特性方程式に指数関数が入ってくるので、どうやって求めれば良いのか分からずにいます。

どなたか、知恵を貸して頂けないでしょうか。
よろしくお願い致します。

投稿日時 - 2011-11-10 16:50:17

QNo.7125013

困ってます

質問者が選んだベストアンサー

こんな感じ?
Matlab 手元に無いんで未確認です。
_はスペースね。
初期値によっては収束しませわんが・・・

ini=[
1_1
1_-1
-1_1
-1_-1
];
x = fsolve(@hoge, ini);
xx = complex(x(1:end,1),x(1:end,2))

function y = hoge(x)
compx = complex(x(1:end,1), x(1:end,2));
compy = compx.^2-exp(x);
y = [real(compy) imag(compy)];

投稿日時 - 2011-11-11 13:51:57

お礼

回答ありがとうございます。

fsolveを使用するには、Optimization Toolboxが必要なようですね。
なんとか、Optimization Toolboxが入っているPCを探してみることにします。

特別なToolboxが不要な方法は、やはりありませんか?
自分でプログラムを書くか、
csolveなどのフリーの関数を拝借するしかありませんか?

投稿日時 - 2011-11-11 16:25:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

#1です.

数値計算のソフトではありませんが,私が時々使う強力な数式処理ソフトを,何かのお役に立つかも知れませんので,貼り付けておきます.

Risa/Asir (リサ/アジール 数式処理ソフト)
http://www.math.kobe-u.ac.jp/Asir/asir-ja.html

/pub/asir のインデックス
ftp://ftp.math.kobe-u.ac.jp/pub/asir

投稿日時 - 2011-11-11 19:10:52

ANo.1

以下のサイトを使ってみて下さい.

x^2-exp(x)=0 を入力して,〓 を押すと解が表示されます.

Wolfram|Alpha Computational Knowledge Engine
http://www.wolframalpha.com/

x^2-exp(x)=0 の解は,ランベルトのW関数で表示されます.
ランベルトのW関数は,下記のサイトをご参照下さい.

ランベルトのW関数
http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%99%E3%83%AB%E3%83%88%E3%81%AEW%E9%96%A2%E6%95%B0

投稿日時 - 2011-11-10 19:19:23

お礼

回答ありがとうございます。

私が適当に出した例が、解析的にとけるなんて驚きました。
簡単な方程式ならそのようなサイトで解を求めることができるんですね。

しかし、ゆくゆくは、もっと複雑な非線形の連立方程式を解きたいので、
解析的には解けなくなるかもしれません。
なので、数値計算で求められる方法もご存知であれば、ぜひご教示ください。

投稿日時 - 2011-11-11 16:15:43

あなたにオススメの質問