重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

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

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

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

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

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

A 回答 (3件)

こんな感じ?


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)];
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2011/11/11 16:25

#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
    • good
    • 0

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



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% …
    • good
    • 0
この回答へのお礼

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

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

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

お礼日時:2011/11/11 16:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!