![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e3b2dd4)
No.3ベストアンサー
- 回答日時:
A No.1のKulesです。
>fsolveという関数があり、1変数の非線形方程式の解で、与えられた初期値に最も近い解を導出してくれます。
調べてみたらfsolveはoptimization toolboxを持ってないと使えないみたいですね。
私は持ってないので使えないです(笑)
1変数ならfzeroとかいう関数もあるみたいなんですけどね…
>ニュートン法は2次のテイラー展開を行って連立方程式を作り解く方法ですよね?
あれ…私の理解ではニュートン法は1次のテイラー展開
(って言うのかな?1次導関数までしか使わないやつです)
で片付けるやつだったと思うのですが…
↑あまりこの辺の難しい数学は知らないのです。
また、使うのも全微分ではなく偏微分なのでそんなに項が爆発的に増えることはないと
思うのですが。ああ、積の導関数だと積の数だけ増えますね
(f=suv(s,u,vはxの関数)となっていた場合、f'の項は3つになりますね)
ただ、ネットで検索していく中のどっかのページに微分出来ない関数
(微分がメンドクサイ関数でもいいと思います)を
df/dx=(f(x+h)-f(x))/h
で解くケースが見られましたので、偏微分に関しても先の例でいけば、
f1(a,b)をx1で微分したものにx1=a,x2=bを代入したものd/dx1(f1(a,b))を
d/dx1(f1(a,b))=(f1(a+h,b)-f1(a,b))/h
として解いても良さそうです。
ということは、f1,f2に当たる関数をMatlab内で作っておけば、ヤコビ行列
[df1/dx1,df1/dx2;df2/dx1,df2/dx2]
は
[(f1(a+h,b)-f1(a,b))/h,(f1(a,b+h)-f1(a,b))/h;(f2(a+h,b)-f2(a,b))/h,(f2(a,b+h)-f2(a,b))/h]
とできるので、そこまで複雑にはならなさそうですね。
hは1e-4でも何でも小さい数を適当に与えればよいと思います。
というかここまでニュートン法でつっぱらずに他の方法探れよって言われそうですが、
上にも書いたようにMatlabは触っているもののそこまで数学(特に大学以降の)には
詳しくないので…
参考になれば幸いです。
No.2
- 回答日時:
MATLAB は使ったことないので知りませんが, 検索したところによると
fsolve で多変数の方程式が解ける
ように読める.
万一 Optimization Toolbox がなくても, 検索すれば何とかなりそう.
参考URL:http://www.mathworks.com/help/ja_JP/toolbox/opti …
No.1
- 回答日時:
どんな数式なのかによってテクニックがあったりなかったりするかと思うんですが。
とりあえず泥臭い方法を書いてみます。
(Matlabにこの辺を扱える関数があったような気がしますが、私は使ったことないです)
ニュートン-ラフソン法を多変数に拡張してやれば解けるんじゃないかと思います。
1変数の時と変わるのは
・微分ではなく偏微分を使う
・割り算が行列の割り算(逆行列を掛ける)になる
ぐらいでしょうか。
4変数は書いてられないので、2変数で。
f1(x1,x2)=0、f2(x1,x2)=0を解くことを考えます。
適当な初期値a,bとして、それと解とのずれをΔx1、Δx2とします。
f1(a+Δx1,b+Δx2)=0、f2(a+Δx1,b+Δx2)=0
となればよいのですが、テイラー展開(だったかな?df1/dx1はf1をx1で微分することを表します)を
使って展開し、高次の微分の項を無視すれば
f1(a+Δx1,b+Δx2)=f1(a,b)+(df1/dx1)(Δx1)+(df1/dx2)(Δx2)
f2(a+Δx1,b+Δx2)=f2(a,b)+(df2/dx1)(Δx1)+(df2/dx2)(Δx2)
となります。
左辺=0として、右辺を行列の形で書くと上式は
[f1(a,b);f2(a,b)]+[df1/dx1,df1/dx2;df2/dx1,df2/dx2]*[Δx1;Δx2]=0
となるので、ここからΔ=[Δx1;Δx2]を求めることができます。
あとはa=a+Δx1、b=b+Δx2としてa,bの初期値を更新し、これを繰り返せば
初期値がいいところにあれば解は収束します。うまくいかなければ発散します。
変数が4つになってもやることは同じです。
Matlabでどう組むかは人によってそれぞれですね。ベタに書くならforループ1つで書けますが、
少しでも楽したいなら最低限f1,f2の関数は作った方がいいでしょう。
私なら関数f1(x1,x2),f2(x1,x2),df11(x1,x2),df12(x1,x2),df21(x1,x2),df22(x1,x2)
を作るかな。あるいはニュートン-ラフソン法以外の方法を探すかも知れません。
他になさそうならあきらめてこれでやるかと。
参考になれば幸いです。
この回答への補足
補足:
>-(Matlabにこの辺を扱える関数があったような気がしますが、私は使ったことないです)
fsolveという関数があり、1変数の非線形方程式の解で、与えられた初期値に最も近い解を導出してくれます。
丁寧な回答ありがとうございました。
ニュートン法自体はしっているのですが、4変数となると・・・「???」って感じです(汗)
ニュートン法は2次のテイラー展開を行って連立方程式を作り解く方法ですよね?
ニュートン法を4変数に拡張するためには、4変数のテイラー展開を求める必要があるかと思います。
頑張れば導出できるかもしれませんが(自信は全くないですが・・・;ω;)、複雑で長い計算式のためできれば微分をしない方法はないでしょうか?
この方法だと、100~200項くらいは出てきそうなので・・・・。
丁寧なご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) F-BASICで計算中の実行が中途で勝手に止まり、大変困っています。 2 2023/03/02 16:15
- 数学 情報処理詳しい人!! A4縦のレポート文書に4:3の大きさの横向きの写真画像を貼り付けることにした。 2 2022/12/18 02:30
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 電気工事士 6.6kVケーブル単芯325sq-1.5kmの遮蔽銅テープ抵抗値は何Ω? 1 2023/05/02 21:06
- その他(プログラミング・Web制作) VBA 1 2023/01/19 16:19
- 化学 化学のエンタルピ変化を求め方について ある例題では各物質のモール数を換算して計算することもあり、ある 1 2022/06/20 23:22
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- C言語・C++・C# numpyスライス機能を使った数値計算 2 2023/05/08 16:01
- 数学 数学の問題の解説お願いします! 4 2022/08/28 05:22
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
検索結果の指定列をリストボッ...
-
二点の座標から距離や角度を求...
-
texで図と表を並べたい
-
変数の宣言はすべきでしょうか...
-
共有フォルダの「共有のアクセ...
-
ExcelVBAで他のファイル(proje...
-
C#のループでtextboxに値を入れ...
-
Excel VBAでsub,dimは何の略?
-
TextBoxの内容を右寄せ
-
テキストボックスを空白にする方法
-
Excel VBA: private sub 内の...
-
アクセスできない保護レベルエ...
-
VB6でマウスのドラッグで範囲を...
-
VBA public変数はどのようなこ...
-
PL/SQLのプロシージャ間でカー...
-
VBAでcallで呼び出したsubを終...
-
他のフォームから別のフォーム...
-
GetNextWindowがDLLファイルUse...
-
VS CodeでTEXファイルにPDF形式...
-
VBAのユーザーフォームで、テキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
ドラゴン曲線を再帰で書く
-
VC++ (byte)(col & 0xFF) の意味
-
カラーの16進表記の足し算
-
C言語で非線形方程式を解くプロ...
-
VB.NET)コンボボックスの連動に...
-
エクセル ユーザーフォーム ...
-
テキストファイルの読み込みと...
-
エクセルのVBAでの7×7の魔方陣...
-
ExcelVBA初歩的な質問
-
for文の質問です。
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
エクセルVBAでテキストボッ...
-
VB.NETでのイベントの途中終了
-
アクセスできない保護レベルエ...
-
チェックボックスを操作できな...
-
C#のループでtextboxに値を入れ...
-
VBAでcallで呼び出したsubを終...
-
VBAで入力数値について
おすすめ情報